ANTLR: A predicated‐LL(k) parser generator

@article{Parr1995ANTLRAP,
  title={ANTLR: A predicated‐LL(k) parser generator},
  author={Terence John Parr and Russell W. Quong},
  journal={Software: Practice and Experience},
  year={1995},
  volume={25}
}
  • T. ParrR. Quong
  • Published 1 July 1995
  • Computer Science
  • Software: Practice and Experience
Despite the parsing power of LR/LALR algorithms, e.g. YACC, programmers often choose to write recursive‐descent parsers by hand to obtain increased flexibility, better error handling, and ease of debugging. We introduce ANTLR, a public‐domain parser generator that combines the flexibility of hand‐coded parsing with the convenience of a parser generator, which is a component of PCCTS. ANTLR has many features that make it easier to use than other language tools. Most important, ANTLR provides… 

Practical LR Parser Generation

This work demonstrates that for a very general, practical class of grammars—a strict superset of Knuth’s canonical LR—the authors can generate parsers automatically, and such that the resulting parser code, as well as the generation procedure itself, is highly efficient.

YooccLa: a parser generator for L-attributed grammars

  • G. ButlerC. Mingins
  • Computer Science
    Proceedings 37th International Conference on Technology of Object-Oriented Languages and Systems. TOOLS-Pacific 2000
  • 2000
Argues that a parser generator can be developed that: (1) can bring parser technology within the reach of more software engineers, (2) requires less knowledge of parser technology than most existing

Practical Packrat Parsing

Rats!, a parser generator for Java that supports easily modifiable grammars and avoids the complexities associated with altering LR or LL grammarmars, and supports simpler grammar specifications and more convenient error reporting through aggressive optimizations.

Table driven prediction for recursive descent LL(k) parsers

This paper proposes the possibility of a hybrid system that makes decisions using tables but once decisions are made recursive descent is employed to maintain context and the benefits of each system are maintained, and the drawbacks are mitigated.

Packrat parsing:: simple, powerful, lazy, linear time, functional pearl

  • B. Ford
  • Computer Science
    ICFP '02
  • 2002
This paper describes packrat parsing informally with emphasis on its use in practical applications, and explores its advantages and disadvantages with respect to the more conventional alternatives.

Grammars for Free: Toward Grammar Inference for Ad Hoc Parsers

  • M. SchröderJürgen Cito
  • Computer Science
    2022 IEEE/ACM 44th International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER)
  • 2022
This work proposes an automatic grammar inference system for ad hoc parsers that would enable all of these use cases, in addition to opening up new possibilities in mining software repositories and bi-directional parser synthesis.

Staged parser combinators for efficient data processing

Staging is used, a form of runtime code generation, to dissociate input parsing from parser composition, and eliminate intermediate data structures and computations associated with parser composition at staging time.

Improved GLR Parsing Algorithm

In this paper, the motivation of adopting the GLR parsing algorithm to construct parsers for programming languages is presented, and a multi-level scheme to fasten theGLR parser is created.

Packrat Parsing: Simple, Powerful, Lazy, Linear Time

  • B. Ford
  • Computer Science
    ICFP 2002
  • 2002
This paper describes packrat parsing informally with emphasis on its use in practical applications, and explores its advantages and disadvantages with respect to the more conventional alternatives.

Parsing Expression Grammar as a Primitive Recursive-Descent Parser with Backtracking

The exercise with defining the Java syntax in PEG formalism suggests that more work is needed on PEG as a language specification tool, and the resulting primitive parser shows an acceptable behavior, indicating that packrat parsing might be an overkill for practical languages.
...

References

SHOWING 1-10 OF 16 REFERENCES

The Use of Predicates In LL(k) And LR(k) Parser Generators (Technical Summary)

This paper introduces predicated LR ( k) and LL (k) parsers and implements predicate handling in a public-domain parser generator that offers k-token lookahead The Purdue Compiler Construction Tool Set (PCc-m).

Crafting a Compiler with C

(Each chapter contains "Exercises"): Grammars and Parsing, The Structure of a Compiler, and Semantic Processing Techniques.

Adding Semantic and Syntactic Predicates To LL(k): pred-LL(k)

Most language translation problems can be solved with existing LALR(1) or LL(k) language tools; e.g., YACC [Joh78] or ANTLR [PDC92]. However, there are language constructs that defy almost all

On the Translation of Languages from Left to Right

  • D. Knuth
  • Computer Science, Linguistics
    Inf. Control.
  • 1965

Yacc: Yet Another Compiler-Compiler

Yacc provides a general tool for describing the input to a computer program, together with code to be invoked as each such structure is recognized, and turns such a specification into a subroutine that handles the input process.

PCCTS reference manual: version 1.00

This document describes the structure and use of the Purdue Compiler-Construction Tool Set (PCCTS), a set of public domain software tools designed to facilitate the implementation of compilers and

Attributed Translations

The Annotated C++ Reference Manual

This chapter discusses the evolution of C++ and ANSI C, a standards-based programming language, and its applications in the rapidly changing environment, as well as some of the techniques used to design and implement these systems.

PCCTS 1.00: The Purdue Compiler Construction Tool Set

  • SIGPLAN Notices,
  • 1992

Private communications at NeXT Computer

  • Private communications at NeXT Computer
  • 1993