Results 1 - 10
of
16
Semantics of Programming Languages: A Tool-Oriented Approach
- ACM SIGPLAN Notices
, 1999
"... By paying more attention to semantics-based tool generation, programming language semantics can significantly increase its impact. Ultimately, this may lead to "Language Design Assistants" incorporating substantial amounts of semantic knowledge. 1991 ACM Computing Classification System: D.2.2, D. ..."
Abstract
-
Cited by 30 (5 self)
- Add to MetaCart
By paying more attention to semantics-based tool generation, programming language semantics can significantly increase its impact. Ultimately, this may lead to "Language Design Assistants" incorporating substantial amounts of semantic knowledge. 1991 ACM Computing Classification System: D.2.2, D.3.1, D.3.4, F.3.2 Keywords and Phrases: semantics of programming languages, tool generation, language development system, language design assistant, domain-specific language, compiler toolkit, software renovation tool Note: Submitted to ACM SIGPLAN Notices. This research was supported in part by the Telematica Instituut under the Domain-Specific Languages project. 1 The Role of Programming Language Semantics Programming language semantics has lost touch with large groups of potential users [39]. Among the reasons for this unfortunate state of a#airs, one stands out. Semantic results are rarely incorporated in practical systems that would help language designers to implement and test a ...
Re-engineering needs Generic Programming Language Technology
- ACM SIGPLAN NOTICES
"... Generic language technology and compiler construction techniques are a prerequisite to build analysis and conversion tools that are needed for the re-engineering of large software systems. We argue that generic language technology is a crucial means to do fundamental re-engineering. Furthermore, we ..."
Abstract
-
Cited by 29 (14 self)
- Add to MetaCart
Generic language technology and compiler construction techniques are a prerequisite to build analysis and conversion tools that are needed for the re-engineering of large software systems. We argue that generic language technology is a crucial means to do fundamental re-engineering. Furthermore, we address the issue that the application of compiler construction techniques in re-engineering generates new research questions in the field of compiler construction.
Semantics-Preserving Procedure Extraction
- In POPL
, 2000
"... Procedure extraction is an important program transformation that can be used to make programs easier to understand and maintain, to facilitate code reuse, and to convert \monolithic " code to modular or object-oriented code. Procedure extraction involves the following steps: 1. The statements to be ..."
Abstract
-
Cited by 26 (3 self)
- Add to MetaCart
Procedure extraction is an important program transformation that can be used to make programs easier to understand and maintain, to facilitate code reuse, and to convert \monolithic " code to modular or object-oriented code. Procedure extraction involves the following steps: 1. The statements to be extracted are identied (by the programmer or by a programming tool). 2. If the statements are not contiguous, they are moved together so that they form a sequence that can be extracted into a procedure, and so that the semantics of the original code is preserved. 3. The statements are extracted into a new procedure, and are replaced with an appropriate call. This paper addresses step 2: in particular, the conditions under which it is possible to move a set of selected statements together so that they become \extractable", while preserving semantics. Since semantic equivalence is, in general, undecidable, we identify sucient conditions based on control and data dependences, and dene an ...
A slicing-based approach for locating type errors
- ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY
, 1997
"... ..."
Automatic Validation of Code-Improving Transformations
- In Proceedings of the ACM SIGPLAN Workshop on Language, Compilers, and Tools for Embedded Systems
, 2000
"... Programmers of embedded systems often develop software in assembly code due to inadequate support from compilers and the need to meet critical speed and/or space constraints. Many embedded applications are being used as a component of an increasing number of critical systems. While achieving high pe ..."
Abstract
-
Cited by 8 (5 self)
- Add to MetaCart
Programmers of embedded systems often develop software in assembly code due to inadequate support from compilers and the need to meet critical speed and/or space constraints. Many embedded applications are being used as a component of an increasing number of critical systems. While achieving high performance for these systems is important, ensuring that these systems execute correctly is vital. One portion of this process is to ensure that code-improving transformations applied to a program will not change the program's semantic behavior, which is jeopardized when transformations are specified manually. This paper describes a general approach for validation of many low-level code-improving transformations made either by a compiler or specified by hand. Initially, we associate a region of the program representation with a code-improving transformation. Afterwards, we calculate the region's effects on the rest of the program before and after the transformation. The transformation is cons...
CEAL: a C-based language for self-adjusting computation
- In ACM SIGPLAN Conference on Programming Language Design and Implementation
, 2009
"... Self-adjusting computation offers a language-centric approach to writing programs that can automatically respond to modifications to their data (e.g., inputs). Except for several domain-specific implementations, however, all previous implementations of self-adjusting computation assume mostly functi ..."
Abstract
-
Cited by 8 (4 self)
- Add to MetaCart
Self-adjusting computation offers a language-centric approach to writing programs that can automatically respond to modifications to their data (e.g., inputs). Except for several domain-specific implementations, however, all previous implementations of self-adjusting computation assume mostly functional, higher-order languages such as Standard ML. Prior to this work, it was not known if self-adjusting computation can be made to work with low-level, imperative languages such as C without placing undue burden on the programmer. We describe the design and implementation of CEAL: a C-based language for self-adjusting computation. The language is fully general and extends C with a small number of primitives to enable writing self-adjusting programs in a style similar to conventional C programs. We present efficient compilation techniques for translating CEAL programs into C that can be compiled with existing C compilers using primitives supplied by a run-time library for self-adjusting computation. We implement the proposed compiler and evaluate its effectiveness. Our experiments show that CEAL is effective in practice: compiled self-adjusting programs respond to small modifications to their data by orders of magnitude faster than recomputing from scratch while slowing down a from-scratch run by a moderate constant factor. Compared to previous work, we
Equations as a Uniform Framework for Partial Evaluation and Abstract Interpretation
- Electronic supplement: 1998 Symposium on Partial Evaluation (SOPE '98
, 1997
"... Interpretation J. Field IBM T. J. Watson Research Center P.O. Box 704, Yorktown Heights, NY 10598, USA J. Heering, T.B. Dinesh CWI P.O. Box 94079, 1090 GB Amsterdam, The Netherlands ABSTRACT A variety of disparate methods have traditionally been used to define the execution semantics of prog ..."
Abstract
-
Cited by 5 (3 self)
- Add to MetaCart
Interpretation J. Field IBM T. J. Watson Research Center P.O. Box 704, Yorktown Heights, NY 10598, USA J. Heering, T.B. Dinesh CWI P.O. Box 94079, 1090 GB Amsterdam, The Netherlands ABSTRACT A variety of disparate methods have traditionally been used to define the execution semantics of programming languages, to describe partial evaluation, to formalize program analysis as abstract interpretation, and to implement each of these operations in practical systems. We argue here that equational logic can serve to unify each of these aspects of language manipulation. 1991 Computing Reviews Classification: D.3.4, F.3.2 Keywords and Phrases: equational logic, algebraic specification, program analysis, partial evaluation, abstract interpretation Note: Submitted to the SOPE'98, special issue of the ACM Computer Surveys. This research was supported in part by the Netherlands Organization for Scientific Research (NWO) under the Generic Tools for Program Analysis and Optimization p...
A case-study of a slicing-based approach for locating type errors
- IN PROCEEDINGS OF THE 2ND INTERNATIONAL WORKSHOP ON THE THEORY AND PRACTICE OF ALGEBRAIC SPECIFICATIONS (ASF+SDF'97
, 1997
"... ..."
A Formal Model of Real-Time Program Compilation
- Theoretical Computer Science
, 2000
"... s and compressed postscript files are available via http://svrc.it.uq.edu.au A Formal Model of Real-Time Program Compilation Karl Lermer and Colin Fidge Software Verification Research Centre, The University of Queensland, Queensland 4072, Australia. Abstract Program compilation can be forma ..."
Abstract
-
Cited by 3 (2 self)
- Add to MetaCart
s and compressed postscript files are available via http://svrc.it.uq.edu.au A Formal Model of Real-Time Program Compilation Karl Lermer and Colin Fidge Software Verification Research Centre, The University of Queensland, Queensland 4072, Australia. Abstract Program compilation can be formally defined as a sequence of equivalence-preserving transformations, or refinements, from high-level language programs to assembler code. Recent models also incorporate timing properties, but the resulting formalisms are intimidatingly complex. Here we take advantage of a new, simple model of realtime refinement, based on predicate transformer semantics, to present a straightforward compilation formalism that incorporates real-time constraints. Key words: Refinement calculus; Program compilation; Program semantics; Real-time programming; Program verification 1 Introduction Compiler correctness is a significant concern for developers of safety-critical systems. However, verifying an indus...
Concise concrete syntax
, 2008
"... We introduce a notion of ordered context-free grammars (OCFGs) with datatype tags to concisely specify grammars of programming languages. Our work is an extension of syntax definition formalism (SDF) and concrete datatypes that automate scanning, parsing, and syntax tree construction. But OCFGs also ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We introduce a notion of ordered context-free grammars (OCFGs) with datatype tags to concisely specify grammars of programming languages. Our work is an extension of syntax definition formalism (SDF) and concrete datatypes that automate scanning, parsing, and syntax tree construction. But OCFGs also capture associativity and precedence at the level of production rules instead of lexical tokens such that a concrete syntax grammar is succinct enough be an abstract syntax definition. By expanding and re-indexing grammar symbols, OCFGs can be translated to grammars for standard lex and yacc such that existing and efficient parsing infrastructures can be reused. We have implemented a Java 5 compiler frontend with OCFGs. The complete grammar for such a realistic language fits comfortably in two pages of this paper, showing the practicality of our formalism. 1

