[antlr-interest] [stringtemplate-interest] Working Java 1.5 grammar?

Jim Idle jimi at temporal-wave.com
Tue Nov 16 13:59:26 PST 2010


I think that the grammar is relying on a faster computer or a longer timeout
;-) Try adding -Xconversiontimeout 30000 to the command line. 

 

Yang's grammar is very accurate for 1.5 but it does rely on backtracking,
which makes it a little slow and a little difficult to report accurate
errors with. However, if you know that the input is good, then this is a
great starting point if you want to do something very custom. Note that you
can always use existing tools such as those within Netbeans and many others
to provide custom refactoring too.

 

Jim

 

PS: I answered this on the ANTLR mailing list, which is where it belongs J

 

From: stringtemplate-interest-bounces at antlr.org
[mailto:stringtemplate-interest-bounces at antlr.org] On Behalf Of Steven
Atkinson
Sent: Tuesday, November 16, 2010 1:31 PM
To: 'stringtemplate-interest at antlr.org'
Cc: 'yang.jiang.z at gmail.com'
Subject: [stringtemplate-interest] Working Java 1.5 grammar?

 

Folks,

 

I'm trying to get a working Java 1.5 grammar and tree walker for
source-to-source refactoring efforts at Netflix. 

 

I've installed antlrWorks in IntelliJ, downloaded the Java.g from antlr.org,
and even went hunting in openJDK sources for a working ANTLR v3 grammer for
Java 1.5 or 1.6.

 

When I try putting the Java.g grammar from Yang Jiang
<http://openjdk.java.net/projects/compiler-grammar/antlrworks/Java.g>
(yang.jiang.z at gmail.com) through ANTLRWorks or on the command line I get the
following error output

 

Any help is appreciated!

 

C:\Hack>java -jar antlr-3.2.jar Java.g

warning(209): Java.g:1783:1: Multiple token rules can match input such as
"'-'": SUBSUB, SUB, SUBEQ

 

As a result, token(s) SUB,SUBEQ were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'c'": CASE, CATCH, CHAR, CLASS, CONST, CONTINUE, IDENTIFIER

 

As a result, token(s) CATCH,CHAR,CLASS,CONST,CONTINUE,IDENTIFIER were
disabled for that input

warning(209): Java.g:1807:1: Multiple token rules can match input such as
"'%'": PERCENT, PERCENTEQ

 

As a result, token(s) PERCENTEQ were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'t'": THIS, THROW, THROWS, TRANSIENT, TRY, TRUE, IDENTIFIER

 

As a result, token(s) THROW,THROWS,TRANSIENT,TRY,TRUE,IDENTIFIER were
disabled for that input

warning(209): Java.g:1815:1: Multiple token rules can match input such as
"'!'": BANG, BANGEQ

 

As a result, token(s) BANGEQ were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'w'": WHILE, IDENTIFIER

 

As a result, token(s) IDENTIFIER were disabled for that input

warning(209): Java.g:1779:1: Multiple token rules can match input such as
"'+'": PLUSPLUS, PLUS, PLUSEQ

 

As a result, token(s) PLUS,PLUSEQ were disabled for that input

warning(209): Java.g:1370:1: Multiple token rules can match input such as
"'1'..'9'": LONGLITERAL, INTLITERAL, FLOATLITERAL, DOUBLELITERAL

 

As a result, token(s) INTLITERAL,FLOATLITERAL,DOUBLELITERAL were disabled
for that input

warning(209): Java.g:1803:1: Multiple token rules can match input such as
"'^'": CARET, CARETEQ

 

As a result, token(s) CARETEQ were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'s'": SHORT, STATIC, STRICTFP, SUPER, SWITCH, SYNCHRONIZED, IDENTIFIER

 

As a result, token(s) STATIC,STRICTFP,SUPER,SWITCH,SYNCHRONIZED,IDENTIFIER
were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'f'": FINAL, FINALLY, FLOAT, FOR, FALSE, IDENTIFIER

 

As a result, token(s) FINALLY,FLOAT,FOR,FALSE,IDENTIFIER were disabled for
that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'l'": LONG, IDENTIFIER

 

As a result, token(s) IDENTIFIER were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'v'": VOID, VOLATILE, IDENTIFIER

 

