Results 1 - 10
of
42
Preliminary design of JML: A behavioral interface specification language for Java
, 1998
"... JML is a behavioral interface specification language tailored to Java(TM). Besides pre- and postconditions, it also allows assertions to be intermixed with Java code; these aid verification and debugging. JML is designed to be used by working software engineers; to do this it follows Eiffel in using ..."
Abstract
-
Cited by 352 (31 self)
- Add to MetaCart
JML is a behavioral interface specification language tailored to Java(TM). Besides pre- and postconditions, it also allows assertions to be intermixed with Java code; these aid verification and debugging. JML is designed to be used by working software engineers; to do this it follows Eiffel in using Java expressions in assertions. JML combines this idea from Eiffel with the model-based approach to specifications, typified by VDM and Larch, which results in greater expressiveness. Other expressiveness advantages over Eiffel include quantifiers, specification-only variables, and frame conditions. This paper discusses the goals of JML, the overall approach, and describes the basic features of the language through examples. It is intended for readers who have some familiarity with both Java and behavioral specification using pre- and postconditions. Copyright c ○ 1998-2005 Iowa State University This paper is part of JML and is distributed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. 1
Obtaining a COBOL Grammar from Legacy Code for Reengineering Purposes
, 1997
"... We argue that maintenance and reengineering tools need to have a thorough knowledge of the language that the code is written in. More specifically, for the family of COBOL languages we present a general method to define COBOL dialects that are based on the actual code that has to be reengineered or ..."
Abstract
-
Cited by 27 (16 self)
- Add to MetaCart
We argue that maintenance and reengineering tools need to have a thorough knowledge of the language that the code is written in. More specifically, for the family of COBOL languages we present a general method to define COBOL dialects that are based on the actual code that has to be reengineered or maintained. Subsequently, we give some typical examples of maintenance and reengineering tools that have been specified on top of such a COBOL grammar in order to show that our approach is useful and leads to accurate and relatively simple maintenance and reengineering tools. Categories and Subject Description: D.2.6 [Software Engineering]: Programming Environments---Interactive; D.2.7 [Software Engineering]: Distribution and Maintenance ---Restructuring; D.2.m [Software Engineering]: Miscellaneous---Rapid prototyping Additional Key Words and Phrases: Reengineering, System renovation, COBOL 1 Introduction There is a constant need for updating and renovating business-critical software sys...
A Provably Correct Compiler Generator
, 1992
"... We have designed, implemented, and proved the correctness of a compiler generator that accepts action semantic descriptions of imperative programming languages. The generated compilers emit absolute code for an abstract RISC machine language that currently is assembled into code for the SPARC and th ..."
Abstract
-
Cited by 26 (2 self)
- Add to MetaCart
We have designed, implemented, and proved the correctness of a compiler generator that accepts action semantic descriptions of imperative programming languages. The generated compilers emit absolute code for an abstract RISC machine language that currently is assembled into code for the SPARC and the HP Precision Architecture. Our machine language needs no run-time type-checking and is thus more realistic than those considered in previous compiler proofs. We use solely algebraic specifications; proofs are given in the initial model. 1 Introduction The previous approaches to proving correctness of compilers for non-trivial languages all use target code with run-time type-checking. The following semantic rule is typical for these target languages: (FIRST : C; hv 1 ; v 2 i : S) ! (C; v 1 : S) The rule describes the semantics of an instruction that extracts the first component of the top-element of the stack, provided that the top-element is a pair. If not, then it is implicit that the...
Generating Action Compilers by Partial Evaluation
- Journal of Functional Programming
, 1996
"... Compiler generation based on Mosses' action semantics has been studied by Brown, Moura, and Watt, and also by the second author. The core of each of their systems is a handwritten action compiler, producing either C or machine code. We have obtained an action compiler in a much simpler way: by parti ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
Compiler generation based on Mosses' action semantics has been studied by Brown, Moura, and Watt, and also by the second author. The core of each of their systems is a handwritten action compiler, producing either C or machine code. We have obtained an action compiler in a much simpler way: by partial evaluation of an action interpreter. Even though our compiler produces Scheme code, the code runs as fast as that produced by the previous action compilers. 1 Introduction Action semantics is a framework for formal semantics of programming languages, developed by Mosses [16, 17, 18] and Watt [19, 26]. It differs from denotational semantics in using semantic entities called actions, rather than higher-order functions. Compiler generation based on action semantics has been studied by Brown, Moura, and Watt [6], and also by the second author [22, 20, 21]. Journal of Functional Programming, 6(2):269--298, 1996. Also in Proc. FPCA'93, pages 308--317. The core of each of their two action se...
An Automatically Generated and Provably Correct Compiler for a Subset of Ada
- In IEEE International Conference on Computer Languages
, 1992
"... We describe the automatic generation of a provably correct compiler for a non-trivial subset of Ada. The compiler is generated from an action semantic description; it emits absolute code for an abstract RISC machine language that currently is assembled into code for the SPARC and the HP Precision Ar ..."
Abstract
-
Cited by 11 (2 self)
- Add to MetaCart
We describe the automatic generation of a provably correct compiler for a non-trivial subset of Ada. The compiler is generated from an action semantic description; it emits absolute code for an abstract RISC machine language that currently is assembled into code for the SPARC and the HP Precision Architecture. The generated code is an order of magnitude better than what is produced by compilers generated by the classical systems of Mosses, Paulson, and Wand. The use of action semantics makes the processable language specification easy to read and pleasant to work with. In Proc. ICCL'92, Fourth IEEE International Conference on Computer Languages, pages 117--126. 1 Introduction The purpose of a language designer's workbench, envisioned by Pleban, is to drastically improve the language design process. The major components in such a workbench are: ffl A specification language whose specifications are easily maintainable, and accessible without knowledge of the underlying theory; and f...
Programming Language Semantics
- In CRC Handbook of Computer Science
, 1995
"... interpretation provides the theory that allows a compiler writer to prove the correctness of compilers. Finally, axiomatic semantics is a long-standing fundamental technique for validating the correctness of computer code. Recent emphasis on large-scale and safety-critical systems has again placed t ..."
Abstract
-
Cited by 11 (0 self)
- Add to MetaCart
interpretation provides the theory that allows a compiler writer to prove the correctness of compilers. Finally, axiomatic semantics is a long-standing fundamental technique for validating the correctness of computer code. Recent emphasis on large-scale and safety-critical systems has again placed the spotlight on this technique. Current research on data type theory [5] suggests that a marriage between the techniques of data-type checking and axiomatic semantics is not far in the future. 4 Research Issues in Semantics The techniques in this chapter have proved highly successful for defining, improving, and implementing traditional, sequential programming languages. But new language paradigms present new challenges to the semantics methods. In the functional programming paradigm, a higher-order functional language can use functions as arguments to other functions. This makes the language's domains more complex than those in Figure 2. Denotational semantics can be used to understand the...
A Language for Specifying Java Transformations
- In V Brazilian Symposium on Programming Languages
, 2001
"... In this paper we present JaTS, a language for specifying transformations for Java programs. The main feature of the language is the similarity of its syntax to the syntax of Java, decreasing the semantic gap between the transformation language and the language being transformed. This feature helps d ..."
Abstract
-
Cited by 9 (2 self)
- Add to MetaCart
In this paper we present JaTS, a language for specifying transformations for Java programs. The main feature of the language is the similarity of its syntax to the syntax of Java, decreasing the semantic gap between the transformation language and the language being transformed. This feature helps developers already used to the syntax of Java to quickly adapt to the syntax of JaTS. We begin by presenting the syntax and informal semantics of JaTS, specifying some key aspects of the semantics formally. Next, we evaluate the expressive power of the language, comparing it with other languages for specifying program transformations. Resumo Neste trabalho ns apresentamos JaTS, uma linguagem para especificar transformaes para programas escritos em Java. A principal caracterstica dessa linguagem a proximidade da sua sintaxe com a de Java, diminuindo o gap semntico entre a linguagem de transformao e a linguagem transformada. Essa caracterstica proporciona a desenvolvedores j habituados com a sintaxe de Java uma rpida adaptao sintaxe de JaTS. Comeamos apresentando a sintaxe e a semntica informal de JaTS, especificando alguns aspectos chave dessa semntica formalmente. Em seguida, avaliamos o poder expressivo da linguagem, comparando-a com outras linguagens para especificar transformaes. 1.
A Modular SOS for ML Concurrency Primitives
- DEPT. OF COMPUTER SCIENCE, UNIV. OF AARHUS
, 1999
"... Modularity is an important pragmatic aspect of semantic descriptions. In denotational semantics, the issue of modularity has received much attention, and appropriate abstractions have been introduced, so that definitions of semantic functions may be independent of the details of how computations are ..."
Abstract
-
Cited by 9 (7 self)
- Add to MetaCart
Modularity is an important pragmatic aspect of semantic descriptions. In denotational semantics, the issue of modularity has received much attention, and appropriate abstractions have been introduced, so that definitions of semantic functions may be independent of the details of how computations are modelled. In structural operational semantics (SOS), however, this issue has largely been neglected, and SOS descriptions of programming languages typically exhibit rather poor modularity -- for instance, extending the described language may entail a complete reformulation of the description of the original constructs. A propos

