org.jastadd.jrag.AST.Jrag.jj Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jastadd Show documentation
Show all versions of jastadd Show documentation
A metacompilation framework for Java using attribute grammars.
/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. /home/jesper/git/jastadd2/src/gen/org/jastadd/jrag/AST/Jrag.jj */
/*@egen*//* Copyright (c) 2006, Sun Microsystems, Inc.
* 2006-2016, The JastAdd Team
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the Sun Microsystems, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* This file is based on the Java1.1.jjt file from the VTransformer example
* from JavaCC by Sun Microsystems, Inc. Modifications have been made by the
* JastAdd team to add support for JastAdd features. The original author of
* this file, according to older releases of JavaCC, was Sriram Sankar. A date
* tag in the older releases shows the file was created on 3/5/97.
*/
options {
JAVA_UNICODE_ESCAPE = true;
STATIC=false;
}
PARSER_BEGIN(JragParser)
package org.jastadd.jrag.AST;
import java.util.*;
import org.jastadd.jrag.*;
import org.jastadd.ast.AST.Grammar;
public class JragParser/*@bgen(jjtree)*/implements JragParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/
protected JJTJragParserState jjtree = new JJTJragParserState();
/*@egen*/
/* Added attributes to the parser: */
public String className = ""; // Name of class currently parsed.
public String enclosingAspect = ""; // The name of the aspect currently being parsed.
public String fileName; // Name of parsed file.
private java.util.List contextStack = new java.util.ArrayList();
public boolean inTopLevelOrAspect() {
int size = contextStack.size();
return size == 0 || (size == 1 && contextStack.get(0).equals("aspect"));
}
public boolean shouldAddClassBodyDecl() {
int size = contextStack.size();
return size == 1 &&
(contextStack.get(0).equals("aspect") ||
contextStack.get(0).equals("class") ||
contextStack.get(0).equals("interface"));
}
public void pushTopLevelOrAspect(String context) {
contextStack.add(context);
}
public void popTopLevelOrAspect() {
contextStack.remove(contextStack.size()-1);
}
public Grammar root;
public java.io.InputStream inputStream;
/** Set name of parsed file. */
public void setFileName(String name) {
fileName = name;
className = "";
contextStack = new java.util.ArrayList();
}
/* ------ Added methods for NODE_SCOPE_HOOKS ---------*/
public void jjtreeOpenNodeScope(Node n) {
((SimpleNode) n).firstToken = getToken(1);
}
public void jjtreeCloseNodeScope(Node n) {
((SimpleNode) n).lastToken = getToken(0);
}
/* ------End of methods for NODE_SCOPE_HOOK------------*/
/** Returns string consisting of all chars before a dot. */
public String beforeDot(String s) {
int i = s.indexOf('.');
if (i < 0) {
return s;
} else {
return s.substring(0, i);
}
}
/**
* Returns string consisting of all chars between "get" and before a '('.
* Returns null if "get" is not a prefix; s if no "(" found.
*/
public String stripGet(String s) {
if (!s.startsWith("get")) {
return null;
}
s = s.substring(3, s.length());
return s;
}
/** Returns string consisting of all chars after a dot. */
public String afterDot(String s) {
int i = s.indexOf('.');
if (i < 0) {
return null;
} else {
return s.substring(i+1,s.length());
}
}
}
PARSER_END(JragParser)
/* WHITE SPACE */
SPECIAL_TOKEN :
{
" "
| "\t"
| "\n"
| "\r"
| "\f"
}
/* COMMENTS */
MORE :
{
"//" : IN_SINGLE_LINE_COMMENT
|
<"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT
|
"/*" : IN_MULTI_LINE_COMMENT
}
SPECIAL_TOKEN :
{
: DEFAULT
}
SPECIAL_TOKEN :
{
: DEFAULT
}
SPECIAL_TOKEN :
{
: DEFAULT
}
MORE :
{
< ~[] >
}
/* RESERVED WORDS AND LITERALS */
TOKEN :
{
< ABSTRACT: "abstract" >
| < ASSERT: "assert" >
| < 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" >
| < ENUM: "enum" >
| < 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" >
| < STRICTFP: "strictfp" >
| < SUPER: "super" >
| < SWITCH: "switch" >
| < SYNCHRONIZED: "synchronized" >
| < THIS: "this" >
| < THROW: "throw" >
| < THROWS: "throws" >
| < TRANSIENT: "transient" >
| < TRUE: "true" >
| < TRY: "try" >
| < VOID: "void" >
| < VOLATILE: "volatile" >
| < WHILE: "while" >
// JastAdd keywords:
| < INH: "inh">
| < SYN: "syn">
| < LAZY: "lazy">
| < REWRITE: "rewrite">
| < TO: "to">
| < WHEN: "when">
| < ASPECT: "aspect">
| < EQUATION: "eq">
| < CIRCULAR: "circular">
| < REFINE: "refine">
| < CONTRIBUTES: "contributes">
| < EACH: "each">
| < NTA: "nta">
| < CACHE: "cache">
| < UNCACHE: "uncache">
}
TOKEN :
{
< COLL: "coll"> : COLLECTION_DECL
}
TOKEN :
{
< WITH: "with">
| < ROOT: "root">
}
/* LITERALS */
TOKEN :
{
< INTEGER_LITERAL:
(["l","L"])?
| (["l","L"])?
| (["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"])* ()? (["f","F","d","D"])?
| "." (["0"-"9"])+ ()? (["f","F","d","D"])?
| (["0"-"9"])+ (["f","F","d","D"])?
| (["0"-"9"])+ ()? ["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"]
)
)
)
"'"
>
|
< STRING_LITERAL:
"\""
( (~["\"","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)*
"\""
>
}
/* IDENTIFIERS */
TOKEN :
{
< IDENTIFIER: (|)* >
|
< #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"
]
>
}
/* SEPARATORS */
TOKEN :
{
< LPAREN: "(" >
| < RPAREN: ")" >
| < LBRACE: "{" >
| < RBRACE: "}" >
| < LBRACKET: "[" >
| < RBRACKET: "]" >
| < SEMICOLON: ";" >
| < COMMA: "," >
| < DOT: "." >
| < AT: "@" >
}
/* OPERATORS */
TOKEN :
{
< ASSIGN: "=" >
| < 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: "<<" >
| < PLUSASSIGN: "+=" >
| < MINUSASSIGN: "-=" >
| < STARASSIGN: "*=" >
| < SLASHASSIGN: "/=" >
| < ANDASSIGN: "&=" >
| < ORASSIGN: "|=" >
| < XORASSIGN: "^=" >
| < REMASSIGN: "%=" >
| < LSHIFTASSIGN: "<<=" >
| < RSIGNEDSHIFTASSIGN: ">>=" >
| < RUNSIGNEDSHIFTASSIGN: ">>>=" >
| < ELLIPSIS: "..." >
}
/* >'s need special attention due to generics syntax. */
TOKEN :
{
< RUNSIGNEDSHIFT: ">>>" >
{
matchedToken.kind = GT;
((Token.GTToken)matchedToken).realKind = RUNSIGNEDSHIFT;
input_stream.backup(2);
}
| < RSIGNEDSHIFT: ">>" >
{
matchedToken.kind = GT;
((Token.GTToken)matchedToken).realKind = RSIGNEDSHIFT;
input_stream.backup(1);
}
| < GT: ">" >
}
/*****************************************
* THE JAVA LANGUAGE GRAMMAR STARTS HERE *
*****************************************/
/*
* Program structuring syntax follows.
*/
ASTCompilationUnit CompilationUnit() :
{/*@bgen(jjtree) CompilationUnit */
ASTCompilationUnit jjtn000 = new ASTCompilationUnit(this, JJTCOMPILATIONUNIT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) CompilationUnit */
try {
/*@egen*/
( ImportDeclaration() )*
( TypeDeclaration() )*
/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
return jjtn000;
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ImportDeclaration() :
{/*@bgen(jjtree) ImportDeclaration */
ASTImportDeclaration jjtn000 = new ASTImportDeclaration(this, JJTIMPORTDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ImportDeclaration */
try {
/*@egen*/
"import" [ "static" ] Name() [ "." "*" ] ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
String Modifiers() :
{/*@bgen(jjtree) Modifiers */
ASTModifiers jjtn000 = new ASTModifiers(this, JJTMODIFIERS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
StringBuilder buf = new StringBuilder();
SimpleNode annotation;
}
{/*@bgen(jjtree) Modifiers */
try {
/*@egen*/
(LOOKAHEAD(2)
(
"public"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"static"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"protected"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"private"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"final"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"abstract"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"synchronized"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"native"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"transient"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"volatile"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
"strictfp"
{
if (buf.length() > 0) buf.append(" ");
buf.append(token.image);
}
|
annotation = Annotation()
{
if (buf.length() > 0) buf.append(" ");
buf.append(Unparser.unparse(annotation));
}
)
)*/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ jjtree.popNode(); return buf.toString(); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void TypeDeclaration() :
{/*@bgen(jjtree) TypeDeclaration */
ASTTypeDeclaration jjtn000 = new ASTTypeDeclaration(this, JJTTYPEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String modifiers;
}
{/*@bgen(jjtree) TypeDeclaration */
try {
/*@egen*/
";"
|
modifiers = Modifiers()
(
ClassDeclaration(modifiers)
|
InterfaceDeclaration(modifiers)
|
UnmodifiedEnumDeclaration(modifiers)
|
AnnotationTypeDeclaration(modifiers)
|
AspectDeclaration(modifiers)
)/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectDeclaration(String modifiers) :
{/*@bgen(jjtree) AspectDeclaration */
ASTAspectDeclaration jjtn000 = new ASTAspectDeclaration(this, JJTASPECTDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/ Token t; }
{/*@bgen(jjtree) AspectDeclaration */
try {
/*@egen*/
"aspect" { pushTopLevelOrAspect("aspect"); }
t = {
enclosingAspect = t.image;
root.registerAspect(enclosingAspect, Unparser.unparseComment(jjtn000));
}
AspectBody()/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ popTopLevelOrAspect(); enclosingAspect = ""; }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectBody() :
{/*@bgen(jjtree) AspectBody */
ASTAspectBody jjtn000 = new ASTAspectBody(this, JJTASPECTBODY);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectBody */
try {
/*@egen*/
"{" ( AspectBodyDeclaration() )* "}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectBodyDeclaration() :
{/*@bgen(jjtree) AspectBodyDeclaration */
ASTAspectBodyDeclaration jjtn000 = new ASTAspectBodyDeclaration(this, JJTASPECTBODYDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectBodyDeclaration */
try {
/*@egen*/
LOOKAHEAD( "eq" "." "(" [ ] ")" "." )
AspectRefineInhEquation()
|
LOOKAHEAD( "eq")
AspectRefineSynEquation()
|
LOOKAHEAD(AspectRefineMethodDeclarationLookahead())
AspectRefineMethodDeclaration()
|
LOOKAHEAD()
AspectRefineConstructorDeclaration()
|
LOOKAHEAD( Modifiers() "class" )
AspectClassDeclaration()
|
LOOKAHEAD( Modifiers() "interface" )
AspectInterfaceDeclaration()
|
LOOKAHEAD( Modifiers() "enum" )
AspectEnumDeclaration()
|
LOOKAHEAD( ( Annotation() )* "syn" )
AspectSynAttributeDeclaration()
|
LOOKAHEAD( ( Annotation() )* "inh" )
AspectInhAttributeDeclaration()
|
LOOKAHEAD( "rewrite" )
AspectRewrite()
|
LOOKAHEAD( ( Annotation() )* "eq" "." "(" [ ] ")" "." )
AspectInhEquation()
|
LOOKAHEAD( ( Annotation() )* "eq" )
AspectSynEquation()
|
LOOKAHEAD( "implements" )
AspectAddInterface()
|
LOOKAHEAD( "extends" )
AspectExtendInterface()
|
LOOKAHEAD( ( Annotation() )* "coll" )
CollectionAttribute()
|
LOOKAHEAD( "contributes" )
CollectionContribution()
|
LOOKAHEAD( AspectMethodDeclarationLookahead() )
AspectMethodDeclaration()
|
LOOKAHEAD( Modifiers() "." "(" )
AspectConstructorDeclaration()
|
LOOKAHEAD( AspectFieldDeclarationLookahead() )
AspectFieldDeclaration()
|
LOOKAHEAD( ( "cache" | "uncache" ) )
AspectCacheDeclaration()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/**
* This production is used for aspects generated by JastAdd and includes an EOF
*/
void AspectBodyDeclarationsEOF() :
{/*@bgen(jjtree) AspectBodyDeclarationsEOF */
ASTAspectBodyDeclarationsEOF jjtn000 = new ASTAspectBodyDeclarationsEOF(this, JJTASPECTBODYDECLARATIONSEOF);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectBodyDeclarationsEOF */
try {
/*@egen*/
( AspectBodyDeclaration() )* /*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectClassDeclaration() :
{/*@bgen(jjtree) AspectClassDeclaration */
ASTAspectClassDeclaration jjtn000 = new ASTAspectClassDeclaration(this, JJTASPECTCLASSDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
Token first;
String outerClassName;
String name = "";
SimpleNode nameList = null;
String modifiers;
SimpleNode node;
org.jastadd.ast.AST.TypeDecl typeDecl = null;
String typeParameters;
}
{/*@bgen(jjtree) AspectClassDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
first = "class"
t = {
pushTopLevelOrAspect("class");
outerClassName = className;
className = t.image;
typeDecl = root.findClassDecl(className, Unparser.unparseComment(jjtn000),
fileName, first.beginLine, enclosingAspect);
typeDecl.modifiers = modifiers;
}
[ typeParameters = TypeParameters() { typeDecl.typeParameters = typeParameters; } ]
[ "extends"
node = ClassOrInterfaceType() {
name = Unparser.unparse(node);
if (!name.equals("") && typeDecl instanceof org.jastadd.ast.AST.ClassDecl) {
((org.jastadd.ast.AST.ClassDecl)typeDecl).extendsName = name;
}
}
]
[ "implements" nameList = TypeNameList() { root.addInterface(nameList, className, fileName); } ]
AspectClassBody()/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ { className = outerClassName; popTopLevelOrAspect(); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectClassBody() :
{/*@bgen(jjtree) AspectClassBody */
ASTAspectClassBody jjtn000 = new ASTAspectClassBody(this, JJTASPECTCLASSBODY);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
SimpleNode n;
}
{/*@bgen(jjtree) AspectClassBody */
try {
/*@egen*/
"{" ( n = ClassBodyDeclaration() { root.addClassBodyDecl(n, className, fileName, enclosingAspect); } )* "}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInterfaceDeclaration() :
{/*@bgen(jjtree) AspectInterfaceDeclaration */
ASTAspectInterfaceDeclaration jjtn000 = new ASTAspectInterfaceDeclaration(this, JJTASPECTINTERFACEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
Token first;
String outerClassName;
SimpleNode nameList = null;
org.jastadd.ast.AST.TypeDecl typeDecl = null;
String typeParameters;
String modifiers;
}
{/*@bgen(jjtree) AspectInterfaceDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
first = "interface"
t = {
pushTopLevelOrAspect("interface");
outerClassName = className;
className = t.image;
typeDecl = root.findInterfaceDecl(className, Unparser.unparseComment(jjtn000),
fileName, first.beginLine, enclosingAspect);
typeDecl.modifiers = modifiers;
}
[ typeParameters = TypeParameters() { typeDecl.typeParameters = typeParameters; } ]
[ "extends" nameList = TypeNameList() { root.addInterface(nameList, className, fileName); } ]
"{" ( AspectInterfaceMemberDeclaration() )* "}"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ { className = outerClassName; popTopLevelOrAspect(); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInterfaceMemberDeclaration() :
{/*@bgen(jjtree) AspectInterfaceMemberDeclaration */
ASTAspectInterfaceMemberDeclaration jjtn000 = new ASTAspectInterfaceMemberDeclaration(this, JJTASPECTINTERFACEMEMBERDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectInterfaceMemberDeclaration */
try {
/*@egen*/
LOOKAHEAD( Modifiers() "class" )
AspectNestedClassDeclaration()
|
LOOKAHEAD( Modifiers() "interface" )
AspectNestedInterfaceDeclaration()
|
LOOKAHEAD("syn")
AspectInterfaceSynAttributeDeclaration()
|
LOOKAHEAD("inh")
AspectInterfaceInhAttributeDeclaration()
|
LOOKAHEAD( AspectInterfaceMethodDeclarationLookahead() )
AspectInterfaceMethodDeclaration()
|
AspectInterfaceFieldDeclaration()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInterfaceSynAttributeDeclaration() :
{/*@bgen(jjtree) AspectInterfaceSynAttributeDeclaration */
ASTAspectInterfaceSynAttributeDeclaration jjtn000 = new ASTAspectInterfaceSynAttributeDeclaration(this, JJTASPECTINTERFACESYNATTRIBUTEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/ String attrType;
Token attrName;
Token t;
Token first, last;
String type;
Token name;
String targetName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
SimpleNode eq = null;
boolean init = false;
boolean isLazy = false;
boolean isFinal = false;
SimpleNode bottomValue = null;
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) AspectInterfaceSynAttributeDeclaration */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparseSkipComment(annotation)); } )*
"syn" { first = token; } ["lazy" {isLazy = true;}] ["final" {isFinal = true;}]
attrType = AspectType() attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
[
bottomValue = Expression()
]
";" { last = token; }/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addSynDecl(attrName.image, attrType, className,
isLazy, fileName, first.beginLine, last.endLine, list,
bottomValue == null ? "" : Unparser.unparse(bottomValue),
isFinal, false, jjtn000, enclosingAspect, annotations);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInterfaceInhAttributeDeclaration() :
{/*@bgen(jjtree) AspectInterfaceInhAttributeDeclaration */
ASTAspectInterfaceInhAttributeDeclaration jjtn000 = new ASTAspectInterfaceInhAttributeDeclaration(this, JJTASPECTINTERFACEINHATTRIBUTEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/ String attrType;
Token attrName;
Token t;
Token first, last;
String type;
Token name;
String targetName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
SimpleNode bottomValue = null;
boolean isLazy = false;
boolean isFinal = false;
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) AspectInterfaceInhAttributeDeclaration */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparse(annotation)); } )*
"inh" { first = token; } ["lazy" {isLazy = true;}] ["final" {isFinal = true;}] attrType = AspectType()
attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
[
bottomValue = Expression()
]
";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
last = token;
root.addInhDecl(attrName.image, attrType, className,
isLazy, fileName, first.beginLine,
last.endLine, list, bottomValue == null ? "" : Unparser.unparse(bottomValue),
isFinal, false, jjtn000, enclosingAspect, annotations);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInterfaceMethodDeclarationLookahead() :
{/*@bgen(jjtree) AspectInterfaceMethodDeclarationLookahead */
ASTAspectInterfaceMethodDeclarationLookahead jjtn000 = new ASTAspectInterfaceMethodDeclarationLookahead(this, JJTASPECTINTERFACEMETHODDECLARATIONLOOKAHEAD);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectInterfaceMethodDeclarationLookahead */
try {
/*@egen*/
( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" )*
AspectResultType() JavaIdentifier() "("/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInterfaceMethodDeclaration() :
{/*@bgen(jjtree) AspectInterfaceMethodDeclaration */
ASTAspectInterfaceMethodDeclaration jjtn000 = new ASTAspectInterfaceMethodDeclaration(this, JJTASPECTINTERFACEMETHODDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
}
{/*@bgen(jjtree) AspectInterfaceMethodDeclaration */
try {
/*@egen*/
( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" )*
AspectResultType() MethodDeclarator() [ "throws" NameList() ]
";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ {
root.addClassBodyDecl(jjtn000, className, fileName, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInterfaceFieldDeclaration() :
{/*@bgen(jjtree) AspectInterfaceFieldDeclaration */
ASTAspectInterfaceFieldDeclaration jjtn000 = new ASTAspectInterfaceFieldDeclaration(this, JJTASPECTINTERFACEFIELDDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
String modifiers;
}
{/*@bgen(jjtree) AspectInterfaceFieldDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
AspectType() VariableDeclarator() ( "," VariableDeclarator() )* ";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addClassBodyDecl(jjtn000, className, fileName, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectNestedInterfaceDeclaration() :
{/*@bgen(jjtree) AspectNestedInterfaceDeclaration */
ASTAspectNestedInterfaceDeclaration jjtn000 = new ASTAspectNestedInterfaceDeclaration(this, JJTASPECTNESTEDINTERFACEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String outerClassName = className;
className = "D$u$m$m$y";
String modifiers;
}
{/*@bgen(jjtree) AspectNestedInterfaceDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
"interface" { pushTopLevelOrAspect("interface"); }
[ TypeParameters() ]
[ "extends" TypeNameList() ]
"{" ( InterfaceMemberDeclaration() )* "}"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
className = outerClassName;
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
popTopLevelOrAspect();
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectNestedClassDeclaration() :
{/*@bgen(jjtree) AspectNestedClassDeclaration */
ASTAspectNestedClassDeclaration jjtn000 = new ASTAspectNestedClassDeclaration(this, JJTASPECTNESTEDCLASSDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String outerClassName = className;
className = "D$u$m$m$y";
String modifiers;
String typeParameters;
}
{/*@bgen(jjtree) AspectNestedClassDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
"class" { pushTopLevelOrAspect("class"); }
[ TypeParameters() ]
[ "extends" ClassOrInterfaceType() ]
[ "implements" TypeNameList() ]
ClassBody()/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
className = outerClassName;
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
popTopLevelOrAspect();
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectMethodDeclarationLookahead() :
{/*@bgen(jjtree) AspectMethodDeclarationLookahead */
ASTAspectMethodDeclarationLookahead jjtn000 = new ASTAspectMethodDeclarationLookahead(this, JJTASPECTMETHODDECLARATIONLOOKAHEAD);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectMethodDeclarationLookahead */
try {
/*@egen*/
Modifiers()
[ TypeParameters() ]
AspectResultType() "." JavaIdentifier() "("/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectMethodDeclaration() :
{/*@bgen(jjtree) AspectMethodDeclaration */
ASTAspectMethodDeclaration jjtn000 = new ASTAspectMethodDeclaration(this, JJTASPECTMETHODDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/Token t;}
{/*@bgen(jjtree) AspectMethodDeclaration */
try {
/*@egen*/
Modifiers()
[ TypeParameters() ]
AspectResultType() t = "." { className = t.image; } MethodDeclarator() [ "throws" NameList() ]
( Block() | ";" )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ {
root.addClassBodyDecl(jjtn000, className, fileName, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectRefineMethodDeclarationLookahead() :
{/*@bgen(jjtree) AspectRefineMethodDeclarationLookahead */
ASTAspectRefineMethodDeclarationLookahead jjtn000 = new ASTAspectRefineMethodDeclarationLookahead(this, JJTASPECTREFINEMETHODDECLARATIONLOOKAHEAD);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectRefineMethodDeclarationLookahead */
try {
/*@egen*/
[LOOKAHEAD()]
Modifiers()
[ TypeParameters() ]
AspectResultType() "." JavaIdentifier() "("/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectRefineMethodDeclaration() :
{/*@bgen(jjtree) AspectRefineMethodDeclaration */
ASTAspectRefineMethodDeclaration jjtn000 = new ASTAspectRefineMethodDeclaration(this, JJTASPECTREFINEMETHODDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/Token t; String aspectName = ""; String secondAspectName; }
{/*@bgen(jjtree) AspectRefineMethodDeclaration */
try {
/*@egen*/
t = { t.image = ""; } [LOOKAHEAD() t = { aspectName = t.image; t.image = ""; }]
Modifiers()
[ TypeParameters() ]
AspectResultType() t = "." { className = t.image; } MethodDeclarator() [ "throws" NameList() ]
( Block() | ";" )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ {
root.addRefinedClassBodyDecl(jjtn000, className, fileName, aspectName, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectConstructorDeclaration() :
{/*@bgen(jjtree) AspectConstructorDeclaration */
ASTAspectConstructorDeclaration jjtn000 = new ASTAspectConstructorDeclaration(this, JJTASPECTCONSTRUCTORDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/Token t;}
{/*@bgen(jjtree) AspectConstructorDeclaration */
try {
/*@egen*/
Modifiers()
t = "." { className = t.image; } FormalParameters() [ "throws" NameList() ]
"{"
[ LOOKAHEAD(ExplicitConstructorInvocation()) ExplicitConstructorInvocation() ]
( BlockStatement() )*
"}"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addClassBodyDecl(jjtn000, className, fileName, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectRefineConstructorDeclaration() :
{/*@bgen(jjtree) AspectRefineConstructorDeclaration */
ASTAspectRefineConstructorDeclaration jjtn000 = new ASTAspectRefineConstructorDeclaration(this, JJTASPECTREFINECONSTRUCTORDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/Token t; String aspectName; String secondAspectName; }
{/*@bgen(jjtree) AspectRefineConstructorDeclaration */
try {
/*@egen*/
t = { t.image = ""; } t = { aspectName = t.image; t.image = ""; } [ "public" | "protected" | "private" ]
t = "." { className = t.image; } FormalParameters() [ "throws" NameList() ]
"{"
[ LOOKAHEAD(ExplicitConstructorInvocation()) ExplicitConstructorInvocation() ]
( BlockStatement() )*
"}"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addRefinedClassBodyDecl(jjtn000, className, fileName, aspectName, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectFieldDeclarationLookahead() :
{/*@bgen(jjtree) AspectFieldDeclarationLookahead */
ASTAspectFieldDeclarationLookahead jjtn000 = new ASTAspectFieldDeclarationLookahead(this, JJTASPECTFIELDDECLARATIONLOOKAHEAD);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectFieldDeclarationLookahead */
try {
/*@egen*/
Modifiers()
AspectType() "." VariableDeclarator()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectFieldDeclaration() :
{/*@bgen(jjtree) AspectFieldDeclaration */
ASTAspectFieldDeclaration jjtn000 = new ASTAspectFieldDeclaration(this, JJTASPECTFIELDDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/Token t;}
{/*@bgen(jjtree) AspectFieldDeclaration */
try {
/*@egen*/
Modifiers()
AspectType() t = "." { className = t.image; } VariableDeclarator() ( "," VariableDeclarator() )* ";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ {
root.addClassBodyDecl(jjtn000, className, fileName, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectSynAttributeDeclaration() :
{/*@bgen(jjtree) AspectSynAttributeDeclaration */
ASTAspectSynAttributeDeclaration jjtn000 = new ASTAspectSynAttributeDeclaration(this, JJTASPECTSYNATTRIBUTEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/ String attrType;
Token attrName;
Token t;
Token first, last;
String type;
Token name;
String targetName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
SimpleNode eq = null;
boolean init = false;
boolean isLazy = false;
SimpleNode bottomValue = null;
boolean isFinal = false;
boolean isNTA = false;
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) AspectSynAttributeDeclaration */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparseSkipComment(annotation)); } )*
"syn" { first = token; }
[ {isNTA = true; }]
["lazy" {isLazy = true;}]
["final" {isFinal = true; }]
attrType = AspectType()
t = "." { targetName = t.image; }
attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
[
bottomValue = Expression()
]
( ("=" eq = Expression() ";" { last = token; init = true;} )
| (eq = Block() { last = token; init = true;})
| ";" { last = token; } )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addSynDecl(attrName.image, attrType, targetName,
isLazy, fileName, first.beginLine,
last.endLine, list, bottomValue == null ? "" : Unparser.unparse(bottomValue),
isFinal, isNTA, jjtn000, enclosingAspect, annotations);
if (init) {
root.addSynEq(attrName.image, targetName, eq, fileName, first.beginLine,
last.endLine, (org.jastadd.ast.AST.List)list.fullCopy(), jjtn000,
enclosingAspect, annotations);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInhAttributeDeclaration() :
{/*@bgen(jjtree) AspectInhAttributeDeclaration */
ASTAspectInhAttributeDeclaration jjtn000 = new ASTAspectInhAttributeDeclaration(this, JJTASPECTINHATTRIBUTEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/ String attrType;
Token attrName;
Token t;
Token first, last;
String type;
Token name;
String targetName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
SimpleNode bottomValue = null;
boolean isLazy = false;
boolean isFinal = false;
boolean isNTA = false;
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) AspectInhAttributeDeclaration */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparseSkipComment(annotation)); } )*
"inh" { first = token; } [ {isNTA = true;}] ["lazy" {isLazy = true;}] ["final" {isFinal = true; }] attrType = AspectType()
t = "." { targetName = t.image; }
attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
[
bottomValue = Expression()
]
";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
last = token;
root.addInhDecl(attrName.image, attrType, targetName,
isLazy, fileName, first.beginLine,
last.endLine, list, bottomValue == null ? "" : Unparser.unparse(bottomValue),
isFinal, isNTA, jjtn000, enclosingAspect, annotations);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectRewrite() :
{/*@bgen(jjtree) AspectRewrite */
ASTAspectRewrite jjtn000 = new ASTAspectRewrite(this, JJTASPECTREWRITE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
SimpleNode cond;
SimpleNode eq;
Token first, last;
Token parent = null;
Token child = null;
String type;
}
{/*@bgen(jjtree) AspectRewrite */
try {
/*@egen*/
"rewrite" {cond = null; first = token;} t = { className = t.image; }
[ parent = "." child = ]
( ["when" { first = token; } cond = Expression() ]
"to" type = AspectType() ( (eq = Expression() ";" { last = token; }) | eq = Block() { last = token; } )
{
if (parent != null && child != null) {
root.addRewriteList(className, cond, eq, type, fileName, first.beginLine, last.endLine, parent.image, child.image, enclosingAspect);
} else {
root.addRewrite(className, cond, eq, type, fileName, first.beginLine, last.endLine, enclosingAspect);
}
cond = null;
}
)+
/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectSynEquation() :
{/*@bgen(jjtree) AspectSynEquation */
ASTAspectSynEquation jjtn000 = new ASTAspectSynEquation(this, JJTASPECTSYNEQUATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String t;
Token first, last;
SimpleNode eq;
String type;
Token name;
Token attrName;
Token targetName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) AspectSynEquation */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparseSkipComment(annotation)); } )*
"eq" { first = token; }
targetName = "."
attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
( ("=" eq = Expression() ";" { last = token; })
| eq = Block() { last = token; } )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addSynEq(attrName.image, targetName.image, eq, fileName,
first.beginLine, last.endLine, list, jjtn000, enclosingAspect,
annotations);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectRefineSynEquation() :
{/*@bgen(jjtree) AspectRefineSynEquation */
ASTAspectRefineSynEquation jjtn000 = new ASTAspectRefineSynEquation(this, JJTASPECTREFINESYNEQUATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String t;
Token first, last;
SimpleNode eq;
String type;
Token name;
Token attrName;
Token targetName;
Token aspectName;
Token secondAspectName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
}
{/*@bgen(jjtree) AspectRefineSynEquation */
try {
/*@egen*/
aspectName =
"eq" { first = token; }
targetName = "."
attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
( ( ("=" eq = Expression() ";" { last = token; })
| eq = Block() { last = token; } )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ root.addRefinedSynEq(attrName.image, targetName.image, eq, fileName, first.beginLine, last.endLine, list, aspectName.image, jjtn000, enclosingAspect); }
)/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectInhEquation() :
{/*@bgen(jjtree) AspectInhEquation */
ASTAspectInhEquation jjtn000 = new ASTAspectInhEquation(this, JJTASPECTINHEQUATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String t;
Token first, last;
SimpleNode eq;
Token name;
String type;
Token attrName;
Token targetName;
Token childName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
org.jastadd.ast.AST.Parameter p = null;
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) AspectInhEquation */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparseSkipComment(annotation)); } )*
"eq" { first = token; }
targetName = "."
childName = "(" [ name = { p = new org.jastadd.ast.AST.Parameter("int", name.image); } ] ")" "."
attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
( ("=" eq = Expression() ";" { last = token; })
| eq = Block() { last = token; } )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addInhEq(childName.image, attrName.image, targetName.image, eq,
fileName, first.beginLine, last.endLine, list, p, jjtn000,
enclosingAspect, annotations);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectRefineInhEquation() :
{/*@bgen(jjtree) AspectRefineInhEquation */
ASTAspectRefineInhEquation jjtn000 = new ASTAspectRefineInhEquation(this, JJTASPECTREFINEINHEQUATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String t;
Token first, last;
SimpleNode eq;
Token name;
String type;
Token attrName;
Token targetName;
Token childName;
org.jastadd.ast.AST.List list = new org.jastadd.ast.AST.List();
org.jastadd.ast.AST.Parameter p = null;
Token aspectName;
}
{/*@bgen(jjtree) AspectRefineInhEquation */
try {
/*@egen*/
aspectName = "eq" { first = token; }
targetName = "."
childName = "(" [ name = { p = new org.jastadd.ast.AST.Parameter("int", name.image); } ] ")" "."
attrName = AttributeName()
"("
[
type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); }
( "," type = Type() name = { list.add(new org.jastadd.ast.AST.Parameter(type, name.image)); })*
]
")"
( ("=" eq = Expression() ";" { last = token; })
| eq = Block() { last = token; } )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.addRefinedInhEq(childName.image, attrName.image, targetName.image, eq, fileName, first.beginLine, last.endLine, list, p, aspectName.image, jjtn000, enclosingAspect);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void CollectionAttribute():
{/*@bgen(jjtree) CollectionAttribute */
ASTCollectionAttribute jjtn000 = new ASTCollectionAttribute(this, JJTCOLLECTIONATTRIBUTE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
Token first, last;
String attrType;
String targetName;
Token attrName;
String combOp = "add";
String rootName = null;
SimpleNode startValue = null;
boolean isCircular = false;
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) CollectionAttribute */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparseSkipComment(annotation)); } )*
"coll" { first = token; }
attrType = AspectType() t = "." { targetName = t.image; } attrName = AttributeName() "(" ")"
[ { isCircular = true; } ]
[ startValue = Expression() ]
[ t = { combOp = t.image; } ]
[ t = { rootName = t.image; } ]
";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
last = token;
root.addCollDecl(attrName.image, attrType, targetName, fileName,
first.beginLine, last.endLine,
startValue == null ? "new " + attrType + "()" : Unparser.unparse(startValue),
combOp,
isCircular, annotations, jjtn000, rootName, enclosingAspect);
token_source.SwitchTo(DEFAULT);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void CollectionContribution():
{/*@bgen(jjtree) CollectionContribution */
ASTCollectionContribution jjtn000 = new ASTCollectionContribution(this, JJTCOLLECTIONCONTRIBUTION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
Token first, last;
SimpleNode block;
SimpleNode value = null;
SimpleNode condition = null;
SimpleNode ntaExpression = null;
String targetName;
String targetAttributeName;
String attributeType;
String surveyBlock = null;
SimpleNode reference = null;
org.jastadd.ast.AST.List contributionList = new org.jastadd.ast.AST.List();
boolean iterableValue = false;
boolean iterableTarget = false;
ArrayList annotations = new ArrayList();
SimpleNode annotation;
}
{/*@bgen(jjtree) CollectionContribution */
try {
/*@egen*/
( annotation = Annotation() { annotations.add(Unparser.unparseComment(annotation)); } )*
t = { first = token; attributeType = t.image; }
"contributes"
(
LOOKAHEAD("nta") "nta"
ntaExpression = Expression()
"to" t = "." { targetName = t.image; } t = AttributeName() { targetAttributeName = t.image; } "(" ")"
| [ LOOKAHEAD("each") "each" { iterableValue = true; } ]
value = Expression()
[ "when" condition = Expression() ]
"to" t = "." { targetName = t.image; } t = AttributeName() { targetAttributeName = t.image; } "(" ")"
[ "for" [ LOOKAHEAD("each") "each" { iterableTarget = true; } ] reference = Expression() ]
| block = Block() { surveyBlock = Unparser.unparse(block); }
"to" t = "." { targetName = t.image; } t = AttributeName() { targetAttributeName = t.image; } "(" ")"
)
";" { last = token; }/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
if (surveyBlock != null) {
root.addCustomSurveyBlock(targetName,
targetAttributeName,
attributeType,
surveyBlock,
fileName,
first.beginLine,
last.endLine,
jjtn000,
enclosingAspect,
annotations);
} else if (ntaExpression != null) {
root.addCustomSurveyExpression(targetName,
targetAttributeName,
attributeType,
Unparser.unparse(ntaExpression),
fileName,
first.beginLine,
last.endLine,
jjtn000,
enclosingAspect,
annotations);
} else {
org.jastadd.ast.AST.CollEq equ = root.addCollEq(targetName,
targetAttributeName,
attributeType,
reference == null ? "" : Unparser.unparse(reference),
fileName,
first.beginLine,
last.endLine,
iterableValue,
iterableTarget,
jjtn000,
enclosingAspect,
annotations);
// TODO(joqvist): make the returned equ non-null.
if (equ != null) {
equ.setValue(Unparser.unparse(value));
if (condition != null) {
equ.setCondition(Unparser.unparse(condition));
}
}
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectAddInterface() :
{/*@bgen(jjtree) AspectAddInterface */
ASTAspectAddInterface jjtn000 = new ASTAspectAddInterface(this, JJTASPECTADDINTERFACE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token first, last;
Token targetName;
SimpleNode nameList;
}
{/*@bgen(jjtree) AspectAddInterface */
try {
/*@egen*/
targetName = { first = token; }
"implements"
nameList = TypeNameList()
";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
last = token;
root.addInterface(nameList, targetName.image, fileName);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectExtendInterface() :
{/*@bgen(jjtree) AspectExtendInterface */
ASTAspectExtendInterface jjtn000 = new ASTAspectExtendInterface(this, JJTASPECTEXTENDINTERFACE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token first, last;
Token targetName;
SimpleNode nameList;
}
{/*@bgen(jjtree) AspectExtendInterface */
try {
/*@egen*/
targetName = { first = token; }
"extends"
nameList = TypeNameList()
";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
last = token;
root.extendInterface(nameList, targetName.image, fileName);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/*
* Declaration syntax follows.
*/
void ClassDeclaration(String modifiers) :
{/*@bgen(jjtree) ClassDeclaration */
ASTClassDeclaration jjtn000 = new ASTClassDeclaration(this, JJTCLASSDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/ Token t;
Token first;
SimpleNode node;
String outerClassName;
StringBuffer name = new StringBuffer();
org.jastadd.ast.AST.TypeDecl typeDecl = null;
SimpleNode nameList = null;
String typeParameters;
}
{/*@bgen(jjtree) ClassDeclaration */
try {
/*@egen*/
first = "class"
t = {
pushTopLevelOrAspect("class");
outerClassName = className;
className = t.image;
typeDecl = root.findClassDecl(className, Unparser.unparseComment(jjtn000),
fileName, first.beginLine, enclosingAspect);
typeDecl.modifiers = modifiers;
}
[ typeParameters = TypeParameters() { typeDecl.typeParameters = typeParameters; } ]
[ "extends"
node = ClassOrInterfaceType() { name.append(Unparser.unparse(node)); }
{ if(!name.toString().equals("") && typeDecl instanceof org.jastadd.ast.AST.ClassDecl)
((org.jastadd.ast.AST.ClassDecl)typeDecl).extendsName = name.toString();
}
]
[ "implements" nameList = TypeNameList() { root.addInterface(nameList, className, fileName);} ]
ClassBody()/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ { className = outerClassName; popTopLevelOrAspect(); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
SimpleNode TypeNameList():
{/*@bgen(jjtree) TypeNameList */
ASTTypeNameList jjtn000 = new ASTTypeNameList(this, JJTTYPENAMELIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) TypeNameList */
try {
/*@egen*/
(
ClassOrInterfaceType()
( "," ClassOrInterfaceType() )*
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return jjtn000; }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/* Added action to set classname and add class to allClasses */
void UnmodifiedClassDeclaration(String modifiers) :
{/*@bgen(jjtree) UnmodifiedClassDeclaration */
ASTUnmodifiedClassDeclaration jjtn000 = new ASTUnmodifiedClassDeclaration(this, JJTUNMODIFIEDCLASSDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
SimpleNode nameList;
String outerClassName;
}
{/*@bgen(jjtree) UnmodifiedClassDeclaration */
try {
/*@egen*/
"class" t = { pushTopLevelOrAspect("class"); outerClassName = className; className = t.image; }
[ TypeParameters() ]
[ "extends" ClassOrInterfaceType() ] [ "implements" nameList = TypeNameList() ]
ClassBody() { className = outerClassName; popTopLevelOrAspect(); }/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ if (shouldAddClassBodyDecl()) {
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectEnumDeclaration():
{/*@bgen(jjtree) AspectEnumDeclaration */
ASTAspectEnumDeclaration jjtn000 = new ASTAspectEnumDeclaration(this, JJTASPECTENUMDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
Token first;
String outerClassName;
String modifiers;
SimpleNode node;
org.jastadd.ast.AST.EnumDecl typeDecl = null;
}
{/*@bgen(jjtree) AspectEnumDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
first = "enum"
t = {
pushTopLevelOrAspect("enum");
outerClassName = className;
className = t.image;
typeDecl = (org.jastadd.ast.AST.EnumDecl) root.findEnumDecl(className, Unparser.unparseComment(jjtn000),
fileName, first.beginLine, enclosingAspect);
typeDecl.modifiers = modifiers;
typeDecl.simpleNode = jjtn000;
}
[ "implements" TypeNameList() ]
EnumBody()/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ { className = outerClassName; popTopLevelOrAspect(); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void UnmodifiedEnumDeclaration(String modifiers):
{/*@bgen(jjtree) UnmodifiedEnumDeclaration */
ASTUnmodifiedEnumDeclaration jjtn000 = new ASTUnmodifiedEnumDeclaration(this, JJTUNMODIFIEDENUMDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) UnmodifiedEnumDeclaration */
try {
/*@egen*/
"enum" { pushTopLevelOrAspect("enum"); } JavaIdentifier()
[ "implements" TypeNameList() ]
EnumBody()/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ popTopLevelOrAspect();
if (shouldAddClassBodyDecl()) {
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void EnumBody():
{/*@bgen(jjtree) EnumBody */
ASTEnumBody jjtn000 = new ASTEnumBody(this, JJTENUMBODY);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
SimpleNode n;
}
{/*@bgen(jjtree) EnumBody */
try {
/*@egen*/
"{"
EnumConstant() ( "," EnumConstant() )*
[ ";" ( ClassBodyDeclaration() )* ]
"}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void EnumConstant():
{/*@bgen(jjtree) EnumConstant */
ASTEnumConstant jjtn000 = new ASTEnumConstant(this, JJTENUMCONSTANT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) EnumConstant */
try {
/*@egen*/
JavaIdentifier() [ Arguments() ] [ ClassBody() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
String TypeParameters():
{/*@bgen(jjtree) TypeParameters */
ASTTypeParameters jjtn000 = new ASTTypeParameters(this, JJTTYPEPARAMETERS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) TypeParameters */
try {
/*@egen*/
(
"<" TypeParameter() ( "," TypeParameter() )* ">"
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return Unparser.unparse(jjtn000); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void TypeParameter():
{/*@bgen(jjtree) TypeParameter */
ASTTypeParameter jjtn000 = new ASTTypeParameter(this, JJTTYPEPARAMETER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) TypeParameter */
try {
/*@egen*/
JavaIdentifier() [ TypeBound() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void TypeBound():
{/*@bgen(jjtree) TypeBound */
ASTTypeBound jjtn000 = new ASTTypeBound(this, JJTTYPEBOUND);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) TypeBound */
try {
/*@egen*/
"extends" ClassOrInterfaceType() ( "&" ClassOrInterfaceType() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ClassBody() :
{/*@bgen(jjtree) ClassBody */
ASTClassBody jjtn000 = new ASTClassBody(this, JJTCLASSBODY);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ClassBody */
try {
/*@egen*/
"{" ( ClassBodyDeclaration() )* "}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/* Added one branch corresponding to attribute declarations
and two branches for syn and inh attribute equations */
SimpleNode ClassBodyDeclaration() :
{/*@bgen(jjtree) ClassBodyDeclaration */
ASTClassBodyDeclaration jjtn000 = new ASTClassBodyDeclaration(this, JJTCLASSBODYDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String modifiers;
}
{/*@bgen(jjtree) ClassBodyDeclaration */
try {
/*@egen*/
(
LOOKAHEAD(2)
Initializer()
|
modifiers = Modifiers()
(
UnmodifiedClassDeclaration(modifiers)
|
UnmodifiedInterfaceDeclaration(modifiers)
|
AnnotationTypeDeclaration(modifiers)
|
UnmodifiedEnumDeclaration(modifiers)
|
LOOKAHEAD( [TypeParameters() ] JavaIdentifier() "(" )
ConstructorDeclaration(modifiers)
|
LOOKAHEAD( AspectType() JavaIdentifier() ( "[" "]" )* ( "," | "=" | ";" ) )
FieldDeclaration(modifiers)
|
MethodDeclaration(modifiers)
)
|
";"
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
return jjtn000;
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void InterfaceDeclaration(String modifiers) :
{/*@bgen(jjtree) InterfaceDeclaration */
ASTInterfaceDeclaration jjtn000 = new ASTInterfaceDeclaration(this, JJTINTERFACEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) InterfaceDeclaration */
try {
/*@egen*/
UnmodifiedInterfaceDeclaration(modifiers)/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void UnmodifiedInterfaceDeclaration(String modifiers) :
{/*@bgen(jjtree) UnmodifiedInterfaceDeclaration */
ASTUnmodifiedInterfaceDeclaration jjtn000 = new ASTUnmodifiedInterfaceDeclaration(this, JJTUNMODIFIEDINTERFACEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
boolean isTopLevel;
Token t;
Token first;
String outerClassName;
SimpleNode nameList = null;
org.jastadd.ast.AST.TypeDecl typeDecl = null;
String typeParameters;
}
{/*@bgen(jjtree) UnmodifiedInterfaceDeclaration */
try {
/*@egen*/
first = "interface"
t = {
isTopLevel = inTopLevelOrAspect();
pushTopLevelOrAspect("interface");
outerClassName = className;
className = t.image;
if (isTopLevel) {
typeDecl = root.findInterfaceDecl(className, Unparser.unparseComment(jjtn000),
fileName, first.beginLine, enclosingAspect);
typeDecl.modifiers = modifiers;
}
}
[ typeParameters = TypeParameters() { if (isTopLevel) typeDecl.typeParameters = typeParameters; } ]
[ "extends" nameList = TypeNameList() { if (isTopLevel) root.addInterface(nameList, className, fileName); } ]
"{" ( InterfaceMemberDeclaration() )* "}" { className = outerClassName; popTopLevelOrAspect(); }/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ if (shouldAddClassBodyDecl()) {
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void InterfaceMemberDeclaration() :
{/*@bgen(jjtree) InterfaceMemberDeclaration */
ASTInterfaceMemberDeclaration jjtn000 = new ASTInterfaceMemberDeclaration(this, JJTINTERFACEMEMBERDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String modifiers;
}
{/*@bgen(jjtree) InterfaceMemberDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
(
UnmodifiedClassDeclaration(modifiers)
|
UnmodifiedInterfaceDeclaration(modifiers)
|
LOOKAHEAD( AspectType() JavaIdentifier() ( "[" "]" )* ( "," | "=" | ";" ) )
FieldDeclaration(modifiers)
|
MethodDeclaration(modifiers)
)
|
";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void FieldDeclaration(String modifiers) :
{/*@bgen(jjtree) FieldDeclaration */
ASTFieldDeclaration jjtn000 = new ASTFieldDeclaration(this, JJTFIELDDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) FieldDeclaration */
try {
/*@egen*/
AspectType() VariableDeclarator() ( "," VariableDeclarator() )* ";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ if (shouldAddClassBodyDecl()) {
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void VariableDeclarator() :
{/*@bgen(jjtree) VariableDeclarator */
ASTVariableDeclarator jjtn000 = new ASTVariableDeclarator(this, JJTVARIABLEDECLARATOR);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) VariableDeclarator */
try {
/*@egen*/
VariableDeclaratorId() [ "=" VariableInitializer() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void VariableDeclaratorId() :
{/*@bgen(jjtree) VariableDeclaratorId */
ASTVariableDeclaratorId jjtn000 = new ASTVariableDeclaratorId(this, JJTVARIABLEDECLARATORID);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) VariableDeclaratorId */
try {
/*@egen*/
JavaIdentifier() ( "[" "]" )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void VariableInitializer() :
{/*@bgen(jjtree) VariableInitializer */
ASTVariableInitializer jjtn000 = new ASTVariableInitializer(this, JJTVARIABLEINITIALIZER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) VariableInitializer */
try {
/*@egen*/
ArrayInitializer()
|
Expression()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ArrayInitializer() :
{/*@bgen(jjtree) ArrayInitializer */
ASTArrayInitializer jjtn000 = new ASTArrayInitializer(this, JJTARRAYINITIALIZER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ArrayInitializer */
try {
/*@egen*/
"{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ "," ] "}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MethodDeclaration(String modifiers) :
{/*@bgen(jjtree) MethodDeclaration */
ASTMethodDeclaration jjtn000 = new ASTMethodDeclaration(this, JJTMETHODDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MethodDeclaration */
try {
/*@egen*/
[ TypeParameters() ]
AspectResultType() MethodDeclarator() [ "throws" NameList() ]
( Block() | ";" )/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ if (shouldAddClassBodyDecl()) {
root.addMethodDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MethodDeclarator() :
{/*@bgen(jjtree) MethodDeclarator */
ASTMethodDeclarator jjtn000 = new ASTMethodDeclarator(this, JJTMETHODDECLARATOR);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MethodDeclarator */
try {
/*@egen*/
JavaIdentifier() FormalParameters() ( "[" "]" )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void FormalParameters() :
{/*@bgen(jjtree) FormalParameters */
ASTFormalParameters jjtn000 = new ASTFormalParameters(this, JJTFORMALPARAMETERS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) FormalParameters */
try {
/*@egen*/
"(" [ FormalParameter() ( "," FormalParameter() )* ] ")"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void FormalParameter() :
{/*@bgen(jjtree) FormalParameter */
ASTFormalParameter jjtn000 = new ASTFormalParameter(this, JJTFORMALPARAMETER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) FormalParameter */
try {
/*@egen*/
[ "final" ] Type() ["..."] VariableDeclaratorId()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ConstructorDeclaration(String modifiers) :
{/*@bgen(jjtree) ConstructorDeclaration */
ASTConstructorDeclaration jjtn000 = new ASTConstructorDeclaration(this, JJTCONSTRUCTORDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ConstructorDeclaration */
try {
/*@egen*/
[ TypeParameters() ]
JavaIdentifier() FormalParameters() [ "throws" NameList() ]
"{"
[ LOOKAHEAD(ExplicitConstructorInvocation()) ExplicitConstructorInvocation() ]
( BlockStatement() )*
"}"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ if (shouldAddClassBodyDecl()) {
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ExplicitConstructorInvocation() :
{/*@bgen(jjtree) ExplicitConstructorInvocation */
ASTExplicitConstructorInvocation jjtn000 = new ASTExplicitConstructorInvocation(this, JJTEXPLICITCONSTRUCTORINVOCATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ExplicitConstructorInvocation */
try {
/*@egen*/
LOOKAHEAD("this" Arguments() ";")
"this" Arguments() ";"
|
[ LOOKAHEAD(2) PrimaryExpression() "." ] "super" Arguments() ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void Initializer() :
{/*@bgen(jjtree) Initializer */
ASTInitializer jjtn000 = new ASTInitializer(this, JJTINITIALIZER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Initializer */
try {
/*@egen*/
[ "static" ] Block()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/*
* Type, name and expression syntax follows.
*/
// Attribute type names can not start with JastAdd reserved words such as 'syn', 'eq', etc.
String AspectType():
{/*@bgen(jjtree) AspectType */
ASTAspectType jjtn000 = new ASTAspectType(this, JJTASPECTTYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectType */
try {
/*@egen*/
(
LOOKAHEAD(2) AspectReferenceType()
|
LOOKAHEAD(2) PrimitiveType() ( LOOKAHEAD(2) "[" "]" )+
|
PrimitiveType()
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return Unparser.unparse(jjtn000); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectResultType():
{/*@bgen(jjtree) AspectResultType */
ASTAspectResultType jjtn000 = new ASTAspectResultType(this, JJTASPECTRESULTTYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectResultType */
try {
/*@egen*/
"void"
|
AspectType()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AspectReferenceType():
{/*@bgen(jjtree) AspectReferenceType */
ASTAspectReferenceType jjtn000 = new ASTAspectReferenceType(this, JJTASPECTREFERENCETYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectReferenceType */
try {
/*@egen*/
( AspectClassOrInterfaceType() ) ( LOOKAHEAD(2) "[" "]" )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
SimpleNode AspectClassOrInterfaceType():
{/*@bgen(jjtree) AspectClassOrInterfaceType */
ASTAspectClassOrInterfaceType jjtn000 = new ASTAspectClassOrInterfaceType(this, JJTASPECTCLASSORINTERFACETYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AspectClassOrInterfaceType */
try {
/*@egen*/
(
[ LOOKAHEAD(2) TypeArguments() ]
( LOOKAHEAD(2) "." JavaIdentifier() [ LOOKAHEAD(2) TypeArguments() ] )*
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return jjtn000; }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/*Changed to return string */
String Type():
{/*@bgen(jjtree) Type */
ASTType jjtn000 = new ASTType(this, JJTTYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Type */
try {
/*@egen*/
(
LOOKAHEAD(2) ReferenceType()
|
PrimitiveType()
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return Unparser.unparse(jjtn000); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ReferenceType():
{/*@bgen(jjtree) ReferenceType */
ASTReferenceType jjtn000 = new ASTReferenceType(this, JJTREFERENCETYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ReferenceType */
try {
/*@egen*/
PrimitiveType() ( LOOKAHEAD(2) "[" "]" )+
|
( ClassOrInterfaceType() ) ( LOOKAHEAD(2) "[" "]" )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
SimpleNode ClassOrInterfaceType():
{/*@bgen(jjtree) ClassOrInterfaceType */
ASTClassOrInterfaceType jjtn000 = new ASTClassOrInterfaceType(this, JJTCLASSORINTERFACETYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ClassOrInterfaceType */
try {
/*@egen*/
(
JavaIdentifier() [ LOOKAHEAD(2) TypeArguments() ]
( LOOKAHEAD(2) "." JavaIdentifier() [ LOOKAHEAD(2) TypeArguments() ] )*
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return jjtn000; }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void TypeArguments():
{/*@bgen(jjtree) TypeArguments */
ASTTypeArguments jjtn000 = new ASTTypeArguments(this, JJTTYPEARGUMENTS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) TypeArguments */
try {
/*@egen*/
"<" [ TypeArgument() ( "," TypeArgument() )* ] ">"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void TypeArgument():
{/*@bgen(jjtree) TypeArgument */
ASTTypeArgument jjtn000 = new ASTTypeArgument(this, JJTTYPEARGUMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) TypeArgument */
try {
/*@egen*/
ReferenceType()
|
"?" [ WildcardBounds() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void WildcardBounds():
{/*@bgen(jjtree) WildcardBounds */
ASTWildcardBounds jjtn000 = new ASTWildcardBounds(this, JJTWILDCARDBOUNDS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) WildcardBounds */
try {
/*@egen*/
"extends" ReferenceType()
|
"super" ReferenceType()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void PrimitiveType():
{/*@bgen(jjtree) PrimitiveType */
ASTPrimitiveType jjtn000 = new ASTPrimitiveType(this, JJTPRIMITIVETYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) PrimitiveType */
try {
/*@egen*/
"boolean"
|
"char"
|
"byte"
|
"short"
|
"int"
|
"long"
|
"float"
|
"double"/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ResultType():
{/*@bgen(jjtree) ResultType */
ASTResultType jjtn000 = new ASTResultType(this, JJTRESULTTYPE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ResultType */
try {
/*@egen*/
"void"
|
Type()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/* Changed to return token */
String Name() :
/*
* A lookahead of 2 is required below since "Name" can be followed
* by a ".*" when used in the context of an "ImportDeclaration".
*/
{/*@bgen(jjtree) Name */
ASTName jjtn000 = new ASTName(this, JJTNAME);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Name */
try {
/*@egen*/
(JavaIdentifier()
( LOOKAHEAD(2) "." JavaIdentifier()
)*
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return Unparser.unparse(jjtn000); }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
SimpleNode NameList() :
{/*@bgen(jjtree) NameList */
ASTNameList jjtn000 = new ASTNameList(this, JJTNAMELIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) NameList */
try {
/*@egen*/
(Name()
( "," Name()
)*
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
return jjtn000;
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/*
* Expression syntax follows.
*/
SimpleNode Expression() :
/*
* This expansion has been written this way instead of:
* Assignment() | ConditionalExpression()
* for performance reasons.
* However, it is a weakening of the grammar for it allows the LHS of
* assignments to be any conditional expression whereas it can only be
* a primary expression. Consider adding a semantic predicate to work
* around this.
*/
{/*@bgen(jjtree) Expression */
ASTExpression jjtn000 = new ASTExpression(this, JJTEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Expression */
try {
/*@egen*/
(
ConditionalExpression()
[
LOOKAHEAD(2)
AssignmentOperator() Expression()
]
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
return jjtn000;
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AssignmentOperator() :
{/*@bgen(jjtree) AssignmentOperator */
ASTAssignmentOperator jjtn000 = new ASTAssignmentOperator(this, JJTASSIGNMENTOPERATOR);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AssignmentOperator */
try {
/*@egen*/
"=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | "^=" | "|="/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ConditionalExpression() :
{/*@bgen(jjtree) ConditionalExpression */
ASTConditionalExpression jjtn000 = new ASTConditionalExpression(this, JJTCONDITIONALEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ConditionalExpression */
try {
/*@egen*/
ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ConditionalOrExpression() :
{/*@bgen(jjtree) ConditionalOrExpression */
ASTConditionalOrExpression jjtn000 = new ASTConditionalOrExpression(this, JJTCONDITIONALOREXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ConditionalOrExpression */
try {
/*@egen*/
ConditionalAndExpression() ( "||" ConditionalAndExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ConditionalAndExpression() :
{/*@bgen(jjtree) ConditionalAndExpression */
ASTConditionalAndExpression jjtn000 = new ASTConditionalAndExpression(this, JJTCONDITIONALANDEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ConditionalAndExpression */
try {
/*@egen*/
InclusiveOrExpression() ( "&&" InclusiveOrExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void InclusiveOrExpression() :
{/*@bgen(jjtree) InclusiveOrExpression */
ASTInclusiveOrExpression jjtn000 = new ASTInclusiveOrExpression(this, JJTINCLUSIVEOREXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) InclusiveOrExpression */
try {
/*@egen*/
ExclusiveOrExpression() ( "|" ExclusiveOrExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ExclusiveOrExpression() :
{/*@bgen(jjtree) ExclusiveOrExpression */
ASTExclusiveOrExpression jjtn000 = new ASTExclusiveOrExpression(this, JJTEXCLUSIVEOREXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ExclusiveOrExpression */
try {
/*@egen*/
AndExpression() ( "^" AndExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AndExpression() :
{/*@bgen(jjtree) AndExpression */
ASTAndExpression jjtn000 = new ASTAndExpression(this, JJTANDEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AndExpression */
try {
/*@egen*/
EqualityExpression() ( "&" EqualityExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void EqualityExpression() :
{/*@bgen(jjtree) EqualityExpression */
ASTEqualityExpression jjtn000 = new ASTEqualityExpression(this, JJTEQUALITYEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) EqualityExpression */
try {
/*@egen*/
InstanceOfExpression() ( ( "==" | "!=" ) InstanceOfExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void InstanceOfExpression() :
{/*@bgen(jjtree) InstanceOfExpression */
ASTInstanceOfExpression jjtn000 = new ASTInstanceOfExpression(this, JJTINSTANCEOFEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) InstanceOfExpression */
try {
/*@egen*/
RelationalExpression() [ "instanceof" Type() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void RelationalExpression() :
{/*@bgen(jjtree) RelationalExpression */
ASTRelationalExpression jjtn000 = new ASTRelationalExpression(this, JJTRELATIONALEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) RelationalExpression */
try {
/*@egen*/
ShiftExpression() ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ShiftExpression():
{/*@bgen(jjtree) ShiftExpression */
ASTShiftExpression jjtn000 = new ASTShiftExpression(this, JJTSHIFTEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ShiftExpression */
try {
/*@egen*/
AdditiveExpression() ( ( "<<" | RSIGNEDSHIFT() | RUNSIGNEDSHIFT() ) AdditiveExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AdditiveExpression() :
{/*@bgen(jjtree) AdditiveExpression */
ASTAdditiveExpression jjtn000 = new ASTAdditiveExpression(this, JJTADDITIVEEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AdditiveExpression */
try {
/*@egen*/
MultiplicativeExpression() ( ( "+" | "-" ) MultiplicativeExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MultiplicativeExpression() :
{/*@bgen(jjtree) MultiplicativeExpression */
ASTMultiplicativeExpression jjtn000 = new ASTMultiplicativeExpression(this, JJTMULTIPLICATIVEEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MultiplicativeExpression */
try {
/*@egen*/
UnaryExpression() ( ( "*" | "/" | "%" ) UnaryExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void UnaryExpression() :
{/*@bgen(jjtree) UnaryExpression */
ASTUnaryExpression jjtn000 = new ASTUnaryExpression(this, JJTUNARYEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) UnaryExpression */
try {
/*@egen*/
( "+" | "-" ) UnaryExpression()
|
PreIncrementExpression()
|
PreDecrementExpression()
|
UnaryExpressionNotPlusMinus()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void PreIncrementExpression() :
{/*@bgen(jjtree) PreIncrementExpression */
ASTPreIncrementExpression jjtn000 = new ASTPreIncrementExpression(this, JJTPREINCREMENTEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) PreIncrementExpression */
try {
/*@egen*/
"++" PrimaryExpression()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void PreDecrementExpression() :
{/*@bgen(jjtree) PreDecrementExpression */
ASTPreDecrementExpression jjtn000 = new ASTPreDecrementExpression(this, JJTPREDECREMENTEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) PreDecrementExpression */
try {
/*@egen*/
"--" PrimaryExpression()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void UnaryExpressionNotPlusMinus() :
{/*@bgen(jjtree) UnaryExpressionNotPlusMinus */
ASTUnaryExpressionNotPlusMinus jjtn000 = new ASTUnaryExpressionNotPlusMinus(this, JJTUNARYEXPRESSIONNOTPLUSMINUS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) UnaryExpressionNotPlusMinus */
try {
/*@egen*/
( "~" | "!" ) UnaryExpression()
|
LOOKAHEAD( CastLookahead() )
CastExpression()
|
PostfixExpression()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
// This production is to determine lookahead only. The LOOKAHEAD specifications
// below are not used, but they are there just to indicate that we know about
// this.
void CastLookahead() :
{/*@bgen(jjtree) CastLookahead */
ASTCastLookahead jjtn000 = new ASTCastLookahead(this, JJTCASTLOOKAHEAD);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) CastLookahead */
try {
/*@egen*/
LOOKAHEAD(2)
"(" PrimitiveType()
|
LOOKAHEAD("(" Type() "[")
"(" Type() "[" "]"
|
"(" Type() ")" ( "~" | "!" | "(" | JavaIdentifier() | "this" | "super" | "new" | Literal() )/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void PostfixExpression() :
{/*@bgen(jjtree) PostfixExpression */
ASTPostfixExpression jjtn000 = new ASTPostfixExpression(this, JJTPOSTFIXEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) PostfixExpression */
try {
/*@egen*/
PrimaryExpression() [ "++" | "--" ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void CastExpression() :
{/*@bgen(jjtree) CastExpression */
ASTCastExpression jjtn000 = new ASTCastExpression(this, JJTCASTEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) CastExpression */
try {
/*@egen*/
LOOKAHEAD("(" PrimitiveType())
"(" Type() ")" UnaryExpression()
|
"(" Type() ")" UnaryExpressionNotPlusMinus()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void PrimaryExpression() :
{/*@bgen(jjtree) PrimaryExpression */
ASTPrimaryExpression jjtn000 = new ASTPrimaryExpression(this, JJTPRIMARYEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) PrimaryExpression */
try {
/*@egen*/
PrimaryPrefix() ( LOOKAHEAD(2) PrimarySuffix() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MemberSelector():
{/*@bgen(jjtree) MemberSelector */
ASTMemberSelector jjtn000 = new ASTMemberSelector(this, JJTMEMBERSELECTOR);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MemberSelector */
try {
/*@egen*/
"." TypeArguments() JavaIdentifier()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void PrimaryPrefix() :
{/*@bgen(jjtree) PrimaryPrefix */
ASTPrimaryPrefix jjtn000 = new ASTPrimaryPrefix(this, JJTPRIMARYPREFIX);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) PrimaryPrefix */
try {
/*@egen*/
Literal()
|
"this"
|
"super" "." JavaIdentifier()
|
"(" Expression() ")"
|
AllocationExpression()
|
LOOKAHEAD( ResultType() "." "class" )
ResultType() "." "class"
|
Name()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void PrimarySuffix() :
{/*@bgen(jjtree) PrimarySuffix */
ASTPrimarySuffix jjtn000 = new ASTPrimarySuffix(this, JJTPRIMARYSUFFIX);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) PrimarySuffix */
try {
/*@egen*/
LOOKAHEAD(2)
"." "this"
|
LOOKAHEAD(2)
"." AllocationExpression()
|
LOOKAHEAD(3)
"." TypeArguments() JavaIdentifier()
|
"[" Expression() "]"
|
"." JavaIdentifier()
|
Arguments()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void Literal() :
{/*@bgen(jjtree) Literal */
ASTLiteral jjtn000 = new ASTLiteral(this, JJTLITERAL);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Literal */
try {
/*@egen*/
|
|
|
|
BooleanLiteral()
|
NullLiteral()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void BooleanLiteral() :
{/*@bgen(jjtree) BooleanLiteral */
ASTBooleanLiteral jjtn000 = new ASTBooleanLiteral(this, JJTBOOLEANLITERAL);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) BooleanLiteral */
try {
/*@egen*/
"true"
|
"false"/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void NullLiteral() :
{/*@bgen(jjtree) NullLiteral */
ASTNullLiteral jjtn000 = new ASTNullLiteral(this, JJTNULLLITERAL);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) NullLiteral */
try {
/*@egen*/
"null"/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void Arguments() :
{/*@bgen(jjtree) Arguments */
ASTArguments jjtn000 = new ASTArguments(this, JJTARGUMENTS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Arguments */
try {
/*@egen*/
"(" [ ArgumentList() ] ")"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ArgumentList() :
{/*@bgen(jjtree) ArgumentList */
ASTArgumentList jjtn000 = new ASTArgumentList(this, JJTARGUMENTLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ArgumentList */
try {
/*@egen*/
Expression() ( "," Expression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AllocationExpression() :
{/*@bgen(jjtree) AllocationExpression */
ASTAllocationExpression jjtn000 = new ASTAllocationExpression(this, JJTALLOCATIONEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/ String outerClassName = className;
className = "D$u$m$m$y";
pushTopLevelOrAspect("expr");
}
{/*@bgen(jjtree) AllocationExpression */
try {
/*@egen*/
(
LOOKAHEAD(2)
"new" PrimitiveType() ArrayDimsAndInits()
|
"new" ClassOrInterfaceType() [ TypeArguments() ]
(
ArrayDimsAndInits()
|
Arguments()
[ ClassBody() ]
)
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
className = outerClassName;
popTopLevelOrAspect();
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/*
* The third LOOKAHEAD specification below is to parse to PrimarySuffix
* if there is an expression between the "[...]".
*/
void ArrayDimsAndInits() :
{/*@bgen(jjtree) ArrayDimsAndInits */
ASTArrayDimsAndInits jjtn000 = new ASTArrayDimsAndInits(this, JJTARRAYDIMSANDINITS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ArrayDimsAndInits */
try {
/*@egen*/
LOOKAHEAD(2)
( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )*
|
( "[" "]" )+ ArrayInitializer()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/*
* Statement syntax follows.
*/
void Statement() :
{/*@bgen(jjtree) Statement */
ASTStatement jjtn000 = new ASTStatement(this, JJTSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Statement */
try {
/*@egen*/
LOOKAHEAD(2)
LabeledStatement()
|
AssertStatement()
|
Block()
|
EmptyStatement()
|
StatementExpression() ";"
|
SwitchStatement()
|
IfStatement()
|
WhileStatement()
|
DoStatement()
|
ForStatement()
|
BreakStatement()
|
ContinueStatement()
|
ReturnStatement()
|
ThrowStatement()
|
SynchronizedStatement()
|
TryStatement()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AssertStatement():
{/*@bgen(jjtree) AssertStatement */
ASTAssertStatement jjtn000 = new ASTAssertStatement(this, JJTASSERTSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AssertStatement */
try {
/*@egen*/
"assert" Expression() [ ":" Expression() ] ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void LabeledStatement() :
{/*@bgen(jjtree) LabeledStatement */
ASTLabeledStatement jjtn000 = new ASTLabeledStatement(this, JJTLABELEDSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) LabeledStatement */
try {
/*@egen*/
JavaIdentifier() ":" Statement()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
SimpleNode Block() :
{/*@bgen(jjtree) Block */
ASTBlock jjtn000 = new ASTBlock(this, JJTBLOCK);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Block */
try {
/*@egen*/
(
"{" ( BlockStatement() )* "}"
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
return jjtn000;
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void BlockStatement() :
{/*@bgen(jjtree) BlockStatement */
ASTBlockStatement jjtn000 = new ASTBlockStatement(this, JJTBLOCKSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) BlockStatement */
try {
/*@egen*/
LOOKAHEAD([ "final" ] Type() JavaIdentifier())
LocalVariableDeclaration() ";"
|
Statement()
|
UnmodifiedClassDeclaration("")/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void LocalVariableDeclaration() :
{/*@bgen(jjtree) LocalVariableDeclaration */
ASTLocalVariableDeclaration jjtn000 = new ASTLocalVariableDeclaration(this, JJTLOCALVARIABLEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) LocalVariableDeclaration */
try {
/*@egen*/
[ "final" ] Type() VariableDeclarator() ( "," VariableDeclarator() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void EmptyStatement() :
{/*@bgen(jjtree) EmptyStatement */
ASTEmptyStatement jjtn000 = new ASTEmptyStatement(this, JJTEMPTYSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) EmptyStatement */
try {
/*@egen*/
";"/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void StatementExpression() :
/*
* The last expansion of this production accepts more than the legal
* Java expansions for StatementExpression. This expansion does not
* use PostfixExpression for performance reasons.
*/
{/*@bgen(jjtree) StatementExpression */
ASTStatementExpression jjtn000 = new ASTStatementExpression(this, JJTSTATEMENTEXPRESSION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) StatementExpression */
try {
/*@egen*/
PreIncrementExpression()
|
PreDecrementExpression()
|
PrimaryExpression()
[
"++"
|
"--"
|
AssignmentOperator() Expression()
]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void SwitchStatement() :
{/*@bgen(jjtree) SwitchStatement */
ASTSwitchStatement jjtn000 = new ASTSwitchStatement(this, JJTSWITCHSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) SwitchStatement */
try {
/*@egen*/
"switch" "(" Expression() ")" "{"
( SwitchLabel() ( BlockStatement() )* )*
"}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void SwitchLabel() :
{/*@bgen(jjtree) SwitchLabel */
ASTSwitchLabel jjtn000 = new ASTSwitchLabel(this, JJTSWITCHLABEL);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) SwitchLabel */
try {
/*@egen*/
"case" Expression() ":"
|
"default" ":"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void IfStatement() :
/*
* The disambiguating algorithm of JavaCC automatically binds dangling
* else's to the innermost if statement. The LOOKAHEAD specification
* is to tell JavaCC that we know what we are doing.
*/
{/*@bgen(jjtree) IfStatement */
ASTIfStatement jjtn000 = new ASTIfStatement(this, JJTIFSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) IfStatement */
try {
/*@egen*/
"if" "(" Expression() ")" Statement() [ LOOKAHEAD(1) "else" Statement() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void WhileStatement() :
{/*@bgen(jjtree) WhileStatement */
ASTWhileStatement jjtn000 = new ASTWhileStatement(this, JJTWHILESTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) WhileStatement */
try {
/*@egen*/
"while" "(" Expression() ")" Statement()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void DoStatement() :
{/*@bgen(jjtree) DoStatement */
ASTDoStatement jjtn000 = new ASTDoStatement(this, JJTDOSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) DoStatement */
try {
/*@egen*/
"do" Statement() "while" "(" Expression() ")" ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ForStatement() :
{/*@bgen(jjtree) ForStatement */
ASTForStatement jjtn000 = new ASTForStatement(this, JJTFORSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ForStatement */
try {
/*@egen*/
"for" "("
(
LOOKAHEAD(Type() JavaIdentifier() ":")
Type() JavaIdentifier() ":" Expression()
|
[ ForInit() ] ";" [ Expression() ] ";" [ ForUpdate() ]
)
")" Statement()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ForInit() :
{/*@bgen(jjtree) ForInit */
ASTForInit jjtn000 = new ASTForInit(this, JJTFORINIT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ForInit */
try {
/*@egen*/
LOOKAHEAD( [ "final" ] Type() JavaIdentifier() )
LocalVariableDeclaration()
|
StatementExpressionList()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void StatementExpressionList() :
{/*@bgen(jjtree) StatementExpressionList */
ASTStatementExpressionList jjtn000 = new ASTStatementExpressionList(this, JJTSTATEMENTEXPRESSIONLIST);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) StatementExpressionList */
try {
/*@egen*/
StatementExpression() ( "," StatementExpression() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ForUpdate() :
{/*@bgen(jjtree) ForUpdate */
ASTForUpdate jjtn000 = new ASTForUpdate(this, JJTFORUPDATE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ForUpdate */
try {
/*@egen*/
StatementExpressionList()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void BreakStatement() :
{/*@bgen(jjtree) BreakStatement */
ASTBreakStatement jjtn000 = new ASTBreakStatement(this, JJTBREAKSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) BreakStatement */
try {
/*@egen*/
"break" [ JavaIdentifier() ] ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ContinueStatement() :
{/*@bgen(jjtree) ContinueStatement */
ASTContinueStatement jjtn000 = new ASTContinueStatement(this, JJTCONTINUESTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ContinueStatement */
try {
/*@egen*/
"continue" [ JavaIdentifier() ] ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ReturnStatement() :
{/*@bgen(jjtree) ReturnStatement */
ASTReturnStatement jjtn000 = new ASTReturnStatement(this, JJTRETURNSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ReturnStatement */
try {
/*@egen*/
"return" [ Expression() ] ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void ThrowStatement() :
{/*@bgen(jjtree) ThrowStatement */
ASTThrowStatement jjtn000 = new ASTThrowStatement(this, JJTTHROWSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) ThrowStatement */
try {
/*@egen*/
"throw" Expression() ";"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void SynchronizedStatement() :
{/*@bgen(jjtree) SynchronizedStatement */
ASTSynchronizedStatement jjtn000 = new ASTSynchronizedStatement(this, JJTSYNCHRONIZEDSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) SynchronizedStatement */
try {
/*@egen*/
"synchronized" "(" Expression() ")" Block()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void TryStatement() :
/*
* Semantic check required here to make sure that at least one
* finally/catch is present.
*/
{/*@bgen(jjtree) TryStatement */
ASTTryStatement jjtn000 = new ASTTryStatement(this, JJTTRYSTATEMENT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) TryStatement */
try {
/*@egen*/
"try" Block()
( "catch" "(" FormalParameter() ")" Block() )*
[ "finally" Block() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/* We use productions to match >>>, >> and > so that we can keep the
* type declaration syntax with generics clean
*/
void RUNSIGNEDSHIFT():
{/*@bgen(jjtree) RUNSIGNEDSHIFT */
ASTRUNSIGNEDSHIFT jjtn000 = new ASTRUNSIGNEDSHIFT(this, JJTRUNSIGNEDSHIFT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) RUNSIGNEDSHIFT */
try {
/*@egen*/
( LOOKAHEAD({ getToken(1).kind == GT &&
((Token.GTToken)getToken(1)).realKind == RUNSIGNEDSHIFT} )
">" ">" ">"
)/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void RSIGNEDSHIFT():
{/*@bgen(jjtree) RSIGNEDSHIFT */
ASTRSIGNEDSHIFT jjtn000 = new ASTRSIGNEDSHIFT(this, JJTRSIGNEDSHIFT);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) RSIGNEDSHIFT */
try {
/*@egen*/
( LOOKAHEAD({ getToken(1).kind == GT &&
((Token.GTToken)getToken(1)).realKind == RSIGNEDSHIFT} )
">" ">"
)/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/* Annotation syntax follows. */
SimpleNode Annotation():
{/*@bgen(jjtree) Annotation */
ASTAnnotation jjtn000 = new ASTAnnotation(this, JJTANNOTATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) Annotation */
try {
/*@egen*/
(
LOOKAHEAD( NormalAnnotation() )
NormalAnnotation()
|
LOOKAHEAD( SingleMemberAnnotation() )
SingleMemberAnnotation()
|
LOOKAHEAD( MarkerAnnotation() )
MarkerAnnotation()
)/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ return jjtn000; }/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void NormalAnnotation():
{/*@bgen(jjtree) NormalAnnotation */
ASTNormalAnnotation jjtn000 = new ASTNormalAnnotation(this, JJTNORMALANNOTATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) NormalAnnotation */
try {
/*@egen*/
"@" Name() "(" [ MemberValuePairs() ] ")"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MarkerAnnotation():
{/*@bgen(jjtree) MarkerAnnotation */
ASTMarkerAnnotation jjtn000 = new ASTMarkerAnnotation(this, JJTMARKERANNOTATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MarkerAnnotation */
try {
/*@egen*/
"@" Name()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void SingleMemberAnnotation():
{/*@bgen(jjtree) SingleMemberAnnotation */
ASTSingleMemberAnnotation jjtn000 = new ASTSingleMemberAnnotation(this, JJTSINGLEMEMBERANNOTATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) SingleMemberAnnotation */
try {
/*@egen*/
"@" Name() "(" MemberValue() ")"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MemberValuePairs():
{/*@bgen(jjtree) MemberValuePairs */
ASTMemberValuePairs jjtn000 = new ASTMemberValuePairs(this, JJTMEMBERVALUEPAIRS);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MemberValuePairs */
try {
/*@egen*/
MemberValuePair() ( "," MemberValuePair() )*/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MemberValuePair():
{/*@bgen(jjtree) MemberValuePair */
ASTMemberValuePair jjtn000 = new ASTMemberValuePair(this, JJTMEMBERVALUEPAIR);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MemberValuePair */
try {
/*@egen*/
JavaIdentifier() "=" MemberValue()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MemberValue():
{/*@bgen(jjtree) MemberValue */
ASTMemberValue jjtn000 = new ASTMemberValue(this, JJTMEMBERVALUE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MemberValue */
try {
/*@egen*/
Annotation()
|
MemberValueArrayInitializer()
|
ConditionalExpression()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void MemberValueArrayInitializer():
{/*@bgen(jjtree) MemberValueArrayInitializer */
ASTMemberValueArrayInitializer jjtn000 = new ASTMemberValueArrayInitializer(this, JJTMEMBERVALUEARRAYINITIALIZER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) MemberValueArrayInitializer */
try {
/*@egen*/
"{" MemberValue() ( LOOKAHEAD(2) "," MemberValue() )* [ "," ] "}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
/* Annotation Types. */
void AnnotationTypeDeclaration(String modifiers):
{/*@bgen(jjtree) AnnotationTypeDeclaration */
ASTAnnotationTypeDeclaration jjtn000 = new ASTAnnotationTypeDeclaration(this, JJTANNOTATIONTYPEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AnnotationTypeDeclaration */
try {
/*@egen*/
"@" "interface" { pushTopLevelOrAspect("annotation"); } JavaIdentifier() AnnotationTypeBody() { popTopLevelOrAspect(); }/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{ if (shouldAddClassBodyDecl()) {
root.addClassBodyDecl(jjtn000, className, fileName, modifiers, enclosingAspect);
}
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AnnotationTypeBody():
{/*@bgen(jjtree) AnnotationTypeBody */
ASTAnnotationTypeBody jjtn000 = new ASTAnnotationTypeBody(this, JJTANNOTATIONTYPEBODY);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) AnnotationTypeBody */
try {
/*@egen*/
"{" ( AnnotationTypeMemberDeclaration() )* "}"/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void AnnotationTypeMemberDeclaration():
{/*@bgen(jjtree) AnnotationTypeMemberDeclaration */
ASTAnnotationTypeMemberDeclaration jjtn000 = new ASTAnnotationTypeMemberDeclaration(this, JJTANNOTATIONTYPEMEMBERDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
String modifiers;
}
{/*@bgen(jjtree) AnnotationTypeMemberDeclaration */
try {
/*@egen*/
modifiers = Modifiers()
(
LOOKAHEAD(AspectType() JavaIdentifier() "(")
AspectType() JavaIdentifier() "(" ")" [ DefaultValue() ] ";"
|
UnmodifiedClassDeclaration(modifiers)
|
UnmodifiedInterfaceDeclaration(modifiers)
|
UnmodifiedEnumDeclaration(modifiers)
|
AnnotationTypeDeclaration(modifiers)
|
FieldDeclaration(modifiers)
)
|
( ";" )/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
void DefaultValue():
{/*@bgen(jjtree) DefaultValue */
ASTDefaultValue jjtn000 = new ASTDefaultValue(this, JJTDEFAULTVALUE);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) DefaultValue */
try {
/*@egen*/
"default" MemberValue()/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
// Adding (cache|uncached) keywords in front of each line in the cache configuration.
// This information is propagated to the grammar via setAttributeCacheMode(..)
void AspectCacheDeclaration():
{/*@bgen(jjtree) AspectCacheDeclaration */
ASTAspectCacheDeclaration jjtn000 = new ASTAspectCacheDeclaration(this, JJTASPECTCACHEDECLARATION);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/
Token t;
Token cacheConfig;
Token hostType;
Token attrName;
int paramIndex = 1;
String paramType;
Token paramName;
org.jastadd.ast.AST.List paramList = new org.jastadd.ast.AST.List();
}
{/*@bgen(jjtree) AspectCacheDeclaration */
try {
/*@egen*/
( cacheConfig = "cache" | cacheConfig = "uncache" )
hostType = "."
attrName = AttributeName()
"(" { paramList = new org.jastadd.ast.AST.List(); }
[
paramType = Type() ()?
{ paramList.add(new org.jastadd.ast.AST.Parameter(paramType, "p0")); }
(
"," paramType = Type() ()?
{ paramList.add(new org.jastadd.ast.AST.Parameter(paramType, "p" + (paramIndex++))); }
)*
]
")"
";"/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/
{
root.setAttributeCacheMode(cacheConfig.image, hostType.image, attrName.image,
paramList, fileName, cacheConfig.beginLine);
}/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
throw (RuntimeException)jjte000;
}
if (jjte000 instanceof ParseException) {
throw (ParseException)jjte000;
}
throw (Error)jjte000;
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
// Valid Java identifiers include 'syn', 'eq', etc. (reserved JastAdd words are legal in pure Java)
void JavaIdentifier() :
{/*@bgen(jjtree) JavaIdentifier */
ASTJavaIdentifier jjtn000 = new ASTJavaIdentifier(this, JJTJAVAIDENTIFIER);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) JavaIdentifier */
try {
/*@egen*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| /*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}
Token AttributeName() :
{/*@bgen(jjtree) AttributeName */
ASTAttributeName jjtn000 = new ASTAttributeName(this, JJTATTRIBUTENAME);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
jjtreeOpenNodeScope(jjtn000);
/*@egen*/Token t;}
{/*@bgen(jjtree) AttributeName */
try {
/*@egen*/
t = /*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
jjtc000 = false;
jjtreeCloseNodeScope(jjtn000);
}
/*@egen*/ { return t; }/*@bgen(jjtree)*/
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
jjtreeCloseNodeScope(jjtn000);
}
}
/*@egen*/
}