As a result, token(s) VOLATILE,IDENTIFIER were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'d'": DEFAULT, DO, DOUBLE, IDENTIFIER

 

As a result, token(s) DO,DOUBLE,IDENTIFIER were disabled for that input

warning(209): Java.g:1727:1: Multiple token rules can match input such as
"'='": EQ, EQEQ

 

As a result, token(s) EQEQ were disabled for that input

warning(209): Java.g:1787:1: Multiple token rules can match input such as
"'*'": STAR, STAREQ

 

As a result, token(s) STAREQ were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'e'": ELSE, ENUM, EXTENDS, IDENTIFIER

 

As a result, token(s) ENUM,EXTENDS,IDENTIFIER were disabled for that input

warning(209): Java.g:1791:1: Multiple token rules can match input such as
"'/'": COMMENT, LINE_COMMENT, SLASH, SLASHEQ

 

As a result, token(s) LINE_COMMENT,SLASH,SLASHEQ were disabled for that
input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'g'": GOTO, IDENTIFIER

 

As a result, token(s) IDENTIFIER were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'n'": NATIVE, NEW, NULL, IDENTIFIER

 

As a result, token(s) NEW,NULL,IDENTIFIER were disabled for that input

warning(209): Java.g:1799:1: Multiple token rules can match input such as
"'|'": BARBAR, BAR, BAREQ

 

As a result, token(s) BAR,BAREQ were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'r'": RETURN, IDENTIFIER

 

As a result, token(s) IDENTIFIER were disabled for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'p'": PACKAGE, PRIVATE, PROTECTED, PUBLIC, IDENTIFIER

 

As a result, token(s) PRIVATE,PROTECTED,PUBLIC,IDENTIFIER were disabled for
that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'b'": BOOLEAN, BREAK, BYTE, IDENTIFIER

 

As a result, token(s) BREAK,BYTE,IDENTIFIER were disabled for that input

warning(209): Java.g:1370:1: Multiple token rules can match input such as
"'0'": LONGLITERAL, INTLITERAL, FLOATLITERAL, DOUBLELITERAL

 

As a result, token(s) INTLITERAL,FLOATLITERAL,DOUBLELITERAL were disabled
for that input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'a'": ABSTRACT, ASSERT, IDENTIFIER

 

As a result, token(s) ASSERT,IDENTIFIER were disabled for that input

warning(209): Java.g:1795:1: Multiple token rules can match input such as
"'&'": AMPAMP, AMP, AMPEQ

 

As a result, token(s) AMP,AMPEQ were disabled for that input

warning(209): Java.g:1703:1: Multiple token rules can match input such as
"'.'": FLOATLITERAL, DOUBLELITERAL, DOT, ELLIPSIS

 

As a result, token(s) DOUBLELITERAL,DOT,ELLIPSIS were disabled for that
input

warning(209): Java.g:1827:1: Multiple token rules can match input such as
"'i'": IF, IMPLEMENTS, IMPORT, INSTANCEOF, INT, INTERFACE, IDENTIFIER

 

As a result, token(s) IMPLEMENTS,IMPORT,INSTANCEOF,INT,INTERFACE,IDENTIFIER
were disabled for that input

error(208): Java.g:1815:1: The following token definitions can never be
matched because prior tokens match the same input:
INTLITERAL,DOUBLELITERAL,LINE_COMMENT,ASSERT,BREAK,BYTE,CATCH,CHAR,CLASS,CON
S

T,CONTINUE,DO,DOUBLE,ENUM,EXTENDS,FINALLY,FLOAT,FOR,IMPLEMENTS,IMPORT,INSTAN
CEOF,INT,INTERFACE,NEW,PRIVATE,PROTECTED,PUBLIC,STATIC,STRICTFP,SUPER,SWITCH
,SYNCHRONIZED,THROW,THROWS,TRANSIENT,TRY,VOLATIL

E,TRUE,FALSE,NULL,DOT,ELLIPSIS,EQEQ,PLUS,SUB,SLASH,AMP,BAR,PLUSEQ,SUBEQ,STAR
EQ,SLASHEQ,AMPEQ,BAREQ,CARETEQ,PERCENTEQ,BANGEQ

 

C:\Hack>



More information about the antlr-interest mailing list