[antlr-interest] Java 6 grammar with separate lexer and parser
George S. Cowan
cowang at comcast.net
Sun Jul 22 08:51:11 PDT 2012
I have placed a new grammar at
http://www.antlr.org/grammar/1342970763769/Java6Separated.zip
The readme file is copied below.
George
---------
README.txt for the separated Java 6 Lexer and Parser
Please address all issues to the ANTLR Interest mailing list
http://www.antlr.org/mailman/listinfo/antlr-interest
Included files:
Java6Lex.g - the lexer grammar
Java6Parse.g - the parser grammar
Java6SplitRun.java - Parse input files against the Java6Lex.g and
Java6Parse.g grammars
README.txt - this file
build.xml - the ant build file for testing the grammars
(Surely this be done in a simpler way?)
vendor/examples - directory of valid and invalid Java programs
vendor/lib - directory with the antlr-3.4-complete.jar file
INSTRUCTIONS:
1) Place a copy of the antlr-3.4-complete.jar in the directory
Java6Separated/vendor/lib
2) Change directory to Java6Separated/src and run:
ant
My motivation for separating the lexer and parser was to speed up the
process of making iterative changes to the Java grammar for experimenting
with new language features. Generation and compilation of the parser
grammar (assuming no changes to the lexer grammar) with my ant script
only dropped from 14 to 6 seconds on my laptop, but it helps a little.
The only changes to the parser that were needed were to replace token
literals with token names, e.g., replace ',' with COMMA, and then add
the tokenVocab=Java6Lex option. And of course change the grammar
lines in the lexer and parser to:
parser grammar Java6Parse;
lexer grammar Java6Lex;
The grammars' ability to parse correct programs was tested on the
programs from the book:
Java 5.0 Tiger: A Developer's Notebook
By Brett McLaughlin, David Flanagan
The programs are available at
http://shop.oreilly.com/product/9780596007386.do
In this distribution they are located at
...\Java6Separated\vendor\examples\java\java-adn
The parser's ability to find the errors in invalid Java programs was
only tested on a single trivial example located at
...\Java6Separated\vendor\examples\java\ErrorExamples
This "separated" version was based on the combined lexer/parser that was
originally written by Terry Parr and modified by Yang Jiang for use in
the OpenJDK project. See:
http://openjdk.java.net/projects/compiler-grammar/
http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g
George S. Cowan, July, 2012
More information about the antlr-interest
mailing list