Results 1 - 10
of
11
Towards an Engineering Discipline for GRAMMARWARE
- ACM Transactions on Software Engineering Methodology
, 2003
"... Grammarware comprises grammars and all grammar-dependent software, i.e., software artifacts that directly involve grammar knowledge. The term grammar is meant here in the widest sense to include XML schemas, syntax definitions, interface descriptions, APIs, and interaction protocols. The most obv ..."
Abstract
-
Cited by 91 (7 self)
- Add to MetaCart
Grammarware comprises grammars and all grammar-dependent software, i.e., software artifacts that directly involve grammar knowledge. The term grammar is meant here in the widest sense to include XML schemas, syntax definitions, interface descriptions, APIs, and interaction protocols. The most obvious examples of grammar-dependent software are document processors, parsers, import/export functionality, and generative programming tools. Even though grammarware is so omnipresent, it is somewhat neglected --- from an engineering point of view. We lay out an agenda that is meant to promote research on improving the quality of grammarware and on increasing the productivity of grammarware development.
CASTING: a Formally Based Software Test Generation Method
- Proceedings of the 1st IEEE International Conference on Formal Engineering Methods (ICFEM’97), IEEE Computer
, 1997
"... In this paper, we present CASTING, a Computer Assisted Software Test engineering method. The method, supported by a prototype tool, generates realistic software test suites in a formal and semi-automatic way. Based on a two-layer modular architecture, CASTING is not tied to any particular style of i ..."
Abstract
-
Cited by 15 (1 self)
- Add to MetaCart
In this paper, we present CASTING, a Computer Assisted Software Test engineering method. The method, supported by a prototype tool, generates realistic software test suites in a formal and semi-automatic way. Based on a two-layer modular architecture, CASTING is not tied to any particular style of input. Initially designed to engineer functional test suites from formal specifications, CASTING can easily be instantiated to accept other formal description levels, seamlessly supporting the main industrial testing techniques, ranging from functional testing to structural testing. A simple process scheduler specification is used in this paper to illustrate the interaction facilities of CASTING and to provide a sample of the resulting test suites. 1. Introduction It is well known that testing accounts for a large part of the cost of development and maintenance of software [2]. Therefore, the design of tools to assist in the testing phase and to make it more efficient should be a primary goa...
Occam's Razor: The Cutting Edge of Parser Technology
- IN PROC. TOULOUSE 92: FIFTH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING AND ITS APPLICATIONS
, 1992
"... Yacc is well established in the compiler-compiler field, but is beginning to show its age. Issues which were important when hardware resources were more scarce are now less critical. Precc is a new compiler-compiler tool that is much more versatile than yacc, whilst retaining efficiency of operat ..."
Abstract
-
Cited by 4 (4 self)
- Add to MetaCart
Yacc is well established in the compiler-compiler field, but is beginning to show its age. Issues which were important when hardware resources were more scarce are now less critical. Precc is a new compiler-compiler tool that is much more versatile than yacc, whilst retaining efficiency of operation on modern computers. It copes with the context-dependent BNF grammar descriptions and higher order meta constructions that are naturally encountered in semi-formal concrete syntax specifications, building fast and efficient infinite-lookahead tools in the form of ANSI-compliant C code. This paper provides a demonstration of this state-of-the-art compiler-compiler technology using the programming language occam as an example. The parsing of occam is particularly difficult compared to some programming languages since the indentation is an integral part of the language. However the precc tool allows a natural implementation of an occam parser that follows the syntax very closely.
Generalized bottom up parsers with reduced stack activity
- The Computer Journal
"... We describe a generalized bottom up parser in which non-embedded recursive rules are handled directly by the underlying automaton, thus limiting stack activity to the activation of rules displaying embedded recursion. Our strategy is motivated by Aycock and Horspool’s approach, but uses a different ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We describe a generalized bottom up parser in which non-embedded recursive rules are handled directly by the underlying automaton, thus limiting stack activity to the activation of rules displaying embedded recursion. Our strategy is motivated by Aycock and Horspool’s approach, but uses a different automaton construction and leads to parsers that are correct for all context-free grammars, including those with hidden left recursion. The automaton features edges which directly connnect states containing reduction actions with their associated goto state: hence we call the approach reduction incorporated generalized LR parsing. Our parser constructs shared packed parse forests in a style similar to that of Tomita parsers. We give formal proofs of the correctness of our algorithm, and compare it with Tomita’s algorithm in terms of the space and time requirements of the running parsers and the size of the parsers ’ tables. Experimental results are given for standard grammars for ANSI-C, ISO-Pascal; for a non-deterministic grammar for IBM VS-COBOL, and for a small grammar that triggers asymptotic worst case behaviour in our parser. 1.
Generating Decompilers
- Information and Software Technology Journal
, 1998
"... Compiler compilers are in widespread use, but decompiler compilers are a more novel concept. ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Compiler compilers are in widespread use, but decompiler compilers are a more novel concept.
Generalised Recursive Descent - Part 2: Some underlying theory
, 1997
"... This report is the second in a two part series in which we consider a parsing technique which we call generalised recursive descent (GRD). In the first report [JS97] there is an extensive discussion of the influence of parsing techniques on language design, a full description of the GRD parsing tech ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This report is the second in a two part series in which we consider a parsing technique which we call generalised recursive descent (GRD). In the first report [JS97] there is an extensive discussion of the influence of parsing techniques on language design, a full description of the GRD parsing technique, and a description of a tool, GRDP, which generates GRD parsers for suitable grammars. There are essentially two classes of GRD parsers: the full prototyping versions which are admitted by any non-left recursive grammar, and the more efficient production versions which are only guaranteed to be admitted (see below) by non-left recursive follow-determined grammars. In this report we shall consider theoretical aspects of follow-determined grammars and the languages which can be specified with them.
A concrete Z grammar
- OXFORD UNIVERSITY COMPUTING LABORATORY, WOLFSON BUILDING, PARKS ROAD
, 1995
"... This article presents a concrete grammar for the specification language Z, following as precisely as possible the BNF-like syntax description in the widely used Z Reference Manual. The grammar has been used as a starting pointforseveral projects associated with Z. It is written in an extended BNF ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This article presents a concrete grammar for the specification language Z, following as precisely as possible the BNF-like syntax description in the widely used Z Reference Manual. The grammar has been used as a starting pointforseveral projects associated with Z. It is written in an extended BNF format for the public domain compiler-compiler PRECC. The grammar has also been used as a basis for grammars aimed at other compiler-compilers, including yacc and PCCTS. The important goal in publishing it here is to make the accepted ZRM grammar for Z publicly available in concrete form and thus to promote the production of Zbased utilities. The formalization has been tested byinterpreting it standardly 1) in PRECC as a parse-tree builder, and, more abstractly, 2) as a generator of its valid phrases. In the non-standard configuration it has generated a suite of test expressions for the standard parser and some examples from that test suite are provided here. The first of these has a rigorous claim to the title of most trivial non-trivial Z specification possible, but all are good tests for any parser of Z.
The PRECC Compiler Compiler
- in Proceedings of the UKUUG/SUKUG Joint New Year 1993 Conference
, 1993
"... PRECC is a UNIX utility that has been designed to extend the capabilities of the familiar LEX and YACC front-end design and implementation tools. The utility is a compiler-compiler that takes unlimited look-ahead and backtracking, the extended BNF notation, and parametrized grammars with (higher ord ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
PRECC is a UNIX utility that has been designed to extend the capabilities of the familiar LEX and YACC front-end design and implementation tools. The utility is a compiler-compiler that takes unlimited look-ahead and backtracking, the extended BNF notation, and parametrized grammars with (higher order) meta-parameters to the world of C programming. The generated code is standard ANSI C and is `plug compatible' with LEX-generated lexical analysers prepared for YACC. In contrast to YACC, however, the generated code is modular and thus allows parts of scripts to be compiled separately and linked in incrementally. But it remains efficient in practice, and the generated code has run as fast or faster than YACC-generated code in trials with real programming language specifications.
Generalised recursive descent - Part 1: Language design and parsing
, 1997
"... This report is the first of a two part series in which we address fundamental design issues in the syntax of programming languages and the way in which implementation difficulties have had a deleterious effect on the expresiveness of languages. We ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
This report is the first of a two part series in which we address fundamental design issues in the syntax of programming languages and the way in which implementation difficulties have had a deleterious effect on the expresiveness of languages. We
Precise and imprecise COBOL parsers
"... . The development of precise grammars and parsers for complex languages like COBOL requires grammar engineering as opposed to cost-intensive grammar hacking. It also requires powerful tools and techniques as opposed to plain YACC with manual conflict resolution. The paper contributes grammar tra ..."
Abstract
- Add to MetaCart
. The development of precise grammars and parsers for complex languages like COBOL requires grammar engineering as opposed to cost-intensive grammar hacking. It also requires powerful tools and techniques as opposed to plain YACC with manual conflict resolution. The paper contributes grammar transformations for the derivation of precise and imprecise (but useful) grammars, non-standard abstract representations invariant to COBOL's dialect problem, and accompanying mappings from imprecise parse trees to a precise abstract representation. 1 Introduction Precision in parsing In an informal sense, a parser P is precise if it exactly accepts the intended language L, and the parse trees reflect the intended structure (in terms of associativity etc.). As for the pure acceptor part of that notion, we might also call P correct or complete resp., if the following properties hold for the intended language L, and the language L(P ) accepted by P : -- L ' L(P ) (correctness of P ) -- L ` ...

