Results 1 - 10
of
18
The Syntax Definition Formalism SDF - Reference Manual
, 2001
"... SDF is a formalism for the definition of syntax which is comparable to BNF in some respect, but has a wider scope in that it also covers the definition... ..."
Abstract
-
Cited by 132 (23 self)
- Add to MetaCart
SDF is a formalism for the definition of syntax which is comparable to BNF in some respect, but has a wider scope in that it also covers the definition...
The origins of structural operational semantics
- Journal of Logic and Algebraic Programming
, 2004
"... We review the origins of structural operational semantics. The main publication ‘A Structural Approach to Operational Semantics, ’ also known as the ‘Aarhus Notes, ’ appeared in 1981 [G.D. Plotkin, A structural approach to operational semantics, DAIMI FN-19, Computer Science Department, Aarhus Unive ..."
Abstract
-
Cited by 57 (0 self)
- Add to MetaCart
We review the origins of structural operational semantics. The main publication ‘A Structural Approach to Operational Semantics, ’ also known as the ‘Aarhus Notes, ’ appeared in 1981 [G.D. Plotkin, A structural approach to operational semantics, DAIMI FN-19, Computer Science Department, Aarhus University, 1981]. The development of the ideas dates back to the early 1970s, involving many people and building on previous work on programming languages and logic. The former included abstract syntax, the SECD machine, and the abstract interpreting machines of the Vienna school; the latter included the λ-calculus and formal systems. The initial development of structural operational semantics was for simple functional languages, more or less variations of the λ-calculus; after that the ideas were gradually extended to include languages with parallel features, such as Milner’s CCS. This experience set the ground for a more systematic exposition, the subject of an invited course of lectures at Aarhus University; some of these appeared in print as the 1981 Notes. We discuss the content of these lectures and some related considerations such as ‘small state’ versus ‘grand state, ’ structural versus compositional semantics, the influence of the Scott–Strachey approach to denotational semantics, the treatment of recursion and jumps, and static semantics. We next discuss relations with other work and some immediate further development. We conclude with an account of an old, previously unpublished, idea: an alternative, perhaps more readable, graphical presentation of systems of rules for operational semantics.
A Compiler for Natural Semantics
- 6TH INTERNATIONAL CONFERENCE ON COMPILER CONSTRUCTION, CC'96, LINKÖPING
, 1996
"... Natural semantics is a formalism used for specifying both semantics and implementations of programming languages. Until recently, no practical implementation of the formalism existed. We have defined the Relational Meta-Language, RML, as an executable specification language for natural semantics. Af ..."
Abstract
-
Cited by 27 (2 self)
- Add to MetaCart
Natural semantics is a formalism used for specifying both semantics and implementations of programming languages. Until recently, no practical implementation of the formalism existed. We have defined the Relational Meta-Language, RML, as an executable specification language for natural semantics. After a brief outline of the language, we describe the compilation strategy used by our rml2c compiler: transformations are applied to minimize non-determinism, and a continuation-passing style form is produced and simplified. Finally the CPS is emitted as low-level C code, using an efficient technique for implementing tailcalls. We also present performance measurements that support our choice of compilation strategy.
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...
Executable Structural Operational Semantics in Maude
, 2003
"... This paper describes in detail how to bridge the gap between theory and practice when implementing in Maude structural operational semantics described in rewriting logic, where transitions become rewrites and inference rules become conditional rewrite rules with rewrites in the conditions, as mad ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
This paper describes in detail how to bridge the gap between theory and practice when implementing in Maude structural operational semantics described in rewriting logic, where transitions become rewrites and inference rules become conditional rewrite rules with rewrites in the conditions, as made possible by the new features in Maude 2.0. We validate this technique using it in several case studies: a functional language Fpl (evaluation and computation semantics, including an abstract machine), imperative languages WhileL (evaluation and computation semantics) and GuardL with nondeterminism (computation semantics), Kahn's functional language Mini-ML (evaluation or natural semantics), Milner's CCS (with strong and weak transitions), and Full LOTOS (including ACT ONE data type specifications). In addition, on top of CCS we develop an implementation of the Hennessy-Milner modal logic for describing local capabilities of processes, and for LOTOS we build an entire tool where Full LOTOS specifications can be entered and executed (without user knowledge of the underlying implementation of the semantics). We also compare this method based on transitions as rewrites with another one based on transitions as judgements.
Occurrences in Debugger Specifications
- In Proceedings of the ACM SIGPLAN'91 Conference on Programming Language Design and Implementation
, 1991
"... We describe formal manipulations of programming language semantics that permit execution animation for interpreters. We first study the use of occurrences in the -calculus and we describe an implementation of the notion of residuals. We then describe applications in the development of interpreters f ..."
Abstract
-
Cited by 10 (1 self)
- Add to MetaCart
We describe formal manipulations of programming language semantics that permit execution animation for interpreters. We first study the use of occurrences in the -calculus and we describe an implementation of the notion of residuals. We then describe applications in the development of interpreters for the lazy -calculus and the parallel language Occam. 1. Introduction Formal descriptions of programming language semantics have already been shown to yield executable specifications of interpreters for these languages [Mini-ML], [Esterel]. However, while the obtained interpreters have the clear advantage of being "certified" implementations, they lack a nice user interface for the very reason that the definition only deals with semantic values. An interpreter can be tranformed into a debugging tool by adding tracing, profiling, or control of execution functionalities. For us, an execution trace is a list of basic instruction calls that describes a history of execution, a profile is a list...
Towards the Systematic Development of Description Logic Reasoners: CLASP reconstructed
- Proceedings of the Third International Conference on the Principles of Knowledge Representation and Reasoning (KR-92
, 1992
"... It is argued that considerable benefits can be obtained by making KR&R systems easily extendable, so that new language constructs can be added on a per-application basis. In order to achieve this extensibility we need techniques for formally specifying the extensions, and for modularly and locally m ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
It is argued that considerable benefits can be obtained by making KR&R systems easily extendable, so that new language constructs can be added on a per-application basis. In order to achieve this extensibility we need techniques for formally specifying the extensions, and for modularly and locally modifying the implementations. We present two such techniques applicable to the family of reasoners based on Description/Terminological Logics, namely natural semantics rules of inference, and the protodl customizable KBMS architecture. The bulk of the paper aims to demonstrate the efficacy of these techniques, together with some heuristics for their use, by showing how we could reconstruct a previously proposed description logic: Devanbu and Litman's extension to classic, called clasp, designed to reason about actions and plans. In the process, we uncover a few deficiencies in the original proposal, and provide for the first time a formal semantics for clasp. 1 Introduction and Aims Knowl...
Interpreter Prototypes From Formal Language Definitions
, 1993
"... Denotational semantics is now used widely for the formal definition of programming languages but there is a lack of appropriate tools to support language development. General purpose language implementation systems are oriented to syntax with poor support for semantics. Specialised denotational sema ..."
Abstract
-
Cited by 6 (4 self)
- Add to MetaCart
Denotational semantics is now used widely for the formal definition of programming languages but there is a lack of appropriate tools to support language development. General purpose language implementation systems are oriented to syntax with poor support for semantics. Specialised denotational semantics based systems correspond closely to the formalism but are rendered inflexible for language experimentation by their monolithic multiple stages Exploratory language development with formal definitions is better served by a unitary notation, encompassing syntax and semantics, which is close to but simpler than denotational semantics. Interactive implementation of the notation then facilitates language investigation through the direct execution of a formal definition as an interpreter for the defined language. This thesis presents Navel, a run-time typed, applicative order, pure functional programming language with integrated context free grammar rules. Navel has been used to develop prot...
Functional Evaluation Of Natural Semantics Specifications
"... Typol is a language to implement Natural Semantics inside the Centaur Programming Environment. We explain why Natural Semantics can be considered as a generalization of the Attribute Grammars formalism. This relationship suggests introducing in the Typol setting some concepts from the Attribute Gram ..."
Abstract
-
Cited by 4 (3 self)
- Add to MetaCart
Typol is a language to implement Natural Semantics inside the Centaur Programming Environment. We explain why Natural Semantics can be considered as a generalization of the Attribute Grammars formalism. This relationship suggests introducing in the Typol setting some concepts from the Attribute Grammars framework. With these concepts, we can provide specialized evaluators to some classes of Typol programs, instead of the general Prolog machine currently used to execute such programs. More precisely, we prove that under acceptable conditions, the unification process is no longer required and can be replaced by a simple pattern-matching mechanism. From this proof method, we deduce a functional implementation of Typol programs. We also propose a language construct called CondMatch, that makes it easier to automatically translate a Typol program into a Lisp function.
A Tool to Support Formal Reasoning about Computer Languages
- Proceedings of the Third International Workshop on Tools and Algorithms for the Construction and Analysis of Systems (TACAS'97), volume 1217 of Lecture Notes in Computer Science
, 1997
"... . A tool to support formal reasoning about computer languages and specific language texts is described. The intention is to provide a tool that can build a formal reasoning system in a mechanical theorem prover from two specifications, one for the syntax of the language and one for the semantics ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
. A tool to support formal reasoning about computer languages and specific language texts is described. The intention is to provide a tool that can build a formal reasoning system in a mechanical theorem prover from two specifications, one for the syntax of the language and one for the semantics. A parser, pretty-printer and internal representations are generated from the former. Logical representations of syntax and semantics, and associated theorem proving tools, are generated from the combination of the two specifications. The main aim is to eliminate tedious work from the task of prototyping a reasoning tool for a computer language, but the abstract specifications of the language also assist the automation of proof. 1 Introduction For several decades theorem proving systems have been used to reason about computer languages. A common approach has been to define the semantics of a language in the logic of the theorem prover. This may be done by defining new constants in t...

