java parser jj
来源:互联网 发布:k线图 蜡烛图源码 编辑:程序博客网 时间:2024/04/29 01:45
// Generated by JTB 1.1
// zfzheng 2006-07-11
// 1) @see http://www.cs.purdue.edu/jtb/index.html
// 2) 生成树CMD:
// jtb -tk -f -pp -w -printer -p com.xxx.toolkit.java.parser jtb.jj
// 3)修改说明:
// 3.1 增加注释收集(全局收集,注释无处不在,不适合放在产生式中),支持多线程解析。
// 3.2 把UnicodeConverter类内嵌,修改convertString(屏蔽),只需本单独jj文件即可产生完整的java parser。
// 3.3 PrimaryPrefix()增加Type的选择,以支持类似“boolean.class,int[].class”语句。
// 3.4 ClassBody()增加";"以支持类体声明中多余的分号。
options {
STATIC=false;
JAVA_UNICODE_ESCAPE = true;
// DEBUG_LOOKAHEAD=true;
// DEBUG_PARSER=true;
// DEBUG_TOKEN_MANAGER=true;
}
PARSER_BEGIN(JTBParser)
package com.xxx.toolkit.java.parser;
import com.xxx.toolkit.java.parser.syntaxtree.*;
import java.util.*;
public class JTBParser {
private static Map map=new HashMap();
public Node parse() throws ParseException {
return CompilationUnit();
}
public synchronized static List getCommentList(){
List list=(List)map.get(Thread.currentThread());
if(list==null){
list=new ArrayList();
map.put(Thread.currentThread(),list);
}
return list;
}
//记录注释
static void addComment(String value){
getCommentList().add(value);
}
}
class JTBToolkit {
static NodeToken makeNodeToken(Token t) {
return new NodeToken(t.image.intern(), t.kind, t.beginLine, t.beginColumn, t.endLine, t.endColumn);
}
}
class UnicodeConverter {
public static void printout (String s) {
System.out.print(convertString(s));
}
public static boolean isASCII(char c) {
return ((int)c>=32 && (int)c<=126) || (c=='/r') || (c=='/n') || (c=='/t');
}
public static char hexToChar (int hex) {
if (hex < 10) return (char)(hex + (int)'0');
else return (char)(hex - 10 + (int)'a');
}
public static char[] unicodeToString(char c) {
char[] ca = { '//', 'u', '/0', '/0', '/0', '/0' };
ca[2] = hexToChar(((int)c >> 12) & 0x0f);
ca[3] = hexToChar(((int)c >> 8) & 0x0f);
ca[4] = hexToChar(((int)c >> 4) & 0x0f);
ca[5] = hexToChar(((int)c ) & 0x0f);
return ca;
}
public static String convertString(String s) {
// int len = s.length();
// StringBuffer sb = new StringBuffer();
// for (int i=0; i<len; i++) {
// char c = s.charAt(i);
// if (isASCII(c)) sb.append(c);
// else sb.append(unicodeToString(c));
// }
// return sb.toString();
return s;
}
}
PARSER_END(JTBParser)
SKIP :
{
" "
| "/t"
| "/n"
| "/r"
| "/f"
}
SPECIAL_TOKEN :
//TOKEN:
{
<#SINGLE_LINE_COMMENT: "//" (~["/n", "/r"])* ("/n" | "/r" | "/r/n")>
| <#FORMAL_COMMENT: "/**" (~["*"])* "*" ("*" | (~["*", "/"] (~["*"])* "*"))* "/">
| <#MULTI_LINE_COMMENT: "/*" (~["*"])* "*" ("*" | (~["*", "/"] (~["*"])* "*"))* "/">
|<COMMENT: (<SINGLE_LINE_COMMENT>)|(<FORMAL_COMMENT>)|(<MULTI_LINE_COMMENT>) > {
JTBParser.addComment(matchedToken.image);
}
}
TOKEN :
{
<ABSTRACT: "abstract">
| <BOOLEAN: "boolean">
| <BREAK: "break">
| <BYTE: "byte">
| <CASE: "case">
| <CATCH: "catch">
| <CHAR: "char">
| <CLASS: "class">
| <CONST: "const">
| <CONTINUE: "continue">
| <_DEFAULT: "default">
| <DO: "do">
| <DOUBLE: "double">
| <ELSE: "else">
| <EXTENDS: "extends">
| <FALSE: "false">
| <FINAL: "final">
| <FINALLY: "finally">
| <FLOAT: "float">
| <FOR: "for">
| <GOTO: "goto">
| <IF: "if">
| <IMPLEMENTS: "implements">
| <IMPORT: "import">
| <INSTANCEOF: "instanceof">
| <INT: "int">
| <INTERFACE: "interface">
| <LONG: "long">
| <NATIVE: "native">
| <NEW: "new">
| <NULL: "null">
| <PACKAGE: "package">
| <PRIVATE: "private">
| <PROTECTED: "protected">
| <PUBLIC: "public">
| <RETURN: "return">
| <SHORT: "short">
| <STATIC: "static">
| <SUPER: "super">
| <SWITCH: "switch">
| <SYNCHRONIZED: "synchronized">
| <THIS: "this">
| <THROW: "throw">
| <THROWS: "throws">
| <TRANSIENT: "transient">
| <TRUE: "true">
| <TRY: "try">
| <VOID: "void">
| <VOLATILE: "volatile">
| <WHILE: "while">
}
TOKEN :
{
<INTEGER_LITERAL: <DECIMAL_LITERAL> (["l", "L"])? | <HEX_LITERAL> (["l", "L"])? | <OCTAL_LITERAL> (["l", "L"])?>
| <#DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])*>
| <#HEX_LITERAL: "0" ["x", "X"] (["0"-"9", "a"-"f", "A"-"F"])+>
| <#OCTAL_LITERAL: "0" (["0"-"7"])*>
| <FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f", "F", "d", "D"])? | "." (["0"-"9"])+ (<EXPONENT>)? (["f", "F", "d", "D"])? | (["0"-"9"])+ <EXPONENT> (["f", "F", "d", "D"])? | (["0"-"9"])+ (<EXPONENT>)? ["f", "F", "d", "D"]>
| <#EXPONENT: ["e", "E"] (["+", "-"])? (["0"-"9"])+>
| <CHARACTER_LITERAL: "'" ((~["'", "//", "/n", "/r"]) | ("//" (["n", "t", "b", "r", "f", "//", "'", "/""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] ["0"-"7"]))) "'">
{
matchedToken.image = UnicodeConverter.convertString(image.toString());
}
| <STRING_LITERAL: "/"" ((~["/"", "//", "/n", "/r"]) | ("//" (["n", "t", "b", "r", "f", "//", "'", "/""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] ["0"-"7"])))* "/"">
{
matchedToken.image = UnicodeConverter.convertString(image.toString());
}
}
TOKEN :
{
<#LETTER: ["$", "A"-"Z", "_", "a"-"z", "/u00c0"-"/u00d6", "/u00d8"-"/u00f6", "/u00f8"-"/u00ff", "/u0100"-"/u1fff", "/u3040"-"/u318f", "/u3300"-"/u337f", "/u3400"-"/u3d2d", "/u4e00"-"/u9fff", "/uf900"-"/ufaff"]>
| <#DIGIT: ["0"-"9", "/u0660"-"/u0669", "/u06f0"-"/u06f9", "/u0966"-"/u096f", "/u09e6"-"/u09ef", "/u0a66"-"/u0a6f", "/u0ae6"-"/u0aef", "/u0b66"-"/u0b6f", "/u0be7"-"/u0bef", "/u0c66"-"/u0c6f", "/u0ce6"-"/u0cef", "/u0d66"-"/u0d6f", "/u0e50"-"/u0e59", "/u0ed0"-"/u0ed9", "/u1040"-"/u1049"]>
}
TOKEN :
{
<LPAREN: "(">
| <RPAREN: ")">
| <LBRACE: "{">
| <RBRACE: "}">
| <LBRACKET: "[">
| <RBRACKET: "]">
| <SEMICOLON: ";">
| <COMMA: ",">
| <DOT: ".">
}
TOKEN :
{
<ASSIGN: "=">
| <GT: ">">
| <LT: "<">
| <BANG: "!">
| <TILDE: "~">
| <HOOK: "?">
| <COLON: ":">
| <EQ: "==">
| <LE: "<=">
| <GE: ">=">
| <NE: "!=">
| <SC_OR: "||">
| <SC_AND: "&&">
| <INCR: "++">
| <DECR: "--">
| <PLUS: "+">
| <MINUS: "-">
| <STAR: "*">
| <SLASH: "/">
| <BIT_AND: "&">
| <BIT_OR: "|">
| <XOR: "^">
| <REM: "%">
| <LSHIFT: "<<">
| <RSIGNEDSHIFT: ">>">
| <RUNSIGNEDSHIFT: ">>>">
| <PLUSASSIGN: "+=">
| <MINUSASSIGN: "-=">
| <STARASSIGN: "*=">
| <SLASHASSIGN: "/=">
| <ANDASSIGN: "&=">
| <ORASSIGN: "|=">
| <XORASSIGN: "^=">
| <REMASSIGN: "%=">
| <LSHIFTASSIGN: "<<=">
| <RSIGNEDSHIFTASSIGN: ">>=">
| <RUNSIGNEDSHIFTASSIGN: ">>>=">
}
//Comment Comment():{
// NodeList list=new NodeList();
// NodeToken n;
// Token t;
//}
//{
// (t=<COMMENT>{
// n = JTBToolkit.makeNodeToken(t);
// list.addNode(n);
// })+
// {
// System.out.println(list);
// return new Comment(list);
// }
//}
CompilationUnit CompilationUnit() :
{
NodeOptional n0 = new NodeOptional();
PackageDeclaration n1;
NodeListOptional n2 = new NodeListOptional();
ImportDeclaration n3;
NodeListOptional n4 = new NodeListOptional();
TypeDeclaration n5;
{
}
}
{
(
n1=PackageDeclaration()
{ n0.addNode(n1); }
)?
(
n3=ImportDeclaration()
{ n2.addNode(n3); }
)*
{ n2.nodes.trimToSize(); }
(
n5=TypeDeclaration()
{ n4.addNode(n5); }
)*
{ n4.nodes.trimToSize(); }
{ return new CompilationUnit(n0,n2,n4); }
}
PackageDeclaration PackageDeclaration() :
{
NodeToken n0;
Token n1;
Name n2;
NodeToken n3;
Token n4;
{
}
}
{
n1="package" { n0 = JTBToolkit.makeNodeToken(n1); }
n2=Name()
n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
{ return new PackageDeclaration(n0,n2,n3); }
}
ImportDeclaration ImportDeclaration() :
{
NodeToken n0;
Token n1;
Name n2;
NodeOptional n3 = new NodeOptional();
NodeSequence n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
NodeToken n9;
Token n10;
{
}
}
{
n1="import" { n0 = JTBToolkit.makeNodeToken(n1); }
n2=Name()
(
{ n4 = new NodeSequence(2); }
n6="." { n5 = JTBToolkit.makeNodeToken(n6); }
{ n4.addNode(n5); }
n8="*" { n7 = JTBToolkit.makeNodeToken(n8); }
{ n4.addNode(n7); }
{ n3.addNode(n4); }
)?
n10=";" { n9 = JTBToolkit.makeNodeToken(n10); }
{ return new ImportDeclaration(n0,n2,n3,n9); }
}
TypeDeclaration TypeDeclaration() :
{
NodeChoice n0;
ClassDeclaration n1;
InterfaceDeclaration n2;
NodeToken n3;
Token n4;
{
}
}
{
(
LOOKAHEAD(( "abstract" | "final" | "public" )* "class")
n1=ClassDeclaration()
{ n0 = new NodeChoice(n1, 0); }
|
n2=InterfaceDeclaration()
{ n0 = new NodeChoice(n2, 1); }
|
n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 2); }
)
{ return new TypeDeclaration(n0); }
}
ClassDeclaration ClassDeclaration() :
{
NodeListOptional n0 = new NodeListOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
UnmodifiedClassDeclaration n8;
{
}
}
{
(
(
n3="abstract" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="final" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
|
n7="public" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1 = new NodeChoice(n6, 2); }
)
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
n8=UnmodifiedClassDeclaration()
{ return new ClassDeclaration(n0,n8); }
}
UnmodifiedClassDeclaration UnmodifiedClassDeclaration() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
NodeOptional n4 = new NodeOptional();
NodeSequence n5;
NodeToken n6;
Token n7;
Name n8;
NodeOptional n9 = new NodeOptional();
NodeSequence n10;
NodeToken n11;
Token n12;
NameList n13;
ClassBody n14;
{
}
}
{
n1="class" { n0 = JTBToolkit.makeNodeToken(n1); }
n3=<IDENTIFIER> { n2 = JTBToolkit.makeNodeToken(n3); }
(
{ n5 = new NodeSequence(2); }
n7="extends" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n5.addNode(n6); }
n8=Name()
{ n5.addNode(n8); }
{ n4.addNode(n5); }
)?
(
{ n10 = new NodeSequence(2); }
n12="implements" { n11 = JTBToolkit.makeNodeToken(n12); }
{ n10.addNode(n11); }
n13=NameList()
{ n10.addNode(n13); }
{ n9.addNode(n10); }
)?
n14=ClassBody()
{ return new UnmodifiedClassDeclaration(n0,n2,n4,n9,n14); }
}
ClassBody ClassBody() :
{
NodeToken n0;
Token n1;
NodeListOptional n2 = new NodeListOptional();
ClassBodyDeclaration n3;
NodeToken n4;
Token n5;
{
}
}
{
n1="{" { n0 = JTBToolkit.makeNodeToken(n1); }
(
(";")*
n3=ClassBodyDeclaration()
{ n2.addNode(n3); }
(";")*
)*
{ n2.nodes.trimToSize(); }
n5="}" { n4 = JTBToolkit.makeNodeToken(n5); }
{ return new ClassBody(n0,n2,n4); }
}
NestedClassDeclaration NestedClassDeclaration() :
{
NodeListOptional n0 = new NodeListOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
NodeToken n12;
Token n13;
UnmodifiedClassDeclaration n14;
{
}
}
{
(
(
n3="static" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="abstract" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
|
n7="final" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1 = new NodeChoice(n6, 2); }
|
n9="public" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n1 = new NodeChoice(n8, 3); }
|
n11="protected" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n1 = new NodeChoice(n10, 4); }
|
n13="private" { n12 = JTBToolkit.makeNodeToken(n13); }
{ n1 = new NodeChoice(n12, 5); }
)
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
n14=UnmodifiedClassDeclaration()
{ return new NestedClassDeclaration(n0,n14); }
}
ClassBodyDeclaration ClassBodyDeclaration() :
{
NodeChoice n0;
Initializer n1;
NestedClassDeclaration n2;
NestedInterfaceDeclaration n3;
ConstructorDeclaration n4;
MethodDeclaration n5;
FieldDeclaration n6;
{
}
}
{
(
LOOKAHEAD(2)
n1=Initializer()
{ n0 = new NodeChoice(n1, 0); }
|
LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | "private" )* "class")
n2=NestedClassDeclaration()
{ n0 = new NodeChoice(n2, 1); }
|
LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | "private" )* "interface")
n3=NestedInterfaceDeclaration()
{ n0 = new NodeChoice(n3, 2); }
|
LOOKAHEAD([ "public" | "protected" | "private" ] Name() "(")
n4=ConstructorDeclaration()
{ n0 = new NodeChoice(n4, 3); }
|
LOOKAHEAD(MethodDeclarationLookahead())
n5=MethodDeclaration()
{ n0 = new NodeChoice(n5, 4); }
|
n6=FieldDeclaration()
{ n0 = new NodeChoice(n6, 5); }
)
{ return new ClassBodyDeclaration(n0); }
}
MethodDeclarationLookahead MethodDeclarationLookahead() :
{
NodeListOptional n0 = new NodeListOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
NodeToken n12;
Token n13;
NodeToken n14;
Token n15;
NodeToken n16;
Token n17;
ResultType n18;
NodeToken n19;
Token n20;
NodeToken n21;
Token n22;
{
}
}
{
(
(
n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
|
n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1 = new NodeChoice(n6, 2); }
|
n9="static" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n1 = new NodeChoice(n8, 3); }
|
n11="abstract" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n1 = new NodeChoice(n10, 4); }
|
n13="final" { n12 = JTBToolkit.makeNodeToken(n13); }
{ n1 = new NodeChoice(n12, 5); }
|
n15="native" { n14 = JTBToolkit.makeNodeToken(n15); }
{ n1 = new NodeChoice(n14, 6); }
|
n17="synchronized" { n16 = JTBToolkit.makeNodeToken(n17); }
{ n1 = new NodeChoice(n16, 7); }
)
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
n18=ResultType()
n20=<IDENTIFIER> { n19 = JTBToolkit.makeNodeToken(n20); }
n22="(" { n21 = JTBToolkit.makeNodeToken(n22); }
{ return new MethodDeclarationLookahead(n0,n18,n19,n21); }
}
InterfaceDeclaration InterfaceDeclaration() :
{
NodeListOptional n0 = new NodeListOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
UnmodifiedInterfaceDeclaration n6;
{
}
}
{
(
(
n3="abstract" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="public" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
)
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
n6=UnmodifiedInterfaceDeclaration()
{ return new InterfaceDeclaration(n0,n6); }
}
NestedInterfaceDeclaration NestedInterfaceDeclaration() :
{
NodeListOptional n0 = new NodeListOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
NodeToken n12;
Token n13;
UnmodifiedInterfaceDeclaration n14;
{
}
}
{
(
(
n3="static" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="abstract" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
|
n7="final" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1 = new NodeChoice(n6, 2); }
|
n9="public" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n1 = new NodeChoice(n8, 3); }
|
n11="protected" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n1 = new NodeChoice(n10, 4); }
|
n13="private" { n12 = JTBToolkit.makeNodeToken(n13); }
{ n1 = new NodeChoice(n12, 5); }
)
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
n14=UnmodifiedInterfaceDeclaration()
{ return new NestedInterfaceDeclaration(n0,n14); }
}
UnmodifiedInterfaceDeclaration UnmodifiedInterfaceDeclaration() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
NodeOptional n4 = new NodeOptional();
NodeSequence n5;
NodeToken n6;
Token n7;
NameList n8;
NodeToken n9;
Token n10;
NodeListOptional n11 = new NodeListOptional();
InterfaceMemberDeclaration n12;
NodeToken n13;
Token n14;
{
}
}
{
n1="interface" { n0 = JTBToolkit.makeNodeToken(n1); }
n3=<IDENTIFIER> { n2 = JTBToolkit.makeNodeToken(n3); }
(
{ n5 = new NodeSequence(2); }
n7="extends" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n5.addNode(n6); }
n8=NameList()
{ n5.addNode(n8); }
{ n4.addNode(n5); }
)?
n10="{" { n9 = JTBToolkit.makeNodeToken(n10); }
(
n12=InterfaceMemberDeclaration()
{ n11.addNode(n12); }
)*
{ n11.nodes.trimToSize(); }
n14="}" { n13 = JTBToolkit.makeNodeToken(n14); }
{ return new UnmodifiedInterfaceDeclaration(n0,n2,n4,n9,n11,n13); }
}
InterfaceMemberDeclaration InterfaceMemberDeclaration() :
{
NodeChoice n0;
NestedClassDeclaration n1;
NestedInterfaceDeclaration n2;
MethodDeclaration n3;
FieldDeclaration n4;
{
}
}
{
(
LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | "private" )* "class")
n1=NestedClassDeclaration()
{ n0 = new NodeChoice(n1, 0); }
|
LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | "private" )* "interface")
n2=NestedInterfaceDeclaration()
{ n0 = new NodeChoice(n2, 1); }
|
LOOKAHEAD(MethodDeclarationLookahead())
n3=MethodDeclaration()
{ n0 = new NodeChoice(n3, 2); }
|
n4=FieldDeclaration()
{ n0 = new NodeChoice(n4, 3); }
)
{ return new InterfaceMemberDeclaration(n0); }
}
FieldDeclaration FieldDeclaration() :
{
NodeListOptional n0 = new NodeListOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
NodeToken n12;
Token n13;
NodeToken n14;
Token n15;
Type n16;
VariableDeclarator n17;
NodeListOptional n18 = new NodeListOptional();
NodeSequence n19;
NodeToken n20;
Token n21;
VariableDeclarator n22;
NodeToken n23;
Token n24;
{
}
}
{
(
(
n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
|
n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1 = new NodeChoice(n6, 2); }
|
n9="static" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n1 = new NodeChoice(n8, 3); }
|
n11="final" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n1 = new NodeChoice(n10, 4); }
|
n13="transient" { n12 = JTBToolkit.makeNodeToken(n13); }
{ n1 = new NodeChoice(n12, 5); }
|
n15="volatile" { n14 = JTBToolkit.makeNodeToken(n15); }
{ n1 = new NodeChoice(n14, 6); }
)
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
n16=Type()
n17=VariableDeclarator()
(
{ n19 = new NodeSequence(2); }
n21="," { n20 = JTBToolkit.makeNodeToken(n21); }
{ n19.addNode(n20); }
n22=VariableDeclarator()
{ n19.addNode(n22); }
{ n18.addNode(n19); }
)*
{ n18.nodes.trimToSize(); }
n24=";" { n23 = JTBToolkit.makeNodeToken(n24); }
{ return new FieldDeclaration(n0,n16,n17,n18,n23); }
}
VariableDeclarator VariableDeclarator() :
{
VariableDeclaratorId n0;
NodeOptional n1 = new NodeOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
VariableInitializer n5;
{
}
}
{
n0=VariableDeclaratorId()
(
{ n2 = new NodeSequence(2); }
n4="=" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=VariableInitializer()
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)?
{ return new VariableDeclarator(n0,n1); }
}
VariableDeclaratorId VariableDeclaratorId() :
{
NodeToken n0;
Token n1;
NodeListOptional n2 = new NodeListOptional();
NodeSequence n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
{
}
}
{
n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
(
{ n3 = new NodeSequence(2); }
n5="[" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3.addNode(n4); }
n7="]" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3.addNode(n6); }
{ n2.addNode(n3); }
)*
{ n2.nodes.trimToSize(); }
{ return new VariableDeclaratorId(n0,n2); }
}
VariableInitializer VariableInitializer() :
{
NodeChoice n0;
ArrayInitializer n1;
Expression n2;
{
}
}
{
(
n1=ArrayInitializer()
{ n0 = new NodeChoice(n1, 0); }
|
n2=BLOCKED EXPRESSION
{ n0 = new NodeChoice(n2, 1); }
)
{ return new VariableInitializer(n0); }
}
ArrayInitializer ArrayInitializer() :
{
NodeToken n0;
Token n1;
NodeOptional n2 = new NodeOptional();
NodeSequence n3;
VariableInitializer n4;
NodeListOptional n5;
NodeSequence n6;
NodeToken n7;
Token n8;
VariableInitializer n9;
NodeOptional n10 = new NodeOptional();
NodeToken n11;
Token n12;
NodeToken n13;
Token n14;
{
}
}
{
n1="{" { n0 = JTBToolkit.makeNodeToken(n1); }
(
{ n5 = new NodeListOptional(); }
{ n3 = new NodeSequence(2); }
n4=VariableInitializer()
{ n3.addNode(n4); }
(
LOOKAHEAD(2)
{ n6 = new NodeSequence(2); }
n8="," { n7 = JTBToolkit.makeNodeToken(n8); }
{ n6.addNode(n7); }
n9=VariableInitializer()
{ n6.addNode(n9); }
{ n5.addNode(n6); }
)*
{ n5.nodes.trimToSize(); }
{ n3.addNode(n5); }
{ n2.addNode(n3); }
)?
(
n12="," { n11 = JTBToolkit.makeNodeToken(n12); }
{ n10.addNode(n11); }
)?
n14="}" { n13 = JTBToolkit.makeNodeToken(n14); }
{ return new ArrayInitializer(n0,n2,n10,n13); }
}
MethodDeclaration MethodDeclaration() :
{
NodeListOptional n0 = new NodeListOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
NodeToken n12;
Token n13;
NodeToken n14;
Token n15;
NodeToken n16;
Token n17;
ResultType n18;
MethodDeclarator n19;
NodeOptional n20 = new NodeOptional();
NodeSequence n21;
NodeToken n22;
Token n23;
NameList n24;
NodeChoice n25;
Block n26;
NodeToken n27;
Token n28;
{
}
}
{
(
(
n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
|
n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1 = new NodeChoice(n6, 2); }
|
n9="static" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n1 = new NodeChoice(n8, 3); }
|
n11="abstract" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n1 = new NodeChoice(n10, 4); }
|
n13="final" { n12 = JTBToolkit.makeNodeToken(n13); }
{ n1 = new NodeChoice(n12, 5); }
|
n15="native" { n14 = JTBToolkit.makeNodeToken(n15); }
{ n1 = new NodeChoice(n14, 6); }
|
n17="synchronized" { n16 = JTBToolkit.makeNodeToken(n17); }
{ n1 = new NodeChoice(n16, 7); }
)
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
n18=ResultType()
n19=MethodDeclarator()
(
{ n21 = new NodeSequence(2); }
n23="throws" { n22 = JTBToolkit.makeNodeToken(n23); }
{ n21.addNode(n22); }
n24=NameList()
{ n21.addNode(n24); }
{ n20.addNode(n21); }
)?
(
(
n26=Block()
{ n25 = new NodeChoice(n26, 0); }
|
n28=";" { n27 = JTBToolkit.makeNodeToken(n28); }
{ n25 = new NodeChoice(n27, 1); }
)
)
{ return new MethodDeclaration(n0,n18,n19,n20,n25); }
}
MethodDeclarator MethodDeclarator() :
{
NodeToken n0;
Token n1;
FormalParameters n2;
NodeListOptional n3 = new NodeListOptional();
NodeSequence n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
{
}
}
{
n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
n2=FormalParameters()
(
{ n4 = new NodeSequence(2); }
n6="[" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n4.addNode(n5); }
n8="]" { n7 = JTBToolkit.makeNodeToken(n8); }
{ n4.addNode(n7); }
{ n3.addNode(n4); }
)*
{ n3.nodes.trimToSize(); }
{ return new MethodDeclarator(n0,n2,n3); }
}
FormalParameters FormalParameters() :
{
NodeToken n0;
Token n1;
NodeOptional n2 = new NodeOptional();
NodeSequence n3;
FormalParameter n4;
NodeListOptional n5;
NodeSequence n6;
NodeToken n7;
Token n8;
FormalParameter n9;
NodeToken n10;
Token n11;
{
}
}
{
n1="(" { n0 = JTBToolkit.makeNodeToken(n1); }
(
{ n5 = new NodeListOptional(); }
{ n3 = new NodeSequence(2); }
n4=FormalParameter()
{ n3.addNode(n4); }
(
{ n6 = new NodeSequence(2); }
n8="," { n7 = JTBToolkit.makeNodeToken(n8); }
{ n6.addNode(n7); }
n9=FormalParameter()
{ n6.addNode(n9); }
{ n5.addNode(n6); }
)*
{ n5.nodes.trimToSize(); }
{ n3.addNode(n5); }
{ n2.addNode(n3); }
)?
n11=")" { n10 = JTBToolkit.makeNodeToken(n11); }
{ return new FormalParameters(n0,n2,n10); }
}
FormalParameter FormalParameter() :
{
NodeOptional n0 = new NodeOptional();
NodeToken n1;
Token n2;
Type n3;
VariableDeclaratorId n4;
{
}
}
{
(
n2="final" { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0.addNode(n1); }
)?
n3=Type()
n4=VariableDeclaratorId()
{ return new FormalParameter(n0,n3,n4); }
}
ConstructorDeclaration ConstructorDeclaration() :
{
NodeOptional n0 = new NodeOptional();
NodeChoice n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
FormalParameters n10;
NodeOptional n11 = new NodeOptional();
NodeSequence n12;
NodeToken n13;
Token n14;
NameList n15;
NodeToken n16;
Token n17;
NodeOptional n18 = new NodeOptional();
ExplicitConstructorInvocation n19;
NodeListOptional n20 = new NodeListOptional();
BlockStatement n21;
NodeToken n22;
Token n23;
{
}
}
{
(
(
n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1 = new NodeChoice(n2, 0); }
|
n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1 = new NodeChoice(n4, 1); }
|
n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1 = new NodeChoice(n6, 2); }
)
{ n0.addNode(n1); }
)?
n9=<IDENTIFIER> { n8 = JTBToolkit.makeNodeToken(n9); }
n10=FormalParameters()
(
{ n12 = new NodeSequence(2); }
n14="throws" { n13 = JTBToolkit.makeNodeToken(n14); }
{ n12.addNode(n13); }
n15=NameList()
{ n12.addNode(n15); }
{ n11.addNode(n12); }
)?
n17="{" { n16 = JTBToolkit.makeNodeToken(n17); }
(
LOOKAHEAD(ExplicitConstructorInvocation())
n19=ExplicitConstructorInvocation()
{ n18.addNode(n19); }
)?
(
n21=BlockStatement()
{ n20.addNode(n21); }
)*
{ n20.nodes.trimToSize(); }
n23="}" { n22 = JTBToolkit.makeNodeToken(n23); }
{ return new ConstructorDeclaration(n0,n8,n10,n11,n16,n18,n20,n22); }
}
ExplicitConstructorInvocation ExplicitConstructorInvocation() :
{
NodeChoice n0;
NodeSequence n1;
NodeToken n2;
Token n3;
Arguments n4;
NodeToken n5;
Token n6;
NodeSequence n7;
NodeOptional n8 = new NodeOptional();
NodeSequence n9;
PrimaryExpression n10;
NodeToken n11;
Token n12;
NodeToken n13;
Token n14;
Arguments n15;
NodeToken n16;
Token n17;
{
}
}
{
(
LOOKAHEAD("this" Arguments() ";")
{ n1 = new NodeSequence(4); }
n3="this" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n4=Arguments()
{ n1.addNode(n4); }
n6=";" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n1.addNode(n5); }
{ n0 = new NodeChoice(n1, 0); }
|
{ n7 = new NodeSequence(4); }
(
LOOKAHEAD(2)
{ n9 = new NodeSequence(2); }
n10=PrimaryBLOCKED EXPRESSION
{ n9.addNode(n10); }
n12="." { n11 = JTBToolkit.makeNodeToken(n12); }
{ n9.addNode(n11); }
{ n8.addNode(n9); }
)?
{ n7.addNode(n8); }
n14="super" { n13 = JTBToolkit.makeNodeToken(n14); }
{ n7.addNode(n13); }
n15=Arguments()
{ n7.addNode(n15); }
n17=";" { n16 = JTBToolkit.makeNodeToken(n17); }
{ n7.addNode(n16); }
{ n0 = new NodeChoice(n7, 1); }
)
{ return new ExplicitConstructorInvocation(n0); }
}
Initializer Initializer() :
{
NodeOptional n0 = new NodeOptional();
NodeToken n1;
Token n2;
Block n3;
{
}
}
{
(
n2="static" { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0.addNode(n1); }
)?
n3=Block()
{ return new Initializer(n0,n3); }
}
Type Type() :
{
NodeChoice n0;
PrimitiveType n1;
Name n2;
NodeListOptional n3 = new NodeListOptional();
NodeSequence n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
{
}
}
{
(
(
n1=PrimitiveType()
{ n0 = new NodeChoice(n1, 0); }
|
n2=Name()
{ n0 = new NodeChoice(n2, 1); }
)
)
(
{ n4 = new NodeSequence(2); }
n6="[" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n4.addNode(n5); }
n8="]" { n7 = JTBToolkit.makeNodeToken(n8); }
{ n4.addNode(n7); }
{ n3.addNode(n4); }
)*
{ n3.nodes.trimToSize(); }
{ return new Type(n0,n3); }
}
PrimitiveType PrimitiveType() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
NodeToken n9;
Token n10;
NodeToken n11;
Token n12;
NodeToken n13;
Token n14;
NodeToken n15;
Token n16;
{
}
}
{
(
n2="boolean" { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
n4="char" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 1); }
|
n6="byte" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n0 = new NodeChoice(n5, 2); }
|
n8="short" { n7 = JTBToolkit.makeNodeToken(n8); }
{ n0 = new NodeChoice(n7, 3); }
|
n10="int" { n9 = JTBToolkit.makeNodeToken(n10); }
{ n0 = new NodeChoice(n9, 4); }
|
n12="long" { n11 = JTBToolkit.makeNodeToken(n12); }
{ n0 = new NodeChoice(n11, 5); }
|
n14="float" { n13 = JTBToolkit.makeNodeToken(n14); }
{ n0 = new NodeChoice(n13, 6); }
|
n16="double" { n15 = JTBToolkit.makeNodeToken(n16); }
{ n0 = new NodeChoice(n15, 7); }
)
{ return new PrimitiveType(n0); }
}
ResultType ResultType() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
Type n3;
{
}
}
{
(
n2="void" { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
n3=Type()
{ n0 = new NodeChoice(n3, 1); }
)
{ return new ResultType(n0); }
}
Name Name() :
{
NodeToken n0;
Token n1;
NodeListOptional n2 = new NodeListOptional();
NodeSequence n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
{
}
}
{
n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
(
LOOKAHEAD(2)
{ n3 = new NodeSequence(2); }
n5="." { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3.addNode(n4); }
n7=<IDENTIFIER> { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3.addNode(n6); }
{ n2.addNode(n3); }
)*
{ n2.nodes.trimToSize(); }
{ return new Name(n0,n2); }
}
NameList NameList() :
{
Name n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
Name n5;
{
}
}
{
n0=Name()
(
{ n2 = new NodeSequence(2); }
n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=Name()
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new NameList(n0,n1); }
}
Expression BLOCKED EXPRESSION :
{
NodeChoice n0;
Assignment n1;
ConditionalExpression n2;
{
}
}
{
(
LOOKAHEAD(PrimaryBLOCKED EXPRESSION AssignmentOperator())
n1=Assignment()
{ n0 = new NodeChoice(n1, 0); }
|
n2=ConditionalBLOCKED EXPRESSION
{ n0 = new NodeChoice(n2, 1); }
)
{ return new Expression(n0); }
}
Assignment Assignment() :
{
PrimaryExpression n0;
AssignmentOperator n1;
Expression n2;
{
}
}
{
n0=PrimaryBLOCKED EXPRESSION
n1=AssignmentOperator()
n2=BLOCKED EXPRESSION
{ return new Assignment(n0,n1,n2); }
}
AssignmentOperator AssignmentOperator() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
NodeToken n9;
Token n10;
NodeToken n11;
Token n12;
NodeToken n13;
Token n14;
NodeToken n15;
Token n16;
NodeToken n17;
Token n18;
NodeToken n19;
Token n20;
NodeToken n21;
Token n22;
NodeToken n23;
Token n24;
{
}
}
{
(
n2="=" { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
n4="*=" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 1); }
|
n6="/=" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n0 = new NodeChoice(n5, 2); }
|
n8="%=" { n7 = JTBToolkit.makeNodeToken(n8); }
{ n0 = new NodeChoice(n7, 3); }
|
n10="+=" { n9 = JTBToolkit.makeNodeToken(n10); }
{ n0 = new NodeChoice(n9, 4); }
|
n12="-=" { n11 = JTBToolkit.makeNodeToken(n12); }
{ n0 = new NodeChoice(n11, 5); }
|
n14="<<=" { n13 = JTBToolkit.makeNodeToken(n14); }
{ n0 = new NodeChoice(n13, 6); }
|
n16=">>=" { n15 = JTBToolkit.makeNodeToken(n16); }
{ n0 = new NodeChoice(n15, 7); }
|
n18=">>>=" { n17 = JTBToolkit.makeNodeToken(n18); }
{ n0 = new NodeChoice(n17, 8); }
|
n20="&=" { n19 = JTBToolkit.makeNodeToken(n20); }
{ n0 = new NodeChoice(n19, 9); }
|
n22="^=" { n21 = JTBToolkit.makeNodeToken(n22); }
{ n0 = new NodeChoice(n21, 10); }
|
n24="|=" { n23 = JTBToolkit.makeNodeToken(n24); }
{ n0 = new NodeChoice(n23, 11); }
)
{ return new AssignmentOperator(n0); }
}
ConditionalExpression ConditionalBLOCKED EXPRESSION :
{
ConditionalOrExpression n0;
NodeOptional n1 = new NodeOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
Expression n5;
NodeToken n6;
Token n7;
ConditionalExpression n8;
{
}
}
{
n0=ConditionalOrBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(4); }
n4="?" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=BLOCKED EXPRESSION
{ n2.addNode(n5); }
n7=":" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n2.addNode(n6); }
n8=ConditionalBLOCKED EXPRESSION
{ n2.addNode(n8); }
{ n1.addNode(n2); }
)?
{ return new ConditionalExpression(n0,n1); }
}
ConditionalOrExpression ConditionalOrBLOCKED EXPRESSION :
{
ConditionalAndExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
ConditionalAndExpression n5;
{
}
}
{
n0=ConditionalAndBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="||" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=ConditionalAndBLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new ConditionalOrExpression(n0,n1); }
}
ConditionalAndExpression ConditionalAndBLOCKED EXPRESSION :
{
InclusiveOrExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
InclusiveOrExpression n5;
{
}
}
{
n0=InclusiveOrBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="&&" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=InclusiveOrBLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new ConditionalAndExpression(n0,n1); }
}
InclusiveOrExpression InclusiveOrBLOCKED EXPRESSION :
{
ExclusiveOrExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
ExclusiveOrExpression n5;
{
}
}
{
n0=ExclusiveOrBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="|" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=ExclusiveOrBLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new InclusiveOrExpression(n0,n1); }
}
ExclusiveOrExpression ExclusiveOrBLOCKED EXPRESSION :
{
AndExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
AndExpression n5;
{
}
}
{
n0=AndBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="^" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=AndBLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new ExclusiveOrExpression(n0,n1); }
}
AndExpression AndBLOCKED EXPRESSION :
{
EqualityExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
EqualityExpression n5;
{
}
}
{
n0=EqualityBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="&" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=EqualityBLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new AndExpression(n0,n1); }
}
EqualityExpression EqualityBLOCKED EXPRESSION :
{
InstanceOfExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeChoice n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
InstanceOfExpression n8;
{
}
}
{
n0=InstanceOfBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
(
(
n5="==" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3 = new NodeChoice(n4, 0); }
|
n7="!=" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3 = new NodeChoice(n6, 1); }
)
)
{ n2.addNode(n3); }
n8=InstanceOfBLOCKED EXPRESSION
{ n2.addNode(n8); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new EqualityExpression(n0,n1); }
}
InstanceOfExpression InstanceOfBLOCKED EXPRESSION :
{
RelationalExpression n0;
NodeOptional n1 = new NodeOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
Type n5;
{
}
}
{
n0=RelationalBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="instanceof" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=Type()
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)?
{ return new InstanceOfExpression(n0,n1); }
}
RelationalExpression RelationalBLOCKED EXPRESSION :
{
ShiftExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeChoice n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
ShiftExpression n12;
{
}
}
{
n0=ShiftBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
(
(
n5="<" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3 = new NodeChoice(n4, 0); }
|
n7=">" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3 = new NodeChoice(n6, 1); }
|
n9="<=" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n3 = new NodeChoice(n8, 2); }
|
n11=">=" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n3 = new NodeChoice(n10, 3); }
)
)
{ n2.addNode(n3); }
n12=ShiftBLOCKED EXPRESSION
{ n2.addNode(n12); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new RelationalExpression(n0,n1); }
}
ShiftExpression ShiftBLOCKED EXPRESSION :
{
AdditiveExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeChoice n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
AdditiveExpression n10;
{
}
}
{
n0=AdditiveBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
(
(
n5="<<" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3 = new NodeChoice(n4, 0); }
|
n7=">>" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3 = new NodeChoice(n6, 1); }
|
n9=">>>" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n3 = new NodeChoice(n8, 2); }
)
)
{ n2.addNode(n3); }
n10=AdditiveBLOCKED EXPRESSION
{ n2.addNode(n10); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new ShiftExpression(n0,n1); }
}
AdditiveExpression AdditiveBLOCKED EXPRESSION :
{
MultiplicativeExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeChoice n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
MultiplicativeExpression n8;
{
}
}
{
n0=MultiplicativeBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
(
(
n5="+" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3 = new NodeChoice(n4, 0); }
|
n7="-" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3 = new NodeChoice(n6, 1); }
)
)
{ n2.addNode(n3); }
n8=MultiplicativeBLOCKED EXPRESSION
{ n2.addNode(n8); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new AdditiveExpression(n0,n1); }
}
MultiplicativeExpression MultiplicativeBLOCKED EXPRESSION :
{
UnaryExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeChoice n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
UnaryExpression n10;
{
}
}
{
n0=UnaryBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
(
(
n5="*" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3 = new NodeChoice(n4, 0); }
|
n7="/" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3 = new NodeChoice(n6, 1); }
|
n9="%" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n3 = new NodeChoice(n8, 2); }
)
)
{ n2.addNode(n3); }
n10=UnaryBLOCKED EXPRESSION
{ n2.addNode(n10); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new MultiplicativeExpression(n0,n1); }
}
UnaryExpression UnaryBLOCKED EXPRESSION :
{
NodeChoice n0;
NodeSequence n1;
NodeChoice n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
UnaryExpression n7;
PreIncrementExpression n8;
PreDecrementExpression n9;
UnaryExpressionNotPlusMinus n10;
{
}
}
{
(
{ n1 = new NodeSequence(2); }
(
(
n4="+" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2 = new NodeChoice(n3, 0); }
|
n6="-" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n2 = new NodeChoice(n5, 1); }
)
)
{ n1.addNode(n2); }
n7=UnaryBLOCKED EXPRESSION
{ n1.addNode(n7); }
{ n0 = new NodeChoice(n1, 0); }
|
n8=PreIncrementBLOCKED EXPRESSION
{ n0 = new NodeChoice(n8, 1); }
|
n9=PreDecrementBLOCKED EXPRESSION
{ n0 = new NodeChoice(n9, 2); }
|
n10=UnaryExpressionNotPlusMinus()
{ n0 = new NodeChoice(n10, 3); }
)
{ return new UnaryExpression(n0); }
}
PreIncrementExpression PreIncrementBLOCKED EXPRESSION :
{
NodeToken n0;
Token n1;
PrimaryExpression n2;
{
}
}
{
n1="++" { n0 = JTBToolkit.makeNodeToken(n1); }
n2=PrimaryBLOCKED EXPRESSION
{ return new PreIncrementExpression(n0,n2); }
}
PreDecrementExpression PreDecrementBLOCKED EXPRESSION :
{
NodeToken n0;
Token n1;
PrimaryExpression n2;
{
}
}
{
n1="--" { n0 = JTBToolkit.makeNodeToken(n1); }
n2=PrimaryBLOCKED EXPRESSION
{ return new PreDecrementExpression(n0,n2); }
}
UnaryExpressionNotPlusMinus UnaryExpressionNotPlusMinus() :
{
NodeChoice n0;
NodeSequence n1;
NodeChoice n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
UnaryExpression n7;
CastExpression n8;
PostfixExpression n9;
{
}
}
{
(
{ n1 = new NodeSequence(2); }
(
(
n4="~" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2 = new NodeChoice(n3, 0); }
|
n6="!" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n2 = new NodeChoice(n5, 1); }
)
)
{ n1.addNode(n2); }
n7=UnaryBLOCKED EXPRESSION
{ n1.addNode(n7); }
{ n0 = new NodeChoice(n1, 0); }
|
LOOKAHEAD(CastLookahead())
n8=CastBLOCKED EXPRESSION
{ n0 = new NodeChoice(n8, 1); }
|
n9=PostfixBLOCKED EXPRESSION
{ n0 = new NodeChoice(n9, 2); }
)
{ return new UnaryExpressionNotPlusMinus(n0); }
}
CastLookahead CastLookahead() :
{
NodeChoice n0;
NodeSequence n1;
NodeToken n2;
Token n3;
PrimitiveType n4;
NodeSequence n5;
NodeToken n6;
Token n7;
Name n8;
NodeToken n9;
Token n10;
NodeToken n11;
Token n12;
NodeSequence n13;
NodeToken n14;
Token n15;
Name n16;
NodeToken n17;
Token n18;
NodeChoice n19;
NodeToken n20;
Token n21;
NodeToken n22;
Token n23;
NodeToken n24;
Token n25;
NodeToken n26;
Token n27;
NodeToken n28;
Token n29;
NodeToken n30;
Token n31;
NodeToken n32;
Token n33;
Literal n34;
{
}
}
{
(
LOOKAHEAD(2)
{ n1 = new NodeSequence(3); }
n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n4=PrimitiveType()
{ n1.addNode(n4); }
{ n0 = new NodeChoice(n1, 0); }
|
LOOKAHEAD("(" Name() "[")
{ n5 = new NodeSequence(5); }
n7="(" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n5.addNode(n6); }
n8=Name()
{ n5.addNode(n8); }
n10="[" { n9 = JTBToolkit.makeNodeToken(n10); }
{ n5.addNode(n9); }
n12="]" { n11 = JTBToolkit.makeNodeToken(n12); }
{ n5.addNode(n11); }
{ n0 = new NodeChoice(n5, 1); }
|
{ n13 = new NodeSequence(4); }
n15="(" { n14 = JTBToolkit.makeNodeToken(n15); }
{ n13.addNode(n14); }
n16=Name()
{ n13.addNode(n16); }
n18=")" { n17 = JTBToolkit.makeNodeToken(n18); }
{ n13.addNode(n17); }
(
(
n21="~" { n20 = JTBToolkit.makeNodeToken(n21); }
{ n19 = new NodeChoice(n20, 0); }
|
n23="!" { n22 = JTBToolkit.makeNodeToken(n23); }
{ n19 = new NodeChoice(n22, 1); }
|
n25="(" { n24 = JTBToolkit.makeNodeToken(n25); }
{ n19 = new NodeChoice(n24, 2); }
|
n27=<IDENTIFIER> { n26 = JTBToolkit.makeNodeToken(n27); }
{ n19 = new NodeChoice(n26, 3); }
|
n29="this" { n28 = JTBToolkit.makeNodeToken(n29); }
{ n19 = new NodeChoice(n28, 4); }
|
n31="super" { n30 = JTBToolkit.makeNodeToken(n31); }
{ n19 = new NodeChoice(n30, 5); }
|
n33="new" { n32 = JTBToolkit.makeNodeToken(n33); }
{ n19 = new NodeChoice(n32, 6); }
|
n34=Literal()
{ n19 = new NodeChoice(n34, 7); }
)
)
{ n13.addNode(n19); }
{ n0 = new NodeChoice(n13, 2); }
)
{ return new CastLookahead(n0); }
}
PostfixExpression PostfixBLOCKED EXPRESSION :
{
PrimaryExpression n0;
NodeOptional n1 = new NodeOptional();
NodeChoice n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
{
}
}
{
n0=PrimaryBLOCKED EXPRESSION
(
(
n4="++" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2 = new NodeChoice(n3, 0); }
|
n6="--" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n2 = new NodeChoice(n5, 1); }
)
{ n1.addNode(n2); }
)?
{ return new PostfixExpression(n0,n1); }
}
CastExpression CastBLOCKED EXPRESSION :
{
NodeChoice n0;
NodeSequence n1;
NodeToken n2;
Token n3;
Type n4;
NodeToken n5;
Token n6;
UnaryExpression n7;
NodeSequence n8;
NodeToken n9;
Token n10;
Type n11;
NodeToken n12;
Token n13;
UnaryExpressionNotPlusMinus n14;
{
}
}
{
(
LOOKAHEAD("(" PrimitiveType())
{ n1 = new NodeSequence(5); }
n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n4=Type()
{ n1.addNode(n4); }
n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n1.addNode(n5); }
n7=UnaryBLOCKED EXPRESSION
{ n1.addNode(n7); }
{ n0 = new NodeChoice(n1, 0); }
|
LOOKAHEAD("(" Name())
{ n8 = new NodeSequence(5); }
n10="(" { n9 = JTBToolkit.makeNodeToken(n10); }
{ n8.addNode(n9); }
n11=Type()
{ n8.addNode(n11); }
n13=")" { n12 = JTBToolkit.makeNodeToken(n13); }
{ n8.addNode(n12); }
n14=UnaryExpressionNotPlusMinus()
{ n8.addNode(n14); }
{ n0 = new NodeChoice(n8, 1); }
)
{ return new CastExpression(n0); }
}
PrimaryExpression PrimaryBLOCKED EXPRESSION :
{
PrimaryPrefix n0;
NodeListOptional n1 = new NodeListOptional();
PrimarySuffix n2;
{
}
}
{
n0=PrimaryPrefix()
(
LOOKAHEAD(2)
n2=PrimarySuffix()
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new PrimaryExpression(n0,n1); }
}
PrimaryPrefix PrimaryPrefix() :
{
NodeChoice n0;
Literal n1;
Name n2;
NodeToken n3;
Token n4;
NodeSequence n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
NodeSequence n12;
NodeToken n13;
Token n14;
Expression n15;
NodeToken n16;
Token n17;
AllocationExpression n18;
Type n19;
{
}
}
{
(
n1=Literal()
{ n0 = new NodeChoice(n1, 0); }
|
n2=Name()
{ n0 = new NodeChoice(n2, 1); }
|
n4="this" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 2); }
|
{ n5 = new NodeSequence(3); }
n7="super" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n5.addNode(n6); }
n9="." { n8 = JTBToolkit.makeNodeToken(n9); }
{ n5.addNode(n8); }
n11=<IDENTIFIER> { n10 = JTBToolkit.makeNodeToken(n11); }
{ n5.addNode(n10); }
{ n0 = new NodeChoice(n5, 3); }
|
{ n12 = new NodeSequence(3); }
n14="(" { n13 = JTBToolkit.makeNodeToken(n14); }
{ n12.addNode(n13); }
n15=BLOCKED EXPRESSION
{ n12.addNode(n15); }
n17=")" { n16 = JTBToolkit.makeNodeToken(n17); }
{ n12.addNode(n16); }
{ n0 = new NodeChoice(n12, 4); }
|
n18=AllocationBLOCKED EXPRESSION
{ n0 = new NodeChoice(n18, 5); }
|
n19=Type()
{ n0 = new NodeChoice(n19, 6); }
)
{ return new PrimaryPrefix(n0); }
}
PrimarySuffix PrimarySuffix() :
{
NodeChoice n0;
NodeSequence n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeSequence n6;
NodeToken n7;
Token n8;
NodeToken n9;
Token n10;
NodeSequence n11;
NodeToken n12;
Token n13;
AllocationExpression n14;
NodeSequence n15;
NodeToken n16;
Token n17;
Expression n18;
NodeToken n19;
Token n20;
NodeSequence n21;
NodeToken n22;
Token n23;
NodeToken n24;
Token n25;
Arguments n26;
{
}
}
{
(
LOOKAHEAD(2)
{ n1 = new NodeSequence(3); }
n3="." { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n5="this" { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1.addNode(n4); }
{ n0 = new NodeChoice(n1, 0); }
|
LOOKAHEAD(2)
{ n6 = new NodeSequence(3); }
n8="." { n7 = JTBToolkit.makeNodeToken(n8); }
{ n6.addNode(n7); }
n10="class" { n9 = JTBToolkit.makeNodeToken(n10); }
{ n6.addNode(n9); }
{ n0 = new NodeChoice(n6, 1); }
|
LOOKAHEAD(2)
{ n11 = new NodeSequence(3); }
n13="." { n12 = JTBToolkit.makeNodeToken(n13); }
{ n11.addNode(n12); }
n14=AllocationBLOCKED EXPRESSION
{ n11.addNode(n14); }
{ n0 = new NodeChoice(n11, 2); }
|
{ n15 = new NodeSequence(3); }
n17="[" { n16 = JTBToolkit.makeNodeToken(n17); }
{ n15.addNode(n16); }
n18=BLOCKED EXPRESSION
{ n15.addNode(n18); }
n20="]" { n19 = JTBToolkit.makeNodeToken(n20); }
{ n15.addNode(n19); }
{ n0 = new NodeChoice(n15, 3); }
|
{ n21 = new NodeSequence(2); }
n23="." { n22 = JTBToolkit.makeNodeToken(n23); }
{ n21.addNode(n22); }
n25=<IDENTIFIER> { n24 = JTBToolkit.makeNodeToken(n25); }
{ n21.addNode(n24); }
{ n0 = new NodeChoice(n21, 4); }
|
n26=Arguments()
{ n0 = new NodeChoice(n26, 5); }
)
{ return new PrimarySuffix(n0); }
}
Literal Literal() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
BooleanLiteral n9;
NullLiteral n10;
{
}
}
{
(
n2=<INTEGER_LITERAL> { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
n4=<FLOATING_POINT_LITERAL> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 1); }
|
n6=<CHARACTER_LITERAL> { n5 = JTBToolkit.makeNodeToken(n6); }
{ n0 = new NodeChoice(n5, 2); }
|
n8=<STRING_LITERAL> { n7 = JTBToolkit.makeNodeToken(n8); }
{ n0 = new NodeChoice(n7, 3); }
|
n9=BooleanLiteral()
{ n0 = new NodeChoice(n9, 4); }
|
n10=NullLiteral()
{ n0 = new NodeChoice(n10, 5); }
)
{ return new Literal(n0); }
}
BooleanLiteral BooleanLiteral() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
{
}
}
{
(
n2="true" { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
n4="false" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 1); }
)
{ return new BooleanLiteral(n0); }
}
NullLiteral NullLiteral() :
{
NodeToken n0;
Token n1;
{
}
}
{
n1="null" { n0 = JTBToolkit.makeNodeToken(n1); }
{ return new NullLiteral(n0); }
}
Arguments Arguments() :
{
NodeToken n0;
Token n1;
NodeOptional n2 = new NodeOptional();
ArgumentList n3;
NodeToken n4;
Token n5;
{
}
}
{
n1="(" { n0 = JTBToolkit.makeNodeToken(n1); }
(
n3=ArgumentList()
{ n2.addNode(n3); }
)?
n5=")" { n4 = JTBToolkit.makeNodeToken(n5); }
{ return new Arguments(n0,n2,n4); }
}
ArgumentList ArgumentList() :
{
Expression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
Expression n5;
{
}
}
{
n0=BLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=BLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new ArgumentList(n0,n1); }
}
AllocationExpression AllocationBLOCKED EXPRESSION :
{
NodeChoice n0;
NodeSequence n1;
NodeToken n2;
Token n3;
PrimitiveType n4;
ArrayDimensions n5;
NodeOptional n6 = new NodeOptional();
ArrayInitializer n7;
NodeSequence n8;
NodeToken n9;
Token n10;
Name n11;
NodeChoice n12;
NodeSequence n13;
ArrayDimensions n14;
NodeOptional n15 = new NodeOptional();
ArrayInitializer n16;
NodeSequence n17;
Arguments n18;
NodeOptional n19 = new NodeOptional();
ClassBody n20;
{
}
}
{
(
LOOKAHEAD(2)
{ n1 = new NodeSequence(5); }
n3="new" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n4=PrimitiveType()
{ n1.addNode(n4); }
n5=ArrayDimensions()
{ n1.addNode(n5); }
(
n7=ArrayInitializer()
{ n6.addNode(n7); }
)?
{ n1.addNode(n6); }
{ n0 = new NodeChoice(n1, 0); }
|
{ n8 = new NodeSequence(3); }
n10="new" { n9 = JTBToolkit.makeNodeToken(n10); }
{ n8.addNode(n9); }
n11=Name()
{ n8.addNode(n11); }
(
(
{ n13 = new NodeSequence(2); }
n14=ArrayDimensions()
{ n13.addNode(n14); }
(
n16=ArrayInitializer()
{ n15.addNode(n16); }
)?
{ n13.addNode(n15); }
{ n12 = new NodeChoice(n13, 0); }
|
{ n17 = new NodeSequence(2); }
n18=Arguments()
{ n17.addNode(n18); }
(
n20=ClassBody()
{ n19.addNode(n20); }
)?
{ n17.addNode(n19); }
{ n12 = new NodeChoice(n17, 1); }
)
)
{ n8.addNode(n12); }
{ n0 = new NodeChoice(n8, 1); }
)
{ return new AllocationExpression(n0); }
}
ArrayDimensions ArrayDimensions() :
{
NodeList n0 = new NodeList();
NodeSequence n1;
NodeToken n2;
Token n3;
Expression n4;
NodeToken n5;
Token n6;
NodeListOptional n7 = new NodeListOptional();
NodeSequence n8;
NodeToken n9;
Token n10;
NodeToken n11;
Token n12;
{
}
}
{
(
LOOKAHEAD(2)
{ n1 = new NodeSequence(3); }
n3="[" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
(
n4=BLOCKED EXPRESSION{ n1.addNode(n4); }
)?
n6="]" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n1.addNode(n5); }
{ n0.addNode(n1); }
)+
{ n0.nodes.trimToSize(); }
(
LOOKAHEAD(2)
{ n8 = new NodeSequence(2); }
n10="[" { n9 = JTBToolkit.makeNodeToken(n10); }
{ n8.addNode(n9); }
n12="]" { n11 = JTBToolkit.makeNodeToken(n12); }
{ n8.addNode(n11); }
{ n7.addNode(n8); }
)*
{ n7.nodes.trimToSize(); }
{ return new ArrayDimensions(n0,n7); }
}
Statement Statement() :
{
NodeChoice n0;
LabeledStatement n1;
Block n2;
EmptyStatement n3;
NodeSequence n4;
StatementExpression n5;
NodeToken n6;
Token n7;
SwitchStatement n8;
IfStatement n9;
WhileStatement n10;
DoStatement n11;
ForStatement n12;
BreakStatement n13;
ContinueStatement n14;
ReturnStatement n15;
ThrowStatement n16;
SynchronizedStatement n17;
TryStatement n18;
{
}
}
{
(
LOOKAHEAD(2)
n1=LabeledStatement()
{ n0 = new NodeChoice(n1, 0); }
|
n2=Block()
{ n0 = new NodeChoice(n2, 1); }
|
n3=EmptyStatement()
{ n0 = new NodeChoice(n3, 2); }
|
{ n4 = new NodeSequence(2); }
n5=StatementBLOCKED EXPRESSION
{ n4.addNode(n5); }
n7=";" { n6 = JTBToolkit.makeNodeToken(n7); }
{ n4.addNode(n6); }
{ n0 = new NodeChoice(n4, 3); }
|
n8=SwitchStatement()
{ n0 = new NodeChoice(n8, 4); }
|
n9=IfStatement()
{ n0 = new NodeChoice(n9, 5); }
|
n10=WhileStatement()
{ n0 = new NodeChoice(n10, 6); }
|
n11=DoStatement()
{ n0 = new NodeChoice(n11, 7); }
|
n12=ForStatement()
{ n0 = new NodeChoice(n12, 8); }
|
n13=BreakStatement()
{ n0 = new NodeChoice(n13, 9); }
|
n14=ContinueStatement()
{ n0 = new NodeChoice(n14, 10); }
|
n15=ReturnStatement()
{ n0 = new NodeChoice(n15, 11); }
|
n16=ThrowStatement()
{ n0 = new NodeChoice(n16, 12); }
|
n17=SynchronizedStatement()
{ n0 = new NodeChoice(n17, 13); }
|
n18=TryStatement()
{ n0 = new NodeChoice(n18, 14); }
)
{ return new Statement(n0); }
}
LabeledStatement LabeledStatement() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
Statement n4;
{
}
}
{
n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
n3=":" { n2 = JTBToolkit.makeNodeToken(n3); }
n4=Statement()
{ return new LabeledStatement(n0,n2,n4); }
}
Block Block() :
{
NodeToken n0;
Token n1;
NodeListOptional n2 = new NodeListOptional();
BlockStatement n3;
NodeToken n4;
Token n5;
{
}
}
{
n1="{" { n0 = JTBToolkit.makeNodeToken(n1); }
(
n3=BlockStatement()
{ n2.addNode(n3); }
)*
{ n2.nodes.trimToSize(); }
n5="}" { n4 = JTBToolkit.makeNodeToken(n5); }
{ return new Block(n0,n2,n4); }
}
BlockStatement BlockStatement() :
{
NodeChoice n0;
NodeSequence n1;
LocalVariableDeclaration n2;
NodeToken n3;
Token n4;
Statement n5;
UnmodifiedClassDeclaration n6;
{
}
}
{
(
LOOKAHEAD([ "final" ] Type() <IDENTIFIER>)
{ n1 = new NodeSequence(3); }
n2=LocalVariableDeclaration()
{ n1.addNode(n2); }
n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
{ n1.addNode(n3); }
{ n0 = new NodeChoice(n1, 0); }
|
n5=Statement()
{ n0 = new NodeChoice(n5, 1); }
|
n6=UnmodifiedClassDeclaration()
{ n0 = new NodeChoice(n6, 2); }
)
{ return new BlockStatement(n0); }
}
LocalVariableDeclaration LocalVariableDeclaration() :
{
NodeOptional n0 = new NodeOptional();
NodeToken n1;
Token n2;
Type n3;
VariableDeclarator n4;
NodeListOptional n5 = new NodeListOptional();
NodeSequence n6;
NodeToken n7;
Token n8;
VariableDeclarator n9;
{
}
}
{
(
n2="final" { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0.addNode(n1); }
)?
n3=Type()
n4=VariableDeclarator()
(
{ n6 = new NodeSequence(2); }
n8="," { n7 = JTBToolkit.makeNodeToken(n8); }
{ n6.addNode(n7); }
n9=VariableDeclarator()
{ n6.addNode(n9); }
{ n5.addNode(n6); }
)*
{ n5.nodes.trimToSize(); }
{ return new LocalVariableDeclaration(n0,n3,n4,n5); }
}
EmptyStatement EmptyStatement() :
{
NodeToken n0;
Token n1;
{
}
}
{
n1=";" { n0 = JTBToolkit.makeNodeToken(n1); }
{ return new EmptyStatement(n0); }
}
StatementExpression StatementBLOCKED EXPRESSION :
{
NodeChoice n0;
PreIncrementExpression n1;
PreDecrementExpression n2;
Assignment n3;
PostfixExpression n4;
{
}
}
{
(
n1=PreIncrementBLOCKED EXPRESSION
{ n0 = new NodeChoice(n1, 0); }
|
n2=PreDecrementBLOCKED EXPRESSION
{ n0 = new NodeChoice(n2, 1); }
|
LOOKAHEAD(PrimaryBLOCKED EXPRESSION AssignmentOperator())
n3=Assignment()
{ n0 = new NodeChoice(n3, 2); }
|
n4=PostfixBLOCKED EXPRESSION
{ n0 = new NodeChoice(n4, 3); }
)
{ return new StatementExpression(n0); }
}
SwitchStatement SwitchStatement() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
Expression n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
NodeListOptional n9 = new NodeListOptional();
NodeSequence n10;
SwitchLabel n11;
NodeListOptional n12;
BlockStatement n13;
NodeToken n14;
Token n15;
{
}
}
{
n1="switch" { n0 = JTBToolkit.makeNodeToken(n1); }
n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
n4=BLOCKED EXPRESSION
n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
n8="{" { n7 = JTBToolkit.makeNodeToken(n8); }
(
{ n12 = new NodeListOptional(); }
{ n10 = new NodeSequence(2); }
n11=SwitchLabel()
{ n10.addNode(n11); }
(
n13=BlockStatement()
{ n12.addNode(n13); }
)*
{ n12.nodes.trimToSize(); }
{ n10.addNode(n12); }
{ n9.addNode(n10); }
)*
{ n9.nodes.trimToSize(); }
n15="}" { n14 = JTBToolkit.makeNodeToken(n15); }
{ return new SwitchStatement(n0,n2,n4,n5,n7,n9,n14); }
}
SwitchLabel SwitchLabel() :
{
NodeChoice n0;
NodeSequence n1;
NodeToken n2;
Token n3;
Expression n4;
NodeToken n5;
Token n6;
NodeSequence n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
{
}
}
{
(
{ n1 = new NodeSequence(3); }
n3="case" { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n4=BLOCKED EXPRESSION
{ n1.addNode(n4); }
n6=":" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n1.addNode(n5); }
{ n0 = new NodeChoice(n1, 0); }
|
{ n7 = new NodeSequence(2); }
n9="default" { n8 = JTBToolkit.makeNodeToken(n9); }
{ n7.addNode(n8); }
n11=":" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n7.addNode(n10); }
{ n0 = new NodeChoice(n7, 1); }
)
{ return new SwitchLabel(n0); }
}
IfStatement IfStatement() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
Expression n4;
NodeToken n5;
Token n6;
Statement n7;
NodeOptional n8 = new NodeOptional();
NodeSequence n9;
NodeToken n10;
Token n11;
Statement n12;
{
}
}
{
n1="if" { n0 = JTBToolkit.makeNodeToken(n1); }
n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
n4=BLOCKED EXPRESSION
n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
n7=Statement()
(
LOOKAHEAD(1)
{ n9 = new NodeSequence(2); }
n11="else" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n9.addNode(n10); }
n12=Statement()
{ n9.addNode(n12); }
{ n8.addNode(n9); }
)?
{ return new IfStatement(n0,n2,n4,n5,n7,n8); }
}
WhileStatement WhileStatement() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
Expression n4;
NodeToken n5;
Token n6;
Statement n7;
{
}
}
{
n1="while" { n0 = JTBToolkit.makeNodeToken(n1); }
n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
n4=BLOCKED EXPRESSION
n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
n7=Statement()
{ return new WhileStatement(n0,n2,n4,n5,n7); }
}
DoStatement DoStatement() :
{
NodeToken n0;
Token n1;
Statement n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
Expression n7;
NodeToken n8;
Token n9;
NodeToken n10;
Token n11;
{
}
}
{
n1="do" { n0 = JTBToolkit.makeNodeToken(n1); }
n2=Statement()
n4="while" { n3 = JTBToolkit.makeNodeToken(n4); }
n6="(" { n5 = JTBToolkit.makeNodeToken(n6); }
n7=BLOCKED EXPRESSION
n9=")" { n8 = JTBToolkit.makeNodeToken(n9); }
n11=";" { n10 = JTBToolkit.makeNodeToken(n11); }
{ return new DoStatement(n0,n2,n3,n5,n7,n8,n10); }
}
ForStatement ForStatement() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
NodeOptional n4 = new NodeOptional();
ForInit n5;
NodeToken n6;
Token n7;
NodeOptional n8 = new NodeOptional();
Expression n9;
NodeToken n10;
Token n11;
NodeOptional n12 = new NodeOptional();
ForUpdate n13;
NodeToken n14;
Token n15;
Statement n16;
{
}
}
{
n1="for" { n0 = JTBToolkit.makeNodeToken(n1); }
n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
(
n5=ForInit()
{ n4.addNode(n5); }
)?
n7=";" { n6 = JTBToolkit.makeNodeToken(n7); }
(
n9=BLOCKED EXPRESSION
{ n8.addNode(n9); }
)?
n11=";" { n10 = JTBToolkit.makeNodeToken(n11); }
(
n13=ForUpdate()
{ n12.addNode(n13); }
)?
n15=")" { n14 = JTBToolkit.makeNodeToken(n15); }
n16=Statement()
{ return new ForStatement(n0,n2,n4,n6,n8,n10,n12,n14,n16); }
}
ForInit ForInit() :
{
NodeChoice n0;
LocalVariableDeclaration n1;
StatementExpressionList n2;
{
}
}
{
(
LOOKAHEAD([ "final" ] Type() <IDENTIFIER>)
n1=LocalVariableDeclaration()
{ n0 = new NodeChoice(n1, 0); }
|
n2=StatementExpressionList()
{ n0 = new NodeChoice(n2, 1); }
)
{ return new ForInit(n0); }
}
StatementExpressionList StatementExpressionList() :
{
StatementExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
StatementExpression n5;
{
}
}
{
n0=StatementBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=StatementBLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new StatementExpressionList(n0,n1); }
}
ForUpdate ForUpdate() :
{
StatementExpressionList n0;
{
}
}
{
n0=StatementExpressionList()
{ return new ForUpdate(n0); }
}
BreakStatement BreakStatement() :
{
NodeToken n0;
Token n1;
NodeOptional n2 = new NodeOptional();
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
{
}
}
{
n1="break" { n0 = JTBToolkit.makeNodeToken(n1); }
(
n4=<IDENTIFIER> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
)?
n6=";" { n5 = JTBToolkit.makeNodeToken(n6); }
{ return new BreakStatement(n0,n2,n5); }
}
ContinueStatement ContinueStatement() :
{
NodeToken n0;
Token n1;
NodeOptional n2 = new NodeOptional();
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
{
}
}
{
n1="continue" { n0 = JTBToolkit.makeNodeToken(n1); }
(
n4=<IDENTIFIER> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
)?
n6=";" { n5 = JTBToolkit.makeNodeToken(n6); }
{ return new ContinueStatement(n0,n2,n5); }
}
ReturnStatement ReturnStatement() :
{
NodeToken n0;
Token n1;
NodeOptional n2 = new NodeOptional();
Expression n3;
NodeToken n4;
Token n5;
{
}
}
{
n1="return" { n0 = JTBToolkit.makeNodeToken(n1); }
(
n3=BLOCKED EXPRESSION
{ n2.addNode(n3); }
)?
n5=";" { n4 = JTBToolkit.makeNodeToken(n5); }
{ return new ReturnStatement(n0,n2,n4); }
}
ThrowStatement ThrowStatement() :
{
NodeToken n0;
Token n1;
Expression n2;
NodeToken n3;
Token n4;
{
}
}
{
n1="throw" { n0 = JTBToolkit.makeNodeToken(n1); }
n2=BLOCKED EXPRESSION
n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
{ return new ThrowStatement(n0,n2,n3); }
}
SynchronizedStatement SynchronizedStatement() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
Expression n4;
NodeToken n5;
Token n6;
Block n7;
{
}
}
{
n1="synchronized" { n0 = JTBToolkit.makeNodeToken(n1); }
n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
n4=BLOCKED EXPRESSION
n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
n7=Block()
{ return new SynchronizedStatement(n0,n2,n4,n5,n7); }
}
TryStatement TryStatement() :
{
NodeToken n0;
Token n1;
Block n2;
NodeListOptional n3 = new NodeListOptional();
NodeSequence n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
FormalParameter n9;
NodeToken n10;
Token n11;
Block n12;
NodeOptional n13 = new NodeOptional();
NodeSequence n14;
NodeToken n15;
Token n16;
Block n17;
{
}
}
{
n1="try" { n0 = JTBToolkit.makeNodeToken(n1); }
n2=Block()
(
{ n4 = new NodeSequence(5); }
n6="catch" { n5 = JTBToolkit.makeNodeToken(n6); }
{ n4.addNode(n5); }
n8="(" { n7 = JTBToolkit.makeNodeToken(n8); }
{ n4.addNode(n7); }
n9=FormalParameter()
{ n4.addNode(n9); }
n11=")" { n10 = JTBToolkit.makeNodeToken(n11); }
{ n4.addNode(n10); }
n12=Block()
{ n4.addNode(n12); }
{ n3.addNode(n4); }
)*
{ n3.nodes.trimToSize(); }
(
{ n14 = new NodeSequence(2); }
n16="finally" { n15 = JTBToolkit.makeNodeToken(n16); }
{ n14.addNode(n15); }
n17=Block()
{ n14.addNode(n17); }
{ n13.addNode(n14); }
)?
{ return new TryStatement(n0,n2,n3,n13); }
}
TOKEN :
{
<EOF_TK: "EOF">
| <IGNORE_CASE_TK: "IGNORE_CASE">
| <JAVACODE_TK: "JAVACODE">
| <LOOKAHEAD_TK: "LOOKAHEAD">
| <MORE_TK: "MORE">
| <OPTIONS_TK: "options">
| <PARSER_BEGIN_TK: "PARSER_BEGIN">
| <PARSER_END_TK: "PARSER_END">
| <SKIP_TK: "SKIP">
| <SPECIAL_TOKEN_TK: "SPECIAL_TOKEN">
| <TOKEN_TK: "TOKEN">
| <TOKEN_MGR_DECLS_TK: "TOKEN_MGR_DECLS">
}
TOKEN :
{
<IDENTIFIER: <LETTER> (<LETTER> | <DIGIT>)* >
}
TOKEN :
{
<POUND: "#">
}
JavaCCInput JavaCCInput() :
{
JavaCCOptions n0;
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
CompilationUnit n9;
NodeToken n10;
Token n11;
NodeToken n12;
Token n13;
NodeToken n14;
Token n15;
NodeToken n16;
Token n17;
NodeListOptional n18 = new NodeListOptional();
Production n19;
NodeToken n20;
Token n21;
{
}
}
{
n0=JavaCCOptions()
n2=<PARSER_BEGIN_TK> { n1 = JTBToolkit.makeNodeToken(n2); }
n4=<LPAREN> { n3 = JTBToolkit.makeNodeToken(n4); }
n6=<IDENTIFIER> { n5 = JTBToolkit.makeNodeToken(n6); }
n8=<RPAREN> { n7 = JTBToolkit.makeNodeToken(n8); }
n9=CompilationUnit()
n11=<PARSER_END_TK> { n10 = JTBToolkit.makeNodeToken(n11); }
n13=<LPAREN> { n12 = JTBToolkit.makeNodeToken(n13); }
n15=<IDENTIFIER> { n14 = JTBToolkit.makeNodeToken(n15); }
n17=<RPAREN> { n16 = JTBToolkit.makeNodeToken(n17); }
(
n19=Production()
{ n18.addNode(n19); }
)*
{ n18.nodes.trimToSize(); }
n21=<EOF> { n20 = JTBToolkit.makeNodeToken(n21); }
{ return new JavaCCInput(n0,n1,n3,n5,n7,n9,n10,n12,n14,n16,n18,n20); }
}
JavaCCOptions JavaCCOptions() :
{
NodeOptional n0 = new NodeOptional();
NodeSequence n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeListOptional n6;
OptionBinding n7;
NodeToken n8;
Token n9;
{
}
}
{
(
{ n6 = new NodeListOptional(); }
{ n1 = new NodeSequence(4); }
n3=<OPTIONS_TK> { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n5=<LBRACE> { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1.addNode(n4); }
(
n7=OptionBinding()
{ n6.addNode(n7); }
)*
{ n6.nodes.trimToSize(); }
{ n1.addNode(n6); }
n9=<RBRACE> { n8 = JTBToolkit.makeNodeToken(n9); }
{ n1.addNode(n8); }
{ n0.addNode(n1); }
)?
{ return new JavaCCOptions(n0); }
}
OptionBinding OptionBinding() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
NodeToken n9;
Token n10;
NodeChoice n11;
NodeToken n12;
Token n13;
BooleanLiteral n14;
NodeToken n15;
Token n16;
NodeToken n17;
Token n18;
{
}
}
{
(
(
n2=<IDENTIFIER> { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
n4=<LOOKAHEAD_TK> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 1); }
|
n6=<IGNORE_CASE_TK> { n5 = JTBToolkit.makeNodeToken(n6); }
{ n0 = new NodeChoice(n5, 2); }
|
n8=<STATIC> { n7 = JTBToolkit.makeNodeToken(n8); }
{ n0 = new NodeChoice(n7, 3); }
)
)
n10=<ASSIGN> { n9 = JTBToolkit.makeNodeToken(n10); }
(
(
n13=<INTEGER_LITERAL> { n12 = JTBToolkit.makeNodeToken(n13); }
{ n11 = new NodeChoice(n12, 0); }
|
n14=BooleanLiteral()
{ n11 = new NodeChoice(n14, 1); }
|
n16=<STRING_LITERAL> { n15 = JTBToolkit.makeNodeToken(n16); }
{ n11 = new NodeChoice(n15, 2); }
)
)
n18=<SEMICOLON> { n17 = JTBToolkit.makeNodeToken(n18); }
{ return new OptionBinding(n0,n9,n11,n17); }
}
Production Production() :
{
NodeChoice n0;
JavaCodeProduction n1;
RegularExprProduction n2;
BNFProduction n3;
TokenManagerDecls n4;
{
}
}
{
(
n1=JavaCodeProduction()
{ n0 = new NodeChoice(n1, 0); }
|
n2=RegularExprProduction()
{ n0 = new NodeChoice(n2, 1); }
|
n3=BNFProduction()
{ n0 = new NodeChoice(n3, 2); }
|
n4=TokenManagerDecls()
{ n0 = new NodeChoice(n4, 3); }
)
{ return new Production(n0); }
}
JavaCodeProduction JavaCodeProduction() :
{
NodeToken n0;
Token n1;
ResultType n2;
NodeToken n3;
Token n4;
FormalParameters n5;
Block n6;
{
}
}
{
n1=<JAVACODE_TK> { n0 = JTBToolkit.makeNodeToken(n1); }
n2=ResultType()
n4=<IDENTIFIER> { n3 = JTBToolkit.makeNodeToken(n4); }
n5=FormalParameters()
n6=Block()
{ return new JavaCodeProduction(n0,n2,n3,n5,n6); }
}
BNFProduction BNFProduction() :
{
ResultType n0;
NodeToken n1;
Token n2;
FormalParameters n3;
NodeToken n4;
Token n5;
Block n6;
NodeToken n7;
Token n8;
ExpansionChoices n9;
NodeToken n10;
Token n11;
{
}
}
{
n0=ResultType()
n2=<IDENTIFIER> { n1 = JTBToolkit.makeNodeToken(n2); }
n3=FormalParameters()
n5=<COLON> { n4 = JTBToolkit.makeNodeToken(n5); }
n6=Block()
n8=<LBRACE> { n7 = JTBToolkit.makeNodeToken(n8); }
n9=ExpansionChoices()
n11=<RBRACE> { n10 = JTBToolkit.makeNodeToken(n11); }
{ return new BNFProduction(n0,n1,n3,n4,n6,n7,n9,n10); }
}
RegularExprProduction RegularExprProduction() :
{
NodeOptional n0 = new NodeOptional();
LexicalStateList n1;
RegExprKind n2;
NodeOptional n3 = new NodeOptional();
NodeSequence n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
NodeToken n9;
Token n10;
NodeToken n11;
Token n12;
NodeToken n13;
Token n14;
RegExprSpec n15;
NodeListOptional n16 = new NodeListOptional();
NodeSequence n17;
NodeToken n18;
Token n19;
RegExprSpec n20;
NodeToken n21;
Token n22;
{
}
}
{
(
n1=LexicalStateList()
{ n0.addNode(n1); }
)?
n2=RegExprKind()
(
{ n4 = new NodeSequence(3); }
n6=<LBRACKET> { n5 = JTBToolkit.makeNodeToken(n6); }
{ n4.addNode(n5); }
n8=<IGNORE_CASE_TK> { n7 = JTBToolkit.makeNodeToken(n8); }
{ n4.addNode(n7); }
n10=<RBRACKET> { n9 = JTBToolkit.makeNodeToken(n10); }
{ n4.addNode(n9); }
{ n3.addNode(n4); }
)?
n12=<COLON> { n11 = JTBToolkit.makeNodeToken(n12); }
n14=<LBRACE> { n13 = JTBToolkit.makeNodeToken(n14); }
n15=RegExprSpec()
(
{ n17 = new NodeSequence(2); }
n19=<BIT_OR> { n18 = JTBToolkit.makeNodeToken(n19); }
{ n17.addNode(n18); }
n20=RegExprSpec()
{ n17.addNode(n20); }
{ n16.addNode(n17); }
)*
{ n16.nodes.trimToSize(); }
n22=<RBRACE> { n21 = JTBToolkit.makeNodeToken(n22); }
{ return new RegularExprProduction(n0,n2,n3,n11,n13,n15,n16,n21); }
}
TokenManagerDecls TokenManagerDecls() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
ClassBody n4;
{
}
}
{
n1=<TOKEN_MGR_DECLS_TK> { n0 = JTBToolkit.makeNodeToken(n1); }
n3=<COLON> { n2 = JTBToolkit.makeNodeToken(n3); }
n4=ClassBody()
{ return new TokenManagerDecls(n0,n2,n4); }
}
LexicalStateList LexicalStateList() :
{
NodeChoice n0;
NodeSequence n1;
NodeToken n2;
Token n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeSequence n8;
NodeToken n9;
Token n10;
NodeToken n11;
Token n12;
NodeListOptional n13 = new NodeListOptional();
NodeSequence n14;
NodeToken n15;
Token n16;
NodeToken n17;
Token n18;
NodeToken n19;
Token n20;
{
}
}
{
(
LOOKAHEAD(2)
{ n1 = new NodeSequence(4); }
n3=<LT> { n2 = JTBToolkit.makeNodeToken(n3); }
{ n1.addNode(n2); }
n5=<STAR> { n4 = JTBToolkit.makeNodeToken(n5); }
{ n1.addNode(n4); }
n7=<GT> { n6 = JTBToolkit.makeNodeToken(n7); }
{ n1.addNode(n6); }
{ n0 = new NodeChoice(n1, 0); }
|
{ n8 = new NodeSequence(4); }
n10=<LT> { n9 = JTBToolkit.makeNodeToken(n10); }
{ n8.addNode(n9); }
n12=<IDENTIFIER> { n11 = JTBToolkit.makeNodeToken(n12); }
{ n8.addNode(n11); }
(
{ n14 = new NodeSequence(2); }
n16=<COMMA> { n15 = JTBToolkit.makeNodeToken(n16); }
{ n14.addNode(n15); }
n18=<IDENTIFIER> { n17 = JTBToolkit.makeNodeToken(n18); }
{ n14.addNode(n17); }
{ n13.addNode(n14); }
)*
{ n13.nodes.trimToSize(); }
{ n8.addNode(n13); }
n20=<GT> { n19 = JTBToolkit.makeNodeToken(n20); }
{ n8.addNode(n19); }
{ n0 = new NodeChoice(n8, 1); }
)
{ return new LexicalStateList(n0); }
}
RegExprKind RegExprKind() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
{
}
}
{
(
n2=<TOKEN_TK> { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
n4=<SPECIAL_TOKEN_TK> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n0 = new NodeChoice(n3, 1); }
|
n6=<SKIP_TK> { n5 = JTBToolkit.makeNodeToken(n6); }
{ n0 = new NodeChoice(n5, 2); }
|
n8=<MORE_TK> { n7 = JTBToolkit.makeNodeToken(n8); }
{ n0 = new NodeChoice(n7, 3); }
)
{ return new RegExprKind(n0); }
}
RegExprSpec RegExprSpec() :
{
RegularExpression n0;
NodeOptional n1 = new NodeOptional();
Block n2;
NodeOptional n3 = new NodeOptional();
NodeSequence n4;
NodeToken n5;
Token n6;
NodeToken n7;
Token n8;
{
}
}
{
n0=RegularBLOCKED EXPRESSION
(
n2=Block()
{ n1.addNode(n2); }
)?
(
{ n4 = new NodeSequence(2); }
n6=<COLON> { n5 = JTBToolkit.makeNodeToken(n6); }
{ n4.addNode(n5); }
n8=<IDENTIFIER> { n7 = JTBToolkit.makeNodeToken(n8); }
{ n4.addNode(n7); }
{ n3.addNode(n4); }
)?
{ return new RegExprSpec(n0,n1,n3); }
}
ExpansionChoices ExpansionChoices() :
{
Expansion n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
Expansion n5;
{
}
}
{
n0=Expansion()
(
{ n2 = new NodeSequence(2); }
n4=<BIT_OR> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=Expansion()
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new ExpansionChoices(n0,n1); }
}
Expansion Expansion() :
{
NodeListOptional n0 = new NodeListOptional();
ExpansionUnit n1;
{
}
}
{
(
LOOKAHEAD(ExpansionUnit())
n1=ExpansionUnit()
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
{ return new Expansion(n0); }
}
ExpansionUnit ExpansionUnit() :
{
NodeChoice n0;
LocalLookahead n1;
Block n2;
NodeSequence n3;
NodeToken n4;
Token n5;
ExpansionChoices n6;
NodeToken n7;
Token n8;
NodeOptional n9 = new NodeOptional();
NodeChoice n10;
NodeToken n11;
Token n12;
NodeToken n13;
Token n14;
NodeToken n15;
Token n16;
NodeSequence n17;
NodeToken n18;
Token n19;
ExpansionChoices n20;
NodeToken n21;
Token n22;
NodeSequence n23;
NodeOptional n24 = new NodeOptional();
NodeSequence n25;
PrimaryExpression n26;
NodeToken n27;
Token n28;
ExpansionUnitTerm n29;
{
}
}
{
(
n1=LocalLookahead()
{ n0 = new NodeChoice(n1, 0); }
|
n2=Block()
{ n0 = new NodeChoice(n2, 1); }
|
LOOKAHEAD(3)
{ n3 = new NodeSequence(5); }
n5=<LPAREN> { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3.addNode(n4); }
n6=ExpansionChoices()
{ n3.addNode(n6); }
n8=<RPAREN> { n7 = JTBToolkit.makeNodeToken(n8); }
{ n3.addNode(n7); }
(
(
n12=<PLUS> { n11 = JTBToolkit.makeNodeToken(n12); }
{ n10 = new NodeChoice(n11, 0); }
|
n14=<STAR> { n13 = JTBToolkit.makeNodeToken(n14); }
{ n10 = new NodeChoice(n13, 1); }
|
n16=<HOOK> { n15 = JTBToolkit.makeNodeToken(n16); }
{ n10 = new NodeChoice(n15, 2); }
)
{ n9.addNode(n10); }
)?
{ n3.addNode(n9); }
{ n0 = new NodeChoice(n3, 2); }
|
{ n17 = new NodeSequence(3); }
n19=<LBRACKET> { n18 = JTBToolkit.makeNodeToken(n19); }
{ n17.addNode(n18); }
n20=ExpansionChoices()
{ n17.addNode(n20); }
n22=<RBRACKET> { n21 = JTBToolkit.makeNodeToken(n22); }
{ n17.addNode(n21); }
{ n0 = new NodeChoice(n17, 3); }
|
{ n23 = new NodeSequence(2); }
(
LOOKAHEAD(2000000000)
{ n25 = new NodeSequence(2); }
n26=PrimaryBLOCKED EXPRESSION
{ n25.addNode(n26); }
n28=<ASSIGN> { n27 = JTBToolkit.makeNodeToken(n28); }
{ n25.addNode(n27); }
{ n24.addNode(n25); }
)?
{ n23.addNode(n24); }
n29=ExpansionUnitTerm()
{ n23.addNode(n29); }
{ n0 = new NodeChoice(n23, 4); }
)
{ return new ExpansionUnit(n0); }
}
ExpansionUnitTerm ExpansionUnitTerm() :
{
NodeChoice n0;
RegularExpression n1;
NodeSequence n2;
NodeToken n3;
Token n4;
Arguments n5;
{
}
}
{
(
n1=RegularBLOCKED EXPRESSION
{ n0 = new NodeChoice(n1, 0); }
|
{ n2 = new NodeSequence(2); }
n4=<IDENTIFIER> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=Arguments()
{ n2.addNode(n5); }
{ n0 = new NodeChoice(n2, 1); }
)
{ return new ExpansionUnitTerm(n0); }
}
LocalLookahead LocalLookahead() :
{
NodeToken n0;
Token n1;
NodeToken n2;
Token n3;
NodeOptional n4 = new NodeOptional();
NodeToken n5;
Token n6;
NodeOptional n7 = new NodeOptional();
NodeToken n8;
Token n9;
ExpansionChoices n10;
NodeOptional n11 = new NodeOptional();
NodeToken n12;
Token n13;
NodeOptional n14 = new NodeOptional();
NodeSequence n15;
NodeToken n16;
Token n17;
Expression n18;
NodeToken n19;
Token n20;
NodeToken n21;
Token n22;
{
}
}
{
n1=<LOOKAHEAD_TK> { n0 = JTBToolkit.makeNodeToken(n1); }
n3=<LPAREN> { n2 = JTBToolkit.makeNodeToken(n3); }
(
LOOKAHEAD(2)
n6=<INTEGER_LITERAL> { n5 = JTBToolkit.makeNodeToken(n6); }
{ n4.addNode(n5); }
)?
(
LOOKAHEAD(2)
n9=<COMMA> { n8 = JTBToolkit.makeNodeToken(n9); }
{ n7.addNode(n8); }
)?
n10=ExpansionChoices()
(
n13=<COMMA> { n12 = JTBToolkit.makeNodeToken(n13); }
{ n11.addNode(n12); }
)?
(
{ n15 = new NodeSequence(3); }
n17=<LBRACE> { n16 = JTBToolkit.makeNodeToken(n17); }
{ n15.addNode(n16); }
n18=BLOCKED EXPRESSION
{ n15.addNode(n18); }
n20=<RBRACE> { n19 = JTBToolkit.makeNodeToken(n20); }
{ n15.addNode(n19); }
{ n14.addNode(n15); }
)?
n22=<RPAREN> { n21 = JTBToolkit.makeNodeToken(n22); }
{ return new LocalLookahead(n0,n2,n4,n7,n10,n11,n14,n21); }
}
RegularExpression RegularBLOCKED EXPRESSION :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeSequence n3;
NodeToken n4;
Token n5;
NodeOptional n6 = new NodeOptional();
NodeSequence n7;
NodeOptional n8;
NodeToken n9;
Token n10;
NodeToken n11;
Token n12;
NodeToken n13;
Token n14;
ComplexRegularExpressionChoices n15;
NodeToken n16;
Token n17;
NodeSequence n18;
NodeToken n19;
Token n20;
NodeToken n21;
Token n22;
NodeToken n23;
Token n24;
NodeSequence n25;
NodeToken n26;
Token n27;
NodeToken n28;
Token n29;
NodeToken n30;
Token n31;
{
}
}
{
(
n2=<STRING_LITERAL> { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
LOOKAHEAD(3)
{ n3 = new NodeSequence(5); }
n5=<LT> { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3.addNode(n4); }
(
{ n8 = new NodeOptional(); }
{ n7 = new NodeSequence(3); }
(
n10=<POUND> { n9 = JTBToolkit.makeNodeToken(n10); }
{ n8.addNode(n9); }
)?
{ n7.addNode(n8); }
n12=<IDENTIFIER> { n11 = JTBToolkit.makeNodeToken(n12); }
{ n7.addNode(n11); }
n14=<COLON> { n13 = JTBToolkit.makeNodeToken(n14); }
{ n7.addNode(n13); }
{ n6.addNode(n7); }
)?
{ n3.addNode(n6); }
n15=ComplexRegularExpressionChoices()
{ n3.addNode(n15); }
n17=<GT> { n16 = JTBToolkit.makeNodeToken(n17); }
{ n3.addNode(n16); }
{ n0 = new NodeChoice(n3, 1); }
|
LOOKAHEAD(2)
{ n18 = new NodeSequence(4); }
n20=<LT> { n19 = JTBToolkit.makeNodeToken(n20); }
{ n18.addNode(n19); }
n22=<IDENTIFIER> { n21 = JTBToolkit.makeNodeToken(n22); }
{ n18.addNode(n21); }
n24=<GT> { n23 = JTBToolkit.makeNodeToken(n24); }
{ n18.addNode(n23); }
{ n0 = new NodeChoice(n18, 2); }
|
{ n25 = new NodeSequence(3); }
n27=<LT> { n26 = JTBToolkit.makeNodeToken(n27); }
{ n25.addNode(n26); }
n29=<EOF_TK> { n28 = JTBToolkit.makeNodeToken(n29); }
{ n25.addNode(n28); }
n31=<GT> { n30 = JTBToolkit.makeNodeToken(n31); }
{ n25.addNode(n30); }
{ n0 = new NodeChoice(n25, 3); }
)
{ return new RegularExpression(n0); }
}
ComplexRegularExpressionChoices ComplexRegularExpressionChoices() :
{
ComplexRegularExpression n0;
NodeListOptional n1 = new NodeListOptional();
NodeSequence n2;
NodeToken n3;
Token n4;
ComplexRegularExpression n5;
{
}
}
{
n0=ComplexRegularBLOCKED EXPRESSION
(
{ n2 = new NodeSequence(2); }
n4=<BIT_OR> { n3 = JTBToolkit.makeNodeToken(n4); }
{ n2.addNode(n3); }
n5=ComplexRegularBLOCKED EXPRESSION
{ n2.addNode(n5); }
{ n1.addNode(n2); }
)*
{ n1.nodes.trimToSize(); }
{ return new ComplexRegularExpressionChoices(n0,n1); }
}
ComplexRegularExpression ComplexRegularBLOCKED EXPRESSION :
{
NodeListOptional n0 = new NodeListOptional();
ComplexRegularExpressionUnit n1;
{
}
}
{
(
n1=ComplexRegularExpressionUnit()
{ n0.addNode(n1); }
)*
{ n0.nodes.trimToSize(); }
{ return new ComplexRegularExpression(n0); }
}
ComplexRegularExpressionUnit ComplexRegularExpressionUnit() :
{
NodeChoice n0;
NodeToken n1;
Token n2;
NodeSequence n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
NodeToken n8;
Token n9;
CharacterList n10;
NodeSequence n11;
NodeToken n12;
Token n13;
ComplexRegularExpressionChoices n14;
NodeToken n15;
Token n16;
NodeOptional n17 = new NodeOptional();
NodeChoice n18;
NodeToken n19;
Token n20;
NodeToken n21;
Token n22;
NodeToken n23;
Token n24;
{
}
}
{
(
n2=<STRING_LITERAL> { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0 = new NodeChoice(n1, 0); }
|
{ n3 = new NodeSequence(3); }
n5=<LT> { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3.addNode(n4); }
n7=<IDENTIFIER> { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3.addNode(n6); }
n9=<GT> { n8 = JTBToolkit.makeNodeToken(n9); }
{ n3.addNode(n8); }
{ n0 = new NodeChoice(n3, 1); }
|
n10=CharacterList()
{ n0 = new NodeChoice(n10, 2); }
|
{ n11 = new NodeSequence(4); }
n13=<LPAREN> { n12 = JTBToolkit.makeNodeToken(n13); }
{ n11.addNode(n12); }
n14=ComplexRegularExpressionChoices()
{ n11.addNode(n14); }
n16=<RPAREN> { n15 = JTBToolkit.makeNodeToken(n16); }
{ n11.addNode(n15); }
(
(
n20=<PLUS> { n19 = JTBToolkit.makeNodeToken(n20); }
{ n18 = new NodeChoice(n19, 0); }
|
n22=<STAR> { n21 = JTBToolkit.makeNodeToken(n22); }
{ n18 = new NodeChoice(n21, 1); }
|
n24=<HOOK> { n23 = JTBToolkit.makeNodeToken(n24); }
{ n18 = new NodeChoice(n23, 2); }
)
{ n17.addNode(n18); }
)?
{ n11.addNode(n17); }
{ n0 = new NodeChoice(n11, 3); }
)
{ return new ComplexRegularExpressionUnit(n0); }
}
CharacterList CharacterList() :
{
NodeOptional n0 = new NodeOptional();
NodeToken n1;
Token n2;
NodeToken n3;
Token n4;
NodeOptional n5 = new NodeOptional();
NodeSequence n6;
CharacterDescriptor n7;
NodeListOptional n8;
NodeSequence n9;
NodeToken n10;
Token n11;
CharacterDescriptor n12;
NodeToken n13;
Token n14;
{
}
}
{
(
n2=<TILDE> { n1 = JTBToolkit.makeNodeToken(n2); }
{ n0.addNode(n1); }
)?
n4=<LBRACKET> { n3 = JTBToolkit.makeNodeToken(n4); }
(
{ n8 = new NodeListOptional(); }
{ n6 = new NodeSequence(2); }
n7=CharacterDescriptor()
{ n6.addNode(n7); }
(
{ n9 = new NodeSequence(2); }
n11=<COMMA> { n10 = JTBToolkit.makeNodeToken(n11); }
{ n9.addNode(n10); }
n12=CharacterDescriptor()
{ n9.addNode(n12); }
{ n8.addNode(n9); }
)*
{ n8.nodes.trimToSize(); }
{ n6.addNode(n8); }
{ n5.addNode(n6); }
)?
n14=<RBRACKET> { n13 = JTBToolkit.makeNodeToken(n14); }
{ return new CharacterList(n0,n3,n5,n13); }
}
CharacterDescriptor CharacterDescriptor() :
{
NodeToken n0;
Token n1;
NodeOptional n2 = new NodeOptional();
NodeSequence n3;
NodeToken n4;
Token n5;
NodeToken n6;
Token n7;
{
}
}
{
n1=<STRING_LITERAL> { n0 = JTBToolkit.makeNodeToken(n1); }
(
{ n3 = new NodeSequence(2); }
n5=<MINUS> { n4 = JTBToolkit.makeNodeToken(n5); }
{ n3.addNode(n4); }
n7=<STRING_LITERAL> { n6 = JTBToolkit.makeNodeToken(n7); }
{ n3.addNode(n6); }
{ n2.addNode(n3); }
)?
{ return new CharacterDescriptor(n0,n2); }
}
-------------------------------------------------------------------------------------------
测试
package com.xxx.toolkit.java.parser;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import com.xxx.toolkit.java.parser.syntaxtree.Node;
import com.xxx.toolkit.java.parser.visitor.TreeDumper;
public class ParserTest {
public static void testString(String s)throws Exception{
ByteArrayInputStream is=new ByteArrayInputStream(s.getBytes());
doParse(is);
}
public static void testJavaFile(String fileName)throws Exception{
FileInputStream is=new FileInputStream(fileName);
doParse(is);
}
private static void doParse(InputStream is)throws Exception{
try {
JTBParser jp = new JTBParser(is);//(is,"GBK")
Node root=jp.parse();
//System.out.println(node);
root.accept(new TreeDumper());
System.out.println("注释:/n"+jp.getCommentList());
//JavaFile jf = jp.parse();
//System.out.println(jf.toString());
} catch (Error e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
System.out.println("测试分析java文件...");
testJavaFile("W://workspace//my_range//src//com//xxx//toolkit//java2//TestClass.java");
// String s=null;
// s="package com.xxx ;";
// s="com.xxx";
// testString(s);
// s="abc.cc";
// testPackageName(s);
} catch (Exception e) {
e.printStackTrace();
}
}
}
- java parser jj
- jj
- jj
- jj
- jj
- JJ
- jj
- Java HTML Parser应用
- java ini config parser
- JJ比赛 JJ地主
- 如何编译NutchAnalysis.jj文件,生成java源码
- Stanford parser java+eclipse调用
- 找JJ
- JAVA选择结构语句和witchi和for循环判断语句jj基础介绍
- Java Reading XML using DOM parser
- javaparser, Java 1.5 Parser and AST
- 劝解失恋的JJ
- 阅读nutch.Analysis.jj
- 一个项目经理的个人体会:最忌讳的就是完美主义倾向
- North America in my eyes
- 毅力是成功的品质 (转)
- 约瑟夫问题
- osCommerce的打算.
- java parser jj
- Milogs客户销售工作日志软件系统简介
- 教大家写个小程序,安全清除你的C盘垃圾
- Visual C#使用DirectX实现视频播放
- 升级我的BIOS
- 从XP安装盘提取文件
- DLL替代法
- ASP.NET 2.0中Gridview控件高级技巧
- Struts+Spring+Hibernate