Next: Lexical Structure
Up: The abc scanner and
Previous: The abc scanner and
The purpose of this document is to give a clear explanation of the scanner
and parser for abc. In defining the scanner and lexer our goal was to
come up with clear rules for tokens and to express the grammar in an
LALR(1) specification that results in no shift-reduce or reduce-reduce
conflicts. Any language extensions implemented using abc should follow
the same principles.
We have based our implementation on Polyglot ,
starting with the base Java compiler. The scanner is an extended version
of polyglot's base Java scanner. The main difference is that the abc
scanner uses states to distinguish between different contexts. The parser
uses polyglot's mechanism for extending an existing grammar.
The actual code specifying the scanner and parser can be found in the
directory abc/src/abc/aspectj/parse in the
files aspectj.flex and aspectj.ppg.