org.codehaus.groovy.antlr.parser.GroovyRecognizer Maven / Gradle / Ivy
Show all versions of groovy-all-minimal Show documentation
// $ANTLR 2.7.6 (2005-12-22): "groovy.g" -> "GroovyRecognizer.java"$
package org.codehaus.groovy.antlr.parser;
import org.codehaus.groovy.antlr.*;
import java.util.*;
import java.io.InputStream;
import java.io.Reader;
import antlr.InputBuffer;
import antlr.LexerSharedInputState;
import antlr.TokenBuffer;
import antlr.TokenStreamException;
import antlr.TokenStreamIOException;
import antlr.ANTLRException;
import antlr.LLkParser;
import antlr.Token;
import antlr.TokenStream;
import antlr.RecognitionException;
import antlr.NoViableAltException;
import antlr.MismatchedTokenException;
import antlr.SemanticException;
import antlr.ParserSharedInputState;
import antlr.collections.impl.BitSet;
import antlr.collections.AST;
import java.util.Hashtable;
import antlr.ASTFactory;
import antlr.ASTPair;
import antlr.collections.impl.ASTArray;
/** JSR-241 Groovy Recognizer
*
* Run 'java Main [-showtree] directory-full-of-groovy-files'
*
* [The -showtree option pops up a Swing frame that shows
* the AST constructed from the parser.]
*
* Contributing authors:
* John Mitchell [email protected]
* Terence Parr [email protected]
* John Lilley [email protected]
* Scott Stanchfield [email protected]
* Markus Mohnen [email protected]
* Peter Williams [email protected]
* Allan Jacobs [email protected]
* Steve Messick [email protected]
* James Strachan [email protected]
* John Pybus [email protected]
* John Rose [email protected]
* Jeremy Rayner [email protected]
* Alex Popescu [email protected]
*
* Version 1.00 December 9, 1997 -- initial release
* Version 1.01 December 10, 1997
* fixed bug in octal def (0..7 not 0..8)
* Version 1.10 August 1998 (parrt)
* added tree construction
* fixed definition of WS,comments for mac,pc,unix newlines
* added unary plus
* Version 1.11 (Nov 20, 1998)
* Added "shutup" option to turn off last ambig warning.
* Fixed inner class def to allow named class defs as statements
* synchronized requires compound not simple statement
* add [] after builtInType DOT class in primaryExpression
* "const" is reserved but not valid..removed from modifiers
* Version 1.12 (Feb 2, 1999)
* Changed LITERAL_xxx to xxx in tree grammar.
* Updated java.g to use tokens {...} now for 2.6.0 (new feature).
*
* Version 1.13 (Apr 23, 1999)
* Didn't have (stat)? for else clause in tree parser.
* Didn't gen ASTs for interface extends. Updated tree parser too.
* Updated to 2.6.0.
* Version 1.14 (Jun 20, 1999)
* Allowed final/abstract on local classes.
* Removed local interfaces from methods
* Put instanceof precedence where it belongs...in relationalExpr
* It also had expr not type as arg; fixed it.
* Missing ! on SEMI in classBlock
* fixed: (expr) + "string" was parsed incorrectly (+ as unary plus).
* fixed: didn't like Object[].class in parser or tree parser
* Version 1.15 (Jun 26, 1999)
* Screwed up rule with instanceof in it. :( Fixed.
* Tree parser didn't like (expr).something; fixed.
* Allowed multiple inheritance in tree grammar. oops.
* Version 1.16 (August 22, 1999)
* Extending an interface built a wacky tree: had extra EXTENDS.
* Tree grammar didn't allow multiple superinterfaces.
* Tree grammar didn't allow empty var initializer: {}
* Version 1.17 (October 12, 1999)
* ESC lexer rule allowed 399 max not 377 max.
* java.tree.g didn't handle the expression of synchronized
* statements.
* Version 1.18 (August 12, 2001)
* Terence updated to Java 2 Version 1.3 by
* observing/combining work of Allan Jacobs and Steve
* Messick. Handles 1.3 src. Summary:
* o primary didn't include boolean.class kind of thing
* o constructor calls parsed explicitly now:
* see explicitConstructorInvocation
* o add strictfp modifier
* o missing objBlock after new expression in tree grammar
* o merged local class definition alternatives, moved after declaration
* o fixed problem with ClassName.super.field
* o reordered some alternatives to make things more efficient
* o long and double constants were not differentiated from int/float
* o whitespace rule was inefficient: matched only one char
* o add an examples directory with some nasty 1.3 cases
* o made Main.java use buffered IO and a Reader for Unicode support
* o supports UNICODE?
* Using Unicode charVocabulay makes code file big, but only
* in the bitsets at the end. I need to make ANTLR generate
* unicode bitsets more efficiently.
* Version 1.19 (April 25, 2002)
* Terence added in nice fixes by John Pybus concerning floating
* constants and problems with super() calls. John did a nice
* reorg of the primary/postfix expression stuff to read better
* and makes f.g.super() parse properly (it was METHOD_CALL not
* a SUPER_CTOR_CALL). Also:
*
* o "finally" clause was a root...made it a child of "try"
* o Added stuff for asserts too for Java 1.4, but *commented out*
* as it is not backward compatible.
*
* Version 1.20 (October 27, 2002)
*
* Terence ended up reorging John Pybus' stuff to
* remove some nondeterminisms and some syntactic predicates.
* Note that the grammar is stricter now; e.g., this(...) must
* be the first statement.
*
* Trinary ?: operator wasn't working as array name:
* (isBig ? bigDigits : digits)[i];
*
* Checked parser/tree parser on source for
* Resin-2.0.5, jive-2.1.1, jdk 1.3.1, Lucene, antlr 2.7.2a4,
* and the 110k-line jGuru server source.
*
* Version 1.21 (October 17, 2003)
* Fixed lots of problems including:
* Ray Waldin: add typeDefinition to interfaceBlock in java.tree.g
* He found a problem/fix with floating point that start with 0
* Ray also fixed problem that (int.class) was not recognized.
* Thorsten van Ellen noticed that \n are allowed incorrectly in strings.
* TJP fixed CHAR_LITERAL analogously.
*
* Version 1.21.2 (March, 2003)
* Changes by Matt Quail to support generics (as per JDK1.5/JSR14)
* Notes:
* o We only allow the "extends" keyword and not the "implements"
* keyword, since thats what JSR14 seems to imply.
* o Thanks to Monty Zukowski for his help on the antlr-interest
* mail list.
* o Thanks to Alan Eliasen for testing the grammar over his
* Fink source base
*
* Version 1.22 (July, 2004)
* Changes by Michael Studman to support Java 1.5 language extensions
* Notes:
* o Added support for annotations types
* o Finished off Matt Quail's generics enhancements to support bound type arguments
* o Added support for new for statement syntax
* o Added support for static import syntax
* o Added support for enum types
* o Tested against JDK 1.5 source base and source base of jdigraph project
* o Thanks to Matt Quail for doing the hard part by doing most of the generics work
*
* Version 1.22.1 (July 28, 2004)
* Bug/omission fixes for Java 1.5 language support
* o Fixed tree structure bug with classOrInterface - thanks to Pieter Vangorpto for
* spotting this
* o Fixed bug where incorrect handling of SR and BSR tokens would cause type
* parameters to be recognised as type arguments.
* o Enabled type parameters on constructors, annotations on enum constants
* and package definitions
* o Fixed problems when parsing if ((char.class.equals(c))) {} - solution by Matt Quail at Cenqua
*
* Version 1.22.2 (July 28, 2004)
* Slight refactoring of Java 1.5 language support
* o Refactored for/"foreach" productions so that original literal "for" literal
* is still used but the for sub-clauses vary by token type
* o Fixed bug where type parameter was not included in generic constructor's branch of AST
*
* Version 1.22.3 (August 26, 2004)
* Bug fixes as identified by Michael Stahl; clean up of tabs/spaces
* and other refactorings
* o Fixed typeParameters omission in identPrimary and newStatement
* o Replaced GT reconcilliation code with simple semantic predicate
* o Adapted enum/assert keyword checking support from Michael Stahl's java15 grammar
* o Refactored typeDefinition production and field productions to reduce duplication
*
* Version 1.22.4 (October 21, 2004)
* Small bux fixes
* o Added typeArguments to explicitConstructorInvocation, e.g. new MyParameterised()
* o Added typeArguments to postfixExpression productions for anonymous inner class super
* constructor invocation, e.g. new Outer().super()
* o Fixed bug in array declarations identified by Geoff Roy
*
* Version 1.22.4.g.1
* o I have taken java.g for Java1.5 from Michael Studman (1.22.4)
* and have applied the groovy.diff from java.g (1.22) by John Rose
* back onto the new root (1.22.4) - Jeremy Rayner (Jan 2005)
* o for a map of the task see...
* http://groovy.javanicus.com/java-g.png
*
* This grammar is in the PUBLIC DOMAIN
*/
public class GroovyRecognizer extends antlr.LLkParser implements GroovyTokenTypes
{
/** This factory is the correct way to wire together a Groovy parser and lexer. */
public static GroovyRecognizer make(GroovyLexer lexer) {
GroovyRecognizer parser = new GroovyRecognizer(lexer.plumb());
// TODO: set up a common error-handling control block, to avoid excessive tangle between these guys
parser.lexer = lexer;
lexer.parser = parser;
parser.getASTFactory().setASTNodeClass(GroovySourceAST.class);
parser.warningList = new ArrayList();
return parser;
}
// Create a scanner that reads from the input stream passed to us...
public static GroovyRecognizer make(InputStream in) { return make(new GroovyLexer(in)); }
public static GroovyRecognizer make(Reader in) { return make(new GroovyLexer(in)); }
public static GroovyRecognizer make(InputBuffer in) { return make(new GroovyLexer(in)); }
public static GroovyRecognizer make(LexerSharedInputState in) { return make(new GroovyLexer(in)); }
private static GroovySourceAST dummyVariableToforceClassLoaderToFindASTClass = new GroovySourceAST();
List warningList;
public List getWarningList() { return warningList; }
GroovyLexer lexer;
public GroovyLexer getLexer() { return lexer; }
public void setFilename(String f) { super.setFilename(f); lexer.setFilename(f); }
private SourceBuffer sourceBuffer;
public void setSourceBuffer(SourceBuffer sourceBuffer) {
this.sourceBuffer = sourceBuffer;
}
/** Create an AST node with the token type and text passed in, but
* with the same background information as another supplied Token (e.g. line numbers).
* To be used in place of antlr tree construction syntax,
* i.e. #[TOKEN,"text"] becomes create(TOKEN,"text",anotherToken)
*
* todo - change antlr.ASTFactory to do this instead...
*/
public AST create(int type, String txt, Token first, Token last) {
AST t = astFactory.create(type,txt);
if ( t != null && first != null) {
// first copy details from first token
t.initialize(first);
// then ensure that type and txt are specific to this new node
t.initialize(type,txt);
}
if ((t instanceof GroovySourceAST) && last != null) {
GroovySourceAST node = (GroovySourceAST)t;
node.setLast(last);
// This is a good point to call node.setSnippet(),
// but it bulks up the AST too much for production code.
}
return t;
}
// stuff to adjust ANTLR's tracing machinery
public static boolean tracing = false; // only effective if antlr.Tool is run with -traceParser
public void traceIn(String rname) throws TokenStreamException {
if (!GroovyRecognizer.tracing) return;
super.traceIn(rname);
}
public void traceOut(String rname) throws TokenStreamException {
if (!GroovyRecognizer.tracing) return;
if (returnAST != null) rname += returnAST.toStringList();
super.traceOut(rname);
}
// Error handling. This is a funnel through which parser errors go, when the parser can suggest a solution.
public void requireFailed(String problem, String solution) throws SemanticException {
// TODO: Needs more work.
Token lt = null;
try { lt = LT(1); }
catch (TokenStreamException ee) { }
if (lt == null) lt = Token.badToken;
throw new SemanticException(problem + ";\n solution: " + solution,
getFilename(), lt.getLine(), lt.getColumn());
}
public void addWarning(String warning, String solution) {
Token lt = null;
try { lt = LT(1); }
catch (TokenStreamException ee) { }
if (lt == null) lt = Token.badToken;
Map row = new HashMap();
row.put("warning" ,warning);
row.put("solution",solution);
row.put("filename",getFilename());
row.put("line" ,new Integer(lt.getLine()));
row.put("column" ,new Integer(lt.getColumn()));
// System.out.println(row);
warningList.add(row);
}
// Convenience method for checking of expected error syndromes.
private void require(boolean z, String problem, String solution) throws SemanticException {
if (!z) requireFailed(problem, solution);
}
// Query a name token to see if it begins with a capital letter.
// This is used to tell the difference (w/o symbol table access) between {String x} and {println x}.
private boolean isUpperCase(Token x) {
if (x == null || x.getType() != IDENT) return false; // cannot happen?
String xtext = x.getText();
return (xtext.length() > 0 && Character.isUpperCase(xtext.charAt(0)));
}
private AST currentClass = null; // current enclosing class (for constructor recognition)
// Query a name token to see if it is identical with the current class name.
// This is used to distinguish constructors from other methods.
private boolean isConstructorIdent(Token x) {
if (currentClass == null) return false;
if (currentClass.getType() != IDENT) return false; // cannot happen?
String cname = currentClass.getText();
if (x == null || x.getType() != IDENT) return false; // cannot happen?
return cname.equals(x.getText());
}
// Scratch variable for last 'sep' token.
// Written by the 'sep' rule, read only by immediate callers of 'sep'.
// (Not entirely clean, but better than a million xx=sep occurrences.)
private int sepToken = EOF;
// Scratch variable for last argument list; tells whether there was a label.
// Written by 'argList' rule, read only by immediate callers of 'argList'.
private boolean argListHasLabels = false;
// Scratch variable, holds most recently completed pathExpression.
// Read only by immediate callers of 'pathExpression' and 'expression'.
private AST lastPathExpression = null;
// Inherited attribute pushed into most expression rules.
// If not zero, it means that the left context of the expression
// being parsed is a statement boundary or an initializer sign '='.
// Only such expressions are allowed to reach across newlines
// to pull in an LCURLY and appended block.
private final int LC_STMT = 1, LC_INIT = 2;
/**
* Counts the number of LT seen in the typeArguments production.
* It is used in semantic predicates to ensure we have seen
* enough closing '>' characters; which actually may have been
* either GT, SR or BSR tokens.
*/
private int ltCounter = 0;
/* This symbol is used to work around a known ANTLR limitation.
* In a loop with syntactic predicate, ANTLR needs help knowing
* that the loop exit is a second alternative.
* Example usage: ( (LCURLY)=> block | {ANTLR_LOOP_EXIT}? )*
* Probably should be an ANTLR RFE.
*/
////// Original comment in Java grammar:
// Unfortunately a syntactic predicate can only select one of
// multiple alternatives on the same level, not break out of
// an enclosing loop, which is why this ugly hack (a fake
// empty alternative with always-false semantic predicate)
// is necessary.
private static final boolean ANTLR_LOOP_EXIT = false;
protected GroovyRecognizer(TokenBuffer tokenBuf, int k) {
super(tokenBuf,k);
tokenNames = _tokenNames;
buildTokenTypeASTClassMap();
astFactory = new ASTFactory(getTokenTypeToASTClassMap());
}
public GroovyRecognizer(TokenBuffer tokenBuf) {
this(tokenBuf,2);
}
protected GroovyRecognizer(TokenStream lexer, int k) {
super(lexer,k);
tokenNames = _tokenNames;
buildTokenTypeASTClassMap();
astFactory = new ASTFactory(getTokenTypeToASTClassMap());
}
public GroovyRecognizer(TokenStream lexer) {
this(lexer,2);
}
public GroovyRecognizer(ParserSharedInputState state) {
super(state,2);
tokenNames = _tokenNames;
buildTokenTypeASTClassMap();
astFactory = new ASTFactory(getTokenTypeToASTClassMap());
}
public final void compilationUnit() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST compilationUnit_AST = null;
{
switch ( LA(1)) {
case SH_COMMENT:
{
match(SH_COMMENT);
break;
}
case EOF:
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_package:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case SEMI:
case NLS:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
{
boolean synPredMatched5 = false;
if (((LA(1)==LITERAL_package||LA(1)==AT) && (LA(2)==IDENT))) {
int _m5 = mark();
synPredMatched5 = true;
inputState.guessing++;
try {
{
annotationsOpt();
match(LITERAL_package);
}
}
catch (RecognitionException pe) {
synPredMatched5 = false;
}
rewind(_m5);
inputState.guessing--;
}
if ( synPredMatched5 ) {
packageDefinition();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_0.member(LA(1))) && (_tokenSet_1.member(LA(2)))) {
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
statement(EOF);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
{
_loop9:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
statement(sepToken);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop9;
}
} while (true);
}
match(Token.EOF_TYPE);
compilationUnit_AST = (AST)currentAST.root;
returnAST = compilationUnit_AST;
}
/** Zero or more insignificant newlines, all gobbled up and thrown away. */
public final void nls() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST nls_AST = null;
{
if ((LA(1)==NLS) && (_tokenSet_2.member(LA(2)))) {
match(NLS);
}
else if ((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = nls_AST;
}
public final void annotationsOpt() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationsOpt_AST = null;
Token first = LT(1);
{
_loop87:
do {
if ((LA(1)==AT)) {
annotation();
astFactory.addASTChild(currentAST, returnAST);
nls();
}
else {
break _loop87;
}
} while (true);
}
if ( inputState.guessing==0 ) {
annotationsOpt_AST = (AST)currentAST.root;
annotationsOpt_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(ANNOTATIONS,"ANNOTATIONS",first,LT(1))).add(annotationsOpt_AST));
currentAST.root = annotationsOpt_AST;
currentAST.child = annotationsOpt_AST!=null &&annotationsOpt_AST.getFirstChild()!=null ?
annotationsOpt_AST.getFirstChild() : annotationsOpt_AST;
currentAST.advanceChildToEnd();
}
annotationsOpt_AST = (AST)currentAST.root;
returnAST = annotationsOpt_AST;
}
public final void packageDefinition() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST packageDefinition_AST = null;
Token p = null;
AST p_AST = null;
annotationsOpt();
astFactory.addASTChild(currentAST, returnAST);
p = LT(1);
p_AST = astFactory.create(p);
astFactory.makeASTRoot(currentAST, p_AST);
match(LITERAL_package);
if ( inputState.guessing==0 ) {
p_AST.setType(PACKAGE_DEF);
}
identifier();
astFactory.addASTChild(currentAST, returnAST);
packageDefinition_AST = (AST)currentAST.root;
returnAST = packageDefinition_AST;
}
/** A statement is an element of a block.
* Typical statements are declarations (which are scoped to the block)
* and expressions.
*/
public final void statement(
int prevToken
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST statement_AST = null;
AST pfx_AST = null;
AST m_AST = null;
boolean sce=false;
switch ( LA(1)) {
case LITERAL_if:
{
AST tmp4_AST = null;
tmp4_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp4_AST);
match(LITERAL_if);
match(LPAREN);
assignmentLessExpression();
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
nlsWarn();
compatibleBodyStatement();
astFactory.addASTChild(currentAST, returnAST);
{
boolean synPredMatched263 = false;
if (((_tokenSet_4.member(LA(1))) && (_tokenSet_5.member(LA(2))))) {
int _m263 = mark();
synPredMatched263 = true;
inputState.guessing++;
try {
{
{
switch ( LA(1)) {
case SEMI:
case NLS:
{
sep();
break;
}
case LITERAL_else:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
match(LITERAL_else);
}
}
catch (RecognitionException pe) {
synPredMatched263 = false;
}
rewind(_m263);
inputState.guessing--;
}
if ( synPredMatched263 ) {
{
switch ( LA(1)) {
case SEMI:
case NLS:
{
sep();
break;
}
case LITERAL_else:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
match(LITERAL_else);
nlsWarn();
compatibleBodyStatement();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
statement_AST = (AST)currentAST.root;
break;
}
case LITERAL_for:
{
forStatement();
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
break;
}
case LITERAL_while:
{
AST tmp8_AST = null;
tmp8_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp8_AST);
match(LITERAL_while);
match(LPAREN);
sce=strictContextExpression(false);
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
nlsWarn();
{
switch ( LA(1)) {
case SEMI:
{
AST tmp11_AST = null;
tmp11_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp11_AST);
match(SEMI);
break;
}
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
compatibleBodyStatement();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
statement_AST = (AST)currentAST.root;
break;
}
case LITERAL_import:
{
importStatement();
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
break;
}
case LITERAL_switch:
{
AST tmp12_AST = null;
tmp12_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp12_AST);
match(LITERAL_switch);
match(LPAREN);
sce=strictContextExpression(false);
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
nlsWarn();
match(LCURLY);
nls();
{
_loop267:
do {
if ((LA(1)==LITERAL_default||LA(1)==LITERAL_case)) {
casesGroup();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop267;
}
} while (true);
}
match(RCURLY);
statement_AST = (AST)currentAST.root;
break;
}
case LITERAL_try:
{
tryBlock();
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
break;
}
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
{
branchStatement();
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
break;
}
default:
boolean synPredMatched252 = false;
if (((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2))))) {
int _m252 = mark();
synPredMatched252 = true;
inputState.guessing++;
try {
{
genericMethodStart();
}
}
catch (RecognitionException pe) {
synPredMatched252 = false;
}
rewind(_m252);
inputState.guessing--;
}
if ( synPredMatched252 ) {
genericMethod();
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
}
else {
boolean synPredMatched254 = false;
if (((_tokenSet_10.member(LA(1))) && (_tokenSet_11.member(LA(2))))) {
int _m254 = mark();
synPredMatched254 = true;
inputState.guessing++;
try {
{
declarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched254 = false;
}
rewind(_m254);
inputState.guessing--;
}
if ( synPredMatched254 ) {
declaration();
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
}
else {
boolean synPredMatched256 = false;
if (((LA(1)==IDENT) && (LA(2)==COLON))) {
int _m256 = mark();
synPredMatched256 = true;
inputState.guessing++;
try {
{
match(IDENT);
match(COLON);
}
}
catch (RecognitionException pe) {
synPredMatched256 = false;
}
rewind(_m256);
inputState.guessing--;
}
if ( synPredMatched256 ) {
statementLabelPrefix();
pfx_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
statement_AST = (AST)currentAST.root;
statement_AST = pfx_AST;
currentAST.root = statement_AST;
currentAST.child = statement_AST!=null &&statement_AST.getFirstChild()!=null ?
statement_AST.getFirstChild() : statement_AST;
currentAST.advanceChildToEnd();
}
{
boolean synPredMatched259 = false;
if (((LA(1)==LCURLY) && (_tokenSet_12.member(LA(2))))) {
int _m259 = mark();
synPredMatched259 = true;
inputState.guessing++;
try {
{
match(LCURLY);
}
}
catch (RecognitionException pe) {
synPredMatched259 = false;
}
rewind(_m259);
inputState.guessing--;
}
if ( synPredMatched259 ) {
openOrClosableBlock();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_13.member(LA(1))) && (_tokenSet_14.member(LA(2)))) {
statement(COLON);
astFactory.addASTChild(currentAST, returnAST);
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
statement_AST = (AST)currentAST.root;
}
else if ((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2)))) {
expressionStatement(prevToken);
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
}
else if ((_tokenSet_16.member(LA(1))) && (_tokenSet_17.member(LA(2)))) {
modifiersOpt();
m_AST = (AST)returnAST;
typeDefinitionInternal(m_AST);
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
}
else if ((LA(1)==LITERAL_synchronized) && (LA(2)==LPAREN)) {
AST tmp17_AST = null;
tmp17_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp17_AST);
match(LITERAL_synchronized);
match(LPAREN);
sce=strictContextExpression(false);
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
nlsWarn();
compoundStatement();
astFactory.addASTChild(currentAST, returnAST);
statement_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}}}
returnAST = statement_AST;
}
/** A statement separator is either a semicolon or a significant newline.
* Any number of additional (insignificant) newlines may accompany it.
*/
public final void sep() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST sep_AST = null;
switch ( LA(1)) {
case SEMI:
{
match(SEMI);
{
_loop504:
do {
if ((LA(1)==NLS) && (_tokenSet_18.member(LA(2)))) {
match(NLS);
}
else {
break _loop504;
}
} while (true);
}
if ( inputState.guessing==0 ) {
sepToken = SEMI;
}
break;
}
case NLS:
{
match(NLS);
if ( inputState.guessing==0 ) {
sepToken = NLS;
}
{
_loop508:
do {
if ((LA(1)==SEMI) && (_tokenSet_18.member(LA(2)))) {
match(SEMI);
{
_loop507:
do {
if ((LA(1)==NLS) && (_tokenSet_18.member(LA(2)))) {
match(NLS);
}
else {
break _loop507;
}
} while (true);
}
if ( inputState.guessing==0 ) {
sepToken = SEMI;
}
}
else {
break _loop508;
}
} while (true);
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = sep_AST;
}
/** A Groovy script or simple expression. Can be anything legal inside {...}. */
public final void snippetUnit() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST snippetUnit_AST = null;
nls();
blockBody(EOF);
astFactory.addASTChild(currentAST, returnAST);
snippetUnit_AST = (AST)currentAST.root;
returnAST = snippetUnit_AST;
}
/** A block body is a parade of zero or more statements or expressions. */
public final void blockBody(
int prevToken
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST blockBody_AST = null;
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
statement(prevToken);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
_loop246:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
statement(sepToken);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop246;
}
} while (true);
}
blockBody_AST = (AST)currentAST.root;
returnAST = blockBody_AST;
}
public final void identifier() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST identifier_AST = null;
AST tmp25_AST = null;
tmp25_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp25_AST);
match(IDENT);
{
_loop70:
do {
if ((LA(1)==DOT)) {
AST tmp26_AST = null;
tmp26_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp26_AST);
match(DOT);
nls();
AST tmp27_AST = null;
tmp27_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp27_AST);
match(IDENT);
}
else {
break _loop70;
}
} while (true);
}
identifier_AST = (AST)currentAST.root;
returnAST = identifier_AST;
}
public final void importStatement() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST importStatement_AST = null;
Token i = null;
AST i_AST = null;
boolean isStatic = false;
i = LT(1);
i_AST = astFactory.create(i);
astFactory.makeASTRoot(currentAST, i_AST);
match(LITERAL_import);
if ( inputState.guessing==0 ) {
i_AST.setType(IMPORT);
}
{
switch ( LA(1)) {
case LITERAL_static:
{
match(LITERAL_static);
if ( inputState.guessing==0 ) {
i_AST.setType(STATIC_IMPORT);
}
break;
}
case IDENT:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
identifierStar();
astFactory.addASTChild(currentAST, returnAST);
importStatement_AST = (AST)currentAST.root;
returnAST = importStatement_AST;
}
public final void identifierStar() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST identifierStar_AST = null;
AST tmp29_AST = null;
tmp29_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp29_AST);
match(IDENT);
{
_loop73:
do {
if ((LA(1)==DOT) && (LA(2)==IDENT||LA(2)==NLS)) {
AST tmp30_AST = null;
tmp30_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp30_AST);
match(DOT);
nls();
AST tmp31_AST = null;
tmp31_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp31_AST);
match(IDENT);
}
else {
break _loop73;
}
} while (true);
}
{
switch ( LA(1)) {
case DOT:
{
AST tmp32_AST = null;
tmp32_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp32_AST);
match(DOT);
nls();
AST tmp33_AST = null;
tmp33_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp33_AST);
match(STAR);
break;
}
case LITERAL_as:
{
AST tmp34_AST = null;
tmp34_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp34_AST);
match(LITERAL_as);
nls();
AST tmp35_AST = null;
tmp35_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp35_AST);
match(IDENT);
break;
}
case EOF:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_else:
case LITERAL_case:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
identifierStar_AST = (AST)currentAST.root;
returnAST = identifierStar_AST;
}
protected final void typeDefinitionInternal(
AST mods
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeDefinitionInternal_AST = null;
AST cd_AST = null;
AST id_AST = null;
AST ed_AST = null;
AST ad_AST = null;
switch ( LA(1)) {
case LITERAL_class:
{
classDefinition(mods);
cd_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
typeDefinitionInternal_AST = (AST)currentAST.root;
typeDefinitionInternal_AST = cd_AST;
currentAST.root = typeDefinitionInternal_AST;
currentAST.child = typeDefinitionInternal_AST!=null &&typeDefinitionInternal_AST.getFirstChild()!=null ?
typeDefinitionInternal_AST.getFirstChild() : typeDefinitionInternal_AST;
currentAST.advanceChildToEnd();
}
typeDefinitionInternal_AST = (AST)currentAST.root;
break;
}
case LITERAL_interface:
{
interfaceDefinition(mods);
id_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
typeDefinitionInternal_AST = (AST)currentAST.root;
typeDefinitionInternal_AST = id_AST;
currentAST.root = typeDefinitionInternal_AST;
currentAST.child = typeDefinitionInternal_AST!=null &&typeDefinitionInternal_AST.getFirstChild()!=null ?
typeDefinitionInternal_AST.getFirstChild() : typeDefinitionInternal_AST;
currentAST.advanceChildToEnd();
}
typeDefinitionInternal_AST = (AST)currentAST.root;
break;
}
case LITERAL_enum:
{
enumDefinition(mods);
ed_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
typeDefinitionInternal_AST = (AST)currentAST.root;
typeDefinitionInternal_AST = ed_AST;
currentAST.root = typeDefinitionInternal_AST;
currentAST.child = typeDefinitionInternal_AST!=null &&typeDefinitionInternal_AST.getFirstChild()!=null ?
typeDefinitionInternal_AST.getFirstChild() : typeDefinitionInternal_AST;
currentAST.advanceChildToEnd();
}
typeDefinitionInternal_AST = (AST)currentAST.root;
break;
}
case AT:
{
annotationDefinition(mods);
ad_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
typeDefinitionInternal_AST = (AST)currentAST.root;
typeDefinitionInternal_AST = ad_AST;
currentAST.root = typeDefinitionInternal_AST;
currentAST.child = typeDefinitionInternal_AST!=null &&typeDefinitionInternal_AST.getFirstChild()!=null ?
typeDefinitionInternal_AST.getFirstChild() : typeDefinitionInternal_AST;
currentAST.advanceChildToEnd();
}
typeDefinitionInternal_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = typeDefinitionInternal_AST;
}
public final void classDefinition(
AST modifiers
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST classDefinition_AST = null;
AST tp_AST = null;
AST sc_AST = null;
AST ic_AST = null;
AST cb_AST = null;
Token first = LT(1);AST prevCurrentClass = currentClass;
match(LITERAL_class);
AST tmp37_AST = null;
tmp37_AST = astFactory.create(LT(1));
match(IDENT);
nls();
if ( inputState.guessing==0 ) {
currentClass = tmp37_AST;
}
{
switch ( LA(1)) {
case LT:
{
typeParameters();
tp_AST = (AST)returnAST;
break;
}
case LITERAL_extends:
case LCURLY:
case LITERAL_implements:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
superClassClause();
sc_AST = (AST)returnAST;
implementsClause();
ic_AST = (AST)returnAST;
classBlock();
cb_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
classDefinition_AST = (AST)currentAST.root;
classDefinition_AST = (AST)astFactory.make( (new ASTArray(7)).add(create(CLASS_DEF,"CLASS_DEF",first,LT(1))).add(modifiers).add(tmp37_AST).add(tp_AST).add(sc_AST).add(ic_AST).add(cb_AST));
currentAST.root = classDefinition_AST;
currentAST.child = classDefinition_AST!=null &&classDefinition_AST.getFirstChild()!=null ?
classDefinition_AST.getFirstChild() : classDefinition_AST;
currentAST.advanceChildToEnd();
}
if ( inputState.guessing==0 ) {
currentClass = prevCurrentClass;
}
returnAST = classDefinition_AST;
}
public final void interfaceDefinition(
AST modifiers
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST interfaceDefinition_AST = null;
AST tp_AST = null;
AST ie_AST = null;
AST ib_AST = null;
Token first = LT(1);
match(LITERAL_interface);
AST tmp39_AST = null;
tmp39_AST = astFactory.create(LT(1));
match(IDENT);
nls();
{
switch ( LA(1)) {
case LT:
{
typeParameters();
tp_AST = (AST)returnAST;
break;
}
case LITERAL_extends:
case LCURLY:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
interfaceExtends();
ie_AST = (AST)returnAST;
interfaceBlock();
ib_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
interfaceDefinition_AST = (AST)currentAST.root;
interfaceDefinition_AST = (AST)astFactory.make( (new ASTArray(6)).add(create(INTERFACE_DEF,"INTERFACE_DEF",first,LT(1))).add(modifiers).add(tmp39_AST).add(tp_AST).add(ie_AST).add(ib_AST));
currentAST.root = interfaceDefinition_AST;
currentAST.child = interfaceDefinition_AST!=null &&interfaceDefinition_AST.getFirstChild()!=null ?
interfaceDefinition_AST.getFirstChild() : interfaceDefinition_AST;
currentAST.advanceChildToEnd();
}
returnAST = interfaceDefinition_AST;
}
public final void enumDefinition(
AST modifiers
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST enumDefinition_AST = null;
AST ic_AST = null;
AST eb_AST = null;
Token first = LT(1); AST prevCurrentClass = currentClass;
match(LITERAL_enum);
AST tmp41_AST = null;
tmp41_AST = astFactory.create(LT(1));
match(IDENT);
if ( inputState.guessing==0 ) {
currentClass = tmp41_AST;
}
nls();
implementsClause();
ic_AST = (AST)returnAST;
nls();
enumBlock();
eb_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
enumDefinition_AST = (AST)currentAST.root;
enumDefinition_AST = (AST)astFactory.make( (new ASTArray(5)).add(create(ENUM_DEF,"ENUM_DEF",first,LT(1))).add(modifiers).add(tmp41_AST).add(ic_AST).add(eb_AST));
currentAST.root = enumDefinition_AST;
currentAST.child = enumDefinition_AST!=null &&enumDefinition_AST.getFirstChild()!=null ?
enumDefinition_AST.getFirstChild() : enumDefinition_AST;
currentAST.advanceChildToEnd();
}
if ( inputState.guessing==0 ) {
currentClass = prevCurrentClass;
}
returnAST = enumDefinition_AST;
}
public final void annotationDefinition(
AST modifiers
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationDefinition_AST = null;
AST ab_AST = null;
Token first = LT(1);
AST tmp42_AST = null;
tmp42_AST = astFactory.create(LT(1));
match(AT);
match(LITERAL_interface);
AST tmp44_AST = null;
tmp44_AST = astFactory.create(LT(1));
match(IDENT);
annotationBlock();
ab_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
annotationDefinition_AST = (AST)currentAST.root;
annotationDefinition_AST = (AST)astFactory.make( (new ASTArray(4)).add(create(ANNOTATION_DEF,"ANNOTATION_DEF",first,LT(1))).add(modifiers).add(tmp44_AST).add(ab_AST));
currentAST.root = annotationDefinition_AST;
currentAST.child = annotationDefinition_AST!=null &&annotationDefinition_AST.getFirstChild()!=null ?
annotationDefinition_AST.getFirstChild() : annotationDefinition_AST;
currentAST.advanceChildToEnd();
}
returnAST = annotationDefinition_AST;
}
/** A declaration is the creation of a reference or primitive-type variable,
* or (if arguments are present) of a method.
* Generically, this is called a 'variable' definition, even in the case of a class field or method.
* It may start with the modifiers and/or a declaration keyword "def".
* It may also start with the modifiers and a capitalized type name.
*
* AST effect: Create a separate Type/Var tree for each var in the var list.
* Must be guarded, as in (declarationStart) => declaration.
*/
public final void declaration() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST declaration_AST = null;
AST m_AST = null;
AST t_AST = null;
AST v_AST = null;
AST t2_AST = null;
AST v2_AST = null;
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case AT:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
modifiers();
m_AST = (AST)returnAST;
{
if ((_tokenSet_19.member(LA(1))) && (_tokenSet_20.member(LA(2)))) {
typeSpec(false);
t_AST = (AST)returnAST;
}
else if ((LA(1)==IDENT||LA(1)==STRING_LITERAL) && (_tokenSet_21.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
variableDefinitions(m_AST, t_AST);
v_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
declaration_AST = (AST)currentAST.root;
declaration_AST = v_AST;
currentAST.root = declaration_AST;
currentAST.child = declaration_AST!=null &&declaration_AST.getFirstChild()!=null ?
declaration_AST.getFirstChild() : declaration_AST;
currentAST.advanceChildToEnd();
}
break;
}
case IDENT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
typeSpec(false);
t2_AST = (AST)returnAST;
variableDefinitions(null,t2_AST);
v2_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
declaration_AST = (AST)currentAST.root;
declaration_AST = v2_AST;
currentAST.root = declaration_AST;
currentAST.child = declaration_AST!=null &&declaration_AST.getFirstChild()!=null ?
declaration_AST.getFirstChild() : declaration_AST;
currentAST.advanceChildToEnd();
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = declaration_AST;
}
/** A list of one or more modifier, annotation, or "def". */
public final void modifiers() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST modifiers_AST = null;
Token first = LT(1);
modifiersInternal();
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
modifiers_AST = (AST)currentAST.root;
modifiers_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(MODIFIERS,"MODIFIERS",first,LT(1))).add(modifiers_AST));
currentAST.root = modifiers_AST;
currentAST.child = modifiers_AST!=null &&modifiers_AST.getFirstChild()!=null ?
modifiers_AST.getFirstChild() : modifiers_AST;
currentAST.advanceChildToEnd();
}
modifiers_AST = (AST)currentAST.root;
returnAST = modifiers_AST;
}
public final void typeSpec(
boolean addImagNode
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeSpec_AST = null;
switch ( LA(1)) {
case IDENT:
{
classTypeSpec(addImagNode);
astFactory.addASTChild(currentAST, returnAST);
typeSpec_AST = (AST)currentAST.root;
break;
}
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
builtInTypeSpec(addImagNode);
astFactory.addASTChild(currentAST, returnAST);
typeSpec_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = typeSpec_AST;
}
/** The tail of a declaration.
* Either v1, v2, ... (with possible initializers) or else m(args){body}.
* The two arguments are the modifier list (if any) and the declaration head (if any).
* The declaration head is the variable type, or (for a method) the return type.
* If it is missing, then the variable type is taken from its initializer (if there is one).
* Otherwise, the variable type defaults to 'any'.
* DECIDE: Method return types default to the type of the method body, as an expression.
*/
public final void variableDefinitions(
AST mods, AST t
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST variableDefinitions_AST = null;
Token id = null;
AST id_AST = null;
Token qid = null;
AST qid_AST = null;
AST param_AST = null;
AST tc_AST = null;
AST mb_AST = null;
Token first = LT(1);
if ((LA(1)==IDENT) && (_tokenSet_22.member(LA(2)))) {
variableDeclarator(getASTFactory().dupTree(mods),
getASTFactory().dupTree(t));
astFactory.addASTChild(currentAST, returnAST);
{
_loop200:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
variableDeclarator(getASTFactory().dupTree(mods),
getASTFactory().dupTree(t));
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop200;
}
} while (true);
}
variableDefinitions_AST = (AST)currentAST.root;
}
else if ((LA(1)==IDENT||LA(1)==STRING_LITERAL) && (LA(2)==LPAREN)) {
{
switch ( LA(1)) {
case IDENT:
{
id = LT(1);
id_AST = astFactory.create(id);
astFactory.addASTChild(currentAST, id_AST);
match(IDENT);
break;
}
case STRING_LITERAL:
{
qid = LT(1);
qid_AST = astFactory.create(qid);
astFactory.addASTChild(currentAST, qid_AST);
match(STRING_LITERAL);
if ( inputState.guessing==0 ) {
qid_AST.setType(IDENT);
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
match(LPAREN);
parameterDeclarationList();
param_AST = (AST)returnAST;
match(RPAREN);
{
boolean synPredMatched204 = false;
if (((LA(1)==NLS||LA(1)==LITERAL_throws) && (_tokenSet_23.member(LA(2))))) {
int _m204 = mark();
synPredMatched204 = true;
inputState.guessing++;
try {
{
nls();
match(LITERAL_throws);
}
}
catch (RecognitionException pe) {
synPredMatched204 = false;
}
rewind(_m204);
inputState.guessing--;
}
if ( synPredMatched204 ) {
throwsClause();
tc_AST = (AST)returnAST;
}
else if ((_tokenSet_24.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
{
boolean synPredMatched207 = false;
if (((LA(1)==LCURLY||LA(1)==NLS) && (_tokenSet_25.member(LA(2))))) {
int _m207 = mark();
synPredMatched207 = true;
inputState.guessing++;
try {
{
nls();
match(LCURLY);
}
}
catch (RecognitionException pe) {
synPredMatched207 = false;
}
rewind(_m207);
inputState.guessing--;
}
if ( synPredMatched207 ) {
{
nlsWarn();
openBlock();
mb_AST = (AST)returnAST;
}
}
else if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
variableDefinitions_AST = (AST)currentAST.root;
if (qid_AST != null) id_AST = qid_AST;
variableDefinitions_AST =
(AST)astFactory.make( (new ASTArray(7)).add(create(METHOD_DEF,"METHOD_DEF",first,LT(1))).add(mods).add((AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(t))).add(id_AST).add(param_AST).add(tc_AST).add(mb_AST));
currentAST.root = variableDefinitions_AST;
currentAST.child = variableDefinitions_AST!=null &&variableDefinitions_AST.getFirstChild()!=null ?
variableDefinitions_AST.getFirstChild() : variableDefinitions_AST;
currentAST.advanceChildToEnd();
}
variableDefinitions_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = variableDefinitions_AST;
}
public final void genericMethod() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST genericMethod_AST = null;
AST m_AST = null;
AST p_AST = null;
AST t_AST = null;
AST v_AST = null;
modifiers();
m_AST = (AST)returnAST;
typeParameters();
p_AST = (AST)returnAST;
typeSpec(false);
t_AST = (AST)returnAST;
variableDefinitions(m_AST, t_AST);
v_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
genericMethod_AST = (AST)currentAST.root;
genericMethod_AST = v_AST;
AST old = v_AST.getFirstChild();
genericMethod_AST.setFirstChild(p_AST);
p_AST.setNextSibling(old);
currentAST.root = genericMethod_AST;
currentAST.child = genericMethod_AST!=null &&genericMethod_AST.getFirstChild()!=null ?
genericMethod_AST.getFirstChild() : genericMethod_AST;
currentAST.advanceChildToEnd();
}
returnAST = genericMethod_AST;
}
public final void typeParameters() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeParameters_AST = null;
Token first = LT(1);int currentLtLevel = 0;
if ( inputState.guessing==0 ) {
currentLtLevel = ltCounter;
}
match(LT);
if ( inputState.guessing==0 ) {
ltCounter++;
}
nls();
typeParameter();
astFactory.addASTChild(currentAST, returnAST);
{
_loop105:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
typeParameter();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop105;
}
} while (true);
}
nls();
{
switch ( LA(1)) {
case GT:
case SR:
case BSR:
{
typeArgumentsOrParametersEnd();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case IDENT:
case LITERAL_extends:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_implements:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if (!((currentLtLevel != 0) || ltCounter == currentLtLevel))
throw new SemanticException("(currentLtLevel != 0) || ltCounter == currentLtLevel");
if ( inputState.guessing==0 ) {
typeParameters_AST = (AST)currentAST.root;
typeParameters_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE_PARAMETERS,"TYPE_PARAMETERS",first,LT(1))).add(typeParameters_AST));
currentAST.root = typeParameters_AST;
currentAST.child = typeParameters_AST!=null &&typeParameters_AST.getFirstChild()!=null ?
typeParameters_AST.getFirstChild() : typeParameters_AST;
currentAST.advanceChildToEnd();
}
typeParameters_AST = (AST)currentAST.root;
returnAST = typeParameters_AST;
}
/** A declaration with one declarator and no initialization, like a parameterDeclaration.
* Used to parse loops like for (int x in y)
(up to the in
keyword).
*/
public final void singleDeclarationNoInit() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST singleDeclarationNoInit_AST = null;
AST m_AST = null;
AST t_AST = null;
AST v_AST = null;
AST t2_AST = null;
AST v2_AST = null;
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case AT:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
modifiers();
m_AST = (AST)returnAST;
{
if ((_tokenSet_19.member(LA(1))) && (_tokenSet_26.member(LA(2)))) {
typeSpec(false);
t_AST = (AST)returnAST;
}
else if ((LA(1)==IDENT) && (_tokenSet_27.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
singleVariable(m_AST, t_AST);
v_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
singleDeclarationNoInit_AST = (AST)currentAST.root;
singleDeclarationNoInit_AST = v_AST;
currentAST.root = singleDeclarationNoInit_AST;
currentAST.child = singleDeclarationNoInit_AST!=null &&singleDeclarationNoInit_AST.getFirstChild()!=null ?
singleDeclarationNoInit_AST.getFirstChild() : singleDeclarationNoInit_AST;
currentAST.advanceChildToEnd();
}
break;
}
case IDENT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
typeSpec(false);
t2_AST = (AST)returnAST;
singleVariable(null,t2_AST);
v2_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
singleDeclarationNoInit_AST = (AST)currentAST.root;
singleDeclarationNoInit_AST = v2_AST;
currentAST.root = singleDeclarationNoInit_AST;
currentAST.child = singleDeclarationNoInit_AST!=null &&singleDeclarationNoInit_AST.getFirstChild()!=null ?
singleDeclarationNoInit_AST.getFirstChild() : singleDeclarationNoInit_AST;
currentAST.advanceChildToEnd();
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = singleDeclarationNoInit_AST;
}
/** Used in cases where a declaration cannot have commas, or ends with the "in" operator instead of '='. */
public final void singleVariable(
AST mods, AST t
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST singleVariable_AST = null;
AST id_AST = null;
Token first = LT(1);
variableName();
id_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
singleVariable_AST = (AST)currentAST.root;
singleVariable_AST = (AST)astFactory.make( (new ASTArray(4)).add(create(VARIABLE_DEF,"VARIABLE_DEF",first,LT(1))).add(mods).add((AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(t))).add(id_AST));
currentAST.root = singleVariable_AST;
currentAST.child = singleVariable_AST!=null &&singleVariable_AST.getFirstChild()!=null ?
singleVariable_AST.getFirstChild() : singleVariable_AST;
currentAST.advanceChildToEnd();
}
returnAST = singleVariable_AST;
}
/** A declaration with one declarator and optional initialization, like a parameterDeclaration.
* Used to parse declarations used for both binding and effect, in places like argument
* lists and while
statements.
*/
public final void singleDeclaration() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST singleDeclaration_AST = null;
AST sd_AST = null;
singleDeclarationNoInit();
sd_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
singleDeclaration_AST = (AST)currentAST.root;
singleDeclaration_AST = sd_AST;
currentAST.root = singleDeclaration_AST;
currentAST.child = singleDeclaration_AST!=null &&singleDeclaration_AST.getFirstChild()!=null ?
singleDeclaration_AST.getFirstChild() : singleDeclaration_AST;
currentAST.advanceChildToEnd();
}
{
switch ( LA(1)) {
case ASSIGN:
{
varInitializer();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case RBRACK:
case COMMA:
case RPAREN:
case SEMI:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
singleDeclaration_AST = (AST)currentAST.root;
returnAST = singleDeclaration_AST;
}
/** An assignment operator '=' followed by an expression. (Never empty.) */
public final void varInitializer() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST varInitializer_AST = null;
AST tmp50_AST = null;
tmp50_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp50_AST);
match(ASSIGN);
nls();
expression(LC_INIT);
astFactory.addASTChild(currentAST, returnAST);
varInitializer_AST = (AST)currentAST.root;
returnAST = varInitializer_AST;
}
/** Used only as a lookahead predicate, before diving in and parsing a declaration.
* A declaration can be unambiguously introduced with "def", an annotation or a modifier token like "final".
* It may also be introduced by a simple identifier whose first character is an uppercase letter,
* as in {String x}. A declaration can also be introduced with a built in type like 'int' or 'void'.
* Brackets (array and generic) are allowed, as in {List[] x} or {int[][] y}.
* Anything else is parsed as a statement of some sort (expression or command).
*
* (In the absence of explicit method-call parens, we assume a capitalized name is a type name.
* Yes, this is a little hacky. Alternatives are to complicate the declaration or command
* syntaxes, or to have the parser query the symbol table. Parse-time queries are evil.
* And we want both {String x} and {println x}. So we need a syntactic razor-edge to slip
* between 'println' and 'String'.)
*
* *TODO* The declarationStart production needs to be strengthened to recognize
* things like {List foo}.
* Right now it only knows how to skip square brackets after the type, not
* angle brackets.
* This probably turns out to be tricky because of >> vs. > >. If so,
* just put a TODO comment in.
*/
public final void declarationStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST declarationStart_AST = null;
{
int _cnt28=0;
_loop28:
do {
switch ( LA(1)) {
case LITERAL_def:
{
match(LITERAL_def);
nls();
break;
}
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
modifier();
nls();
break;
}
case AT:
{
annotation();
nls();
break;
}
default:
if ((_tokenSet_19.member(LA(1))) && (_tokenSet_28.member(LA(2)))) {
{
if ((LA(1)==IDENT) && (_tokenSet_29.member(LA(2)))) {
upperCaseIdent();
}
else if (((LA(1) >= LITERAL_void && LA(1) <= LITERAL_double))) {
builtInType();
}
else if ((LA(1)==IDENT) && (LA(2)==DOT)) {
qualifiedTypeName();
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
{
switch ( LA(1)) {
case LT:
{
typeArguments();
break;
}
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
_loop27:
do {
if ((LA(1)==LBRACK)) {
AST tmp52_AST = null;
tmp52_AST = astFactory.create(LT(1));
match(LBRACK);
balancedTokens();
AST tmp53_AST = null;
tmp53_AST = astFactory.create(LT(1));
match(RBRACK);
}
else {
break _loop27;
}
} while (true);
}
}
else {
if ( _cnt28>=1 ) { break _loop28; } else {throw new NoViableAltException(LT(1), getFilename());}
}
}
_cnt28++;
} while (true);
}
{
switch ( LA(1)) {
case IDENT:
{
AST tmp54_AST = null;
tmp54_AST = astFactory.create(LT(1));
match(IDENT);
break;
}
case STRING_LITERAL:
{
AST tmp55_AST = null;
tmp55_AST = astFactory.create(LT(1));
match(STRING_LITERAL);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
returnAST = declarationStart_AST;
}
public final void modifier() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST modifier_AST = null;
switch ( LA(1)) {
case LITERAL_private:
{
AST tmp56_AST = null;
tmp56_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp56_AST);
match(LITERAL_private);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_public:
{
AST tmp57_AST = null;
tmp57_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp57_AST);
match(LITERAL_public);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_protected:
{
AST tmp58_AST = null;
tmp58_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp58_AST);
match(LITERAL_protected);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_static:
{
AST tmp59_AST = null;
tmp59_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp59_AST);
match(LITERAL_static);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_transient:
{
AST tmp60_AST = null;
tmp60_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp60_AST);
match(LITERAL_transient);
modifier_AST = (AST)currentAST.root;
break;
}
case FINAL:
{
AST tmp61_AST = null;
tmp61_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp61_AST);
match(FINAL);
modifier_AST = (AST)currentAST.root;
break;
}
case ABSTRACT:
{
AST tmp62_AST = null;
tmp62_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp62_AST);
match(ABSTRACT);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_native:
{
AST tmp63_AST = null;
tmp63_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp63_AST);
match(LITERAL_native);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_threadsafe:
{
AST tmp64_AST = null;
tmp64_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp64_AST);
match(LITERAL_threadsafe);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_synchronized:
{
AST tmp65_AST = null;
tmp65_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp65_AST);
match(LITERAL_synchronized);
modifier_AST = (AST)currentAST.root;
break;
}
case LITERAL_volatile:
{
AST tmp66_AST = null;
tmp66_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp66_AST);
match(LITERAL_volatile);
modifier_AST = (AST)currentAST.root;
break;
}
case STRICTFP:
{
AST tmp67_AST = null;
tmp67_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp67_AST);
match(STRICTFP);
modifier_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = modifier_AST;
}
public final void annotation() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotation_AST = null;
AST i_AST = null;
AST args_AST = null;
Token first = LT(1);
match(AT);
identifier();
i_AST = (AST)returnAST;
nls();
{
switch ( LA(1)) {
case LPAREN:
{
match(LPAREN);
{
switch ( LA(1)) {
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
annotationArguments();
args_AST = (AST)returnAST;
break;
}
case RPAREN:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
match(RPAREN);
break;
}
case EOF:
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_package:
case LITERAL_static:
case LITERAL_def:
case RBRACK:
case IDENT:
case STRING_LITERAL:
case LT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case COMMA:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case RPAREN:
case RCURLY:
case SEMI:
case NLS:
case TRIPLE_DOT:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
annotation_AST = (AST)currentAST.root;
annotation_AST = (AST)astFactory.make( (new ASTArray(3)).add(create(ANNOTATION,"ANNOTATION",first,LT(1))).add(i_AST).add(args_AST));
currentAST.root = annotation_AST;
currentAST.child = annotation_AST!=null &&annotation_AST.getFirstChild()!=null ?
annotation_AST.getFirstChild() : annotation_AST;
currentAST.advanceChildToEnd();
}
returnAST = annotation_AST;
}
/** An IDENT token whose spelling is required to start with an uppercase letter.
* In the case of a simple statement {UpperID name} the identifier is taken to be a type name, not a command name.
*/
public final void upperCaseIdent() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST upperCaseIdent_AST = null;
if (!(isUpperCase(LT(1))))
throw new SemanticException("isUpperCase(LT(1))");
AST tmp71_AST = null;
tmp71_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp71_AST);
match(IDENT);
upperCaseIdent_AST = (AST)currentAST.root;
returnAST = upperCaseIdent_AST;
}
public final void builtInType() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST builtInType_AST = null;
switch ( LA(1)) {
case LITERAL_void:
{
AST tmp72_AST = null;
tmp72_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp72_AST);
match(LITERAL_void);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_boolean:
{
AST tmp73_AST = null;
tmp73_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp73_AST);
match(LITERAL_boolean);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_byte:
{
AST tmp74_AST = null;
tmp74_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp74_AST);
match(LITERAL_byte);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_char:
{
AST tmp75_AST = null;
tmp75_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp75_AST);
match(LITERAL_char);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_short:
{
AST tmp76_AST = null;
tmp76_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp76_AST);
match(LITERAL_short);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_int:
{
AST tmp77_AST = null;
tmp77_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp77_AST);
match(LITERAL_int);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_float:
{
AST tmp78_AST = null;
tmp78_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp78_AST);
match(LITERAL_float);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_long:
{
AST tmp79_AST = null;
tmp79_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp79_AST);
match(LITERAL_long);
builtInType_AST = (AST)currentAST.root;
break;
}
case LITERAL_double:
{
AST tmp80_AST = null;
tmp80_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp80_AST);
match(LITERAL_double);
builtInType_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = builtInType_AST;
}
public final void qualifiedTypeName() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST qualifiedTypeName_AST = null;
AST tmp81_AST = null;
tmp81_AST = astFactory.create(LT(1));
match(IDENT);
AST tmp82_AST = null;
tmp82_AST = astFactory.create(LT(1));
match(DOT);
{
_loop35:
do {
if ((LA(1)==IDENT) && (LA(2)==DOT)) {
AST tmp83_AST = null;
tmp83_AST = astFactory.create(LT(1));
match(IDENT);
AST tmp84_AST = null;
tmp84_AST = astFactory.create(LT(1));
match(DOT);
}
else {
break _loop35;
}
} while (true);
}
upperCaseIdent();
returnAST = qualifiedTypeName_AST;
}
public final void typeArguments() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeArguments_AST = null;
Token first = LT(1);
int currentLtLevel = 0;
if ( inputState.guessing==0 ) {
currentLtLevel = ltCounter;
}
match(LT);
if ( inputState.guessing==0 ) {
ltCounter++;
}
nls();
typeArgument();
astFactory.addASTChild(currentAST, returnAST);
{
_loop56:
do {
if (((LA(1)==COMMA) && (_tokenSet_30.member(LA(2))))&&(inputState.guessing !=0 || ltCounter == currentLtLevel + 1)) {
match(COMMA);
nls();
typeArgument();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop56;
}
} while (true);
}
nls();
{
if (((LA(1) >= GT && LA(1) <= BSR)) && (_tokenSet_31.member(LA(2)))) {
typeArgumentsOrParametersEnd();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_31.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if (!((currentLtLevel != 0) || ltCounter == currentLtLevel))
throw new SemanticException("(currentLtLevel != 0) || ltCounter == currentLtLevel");
if ( inputState.guessing==0 ) {
typeArguments_AST = (AST)currentAST.root;
typeArguments_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE_ARGUMENTS,"TYPE_ARGUMENTS",first,LT(1))).add(typeArguments_AST));
currentAST.root = typeArguments_AST;
currentAST.child = typeArguments_AST!=null &&typeArguments_AST.getFirstChild()!=null ?
typeArguments_AST.getFirstChild() : typeArguments_AST;
currentAST.advanceChildToEnd();
}
typeArguments_AST = (AST)currentAST.root;
returnAST = typeArguments_AST;
}
public final void balancedTokens() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST balancedTokens_AST = null;
{
_loop501:
do {
if ((_tokenSet_32.member(LA(1)))) {
balancedBrackets();
}
else if ((_tokenSet_33.member(LA(1)))) {
{
match(_tokenSet_33);
}
}
else {
break _loop501;
}
} while (true);
}
returnAST = balancedTokens_AST;
}
/**
* lookahead predicate for usage of generics in methods
* as parameter for the method. Example:
* static T foo(){}
* must be first after the modifier.
* This rule allows more and does no exact match, but it
* is only a lookahead, not the real rule.
*/
public final void genericMethodStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST genericMethodStart_AST = null;
{
int _cnt32=0;
_loop32:
do {
switch ( LA(1)) {
case LITERAL_def:
{
match(LITERAL_def);
nls();
break;
}
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
modifier();
nls();
break;
}
case AT:
{
annotation();
nls();
break;
}
default:
{
if ( _cnt32>=1 ) { break _loop32; } else {throw new NoViableAltException(LT(1), getFilename());}
}
}
_cnt32++;
} while (true);
}
AST tmp89_AST = null;
tmp89_AST = astFactory.create(LT(1));
match(LT);
returnAST = genericMethodStart_AST;
}
/** Used to look ahead for a constructor
*/
public final void constructorStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST constructorStart_AST = null;
Token id = null;
AST id_AST = null;
modifiersOpt();
id = LT(1);
id_AST = astFactory.create(id);
match(IDENT);
if (!(isConstructorIdent(id)))
throw new SemanticException("isConstructorIdent(id)");
nls();
match(LPAREN);
returnAST = constructorStart_AST;
}
/** A list of zero or more modifiers, annotations, or "def". */
public final void modifiersOpt() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST modifiersOpt_AST = null;
Token first = LT(1);
{
if ((_tokenSet_8.member(LA(1))) && (_tokenSet_34.member(LA(2)))) {
modifiersInternal();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_35.member(LA(1))) && (_tokenSet_36.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
modifiersOpt_AST = (AST)currentAST.root;
modifiersOpt_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(MODIFIERS,"MODIFIERS",first,LT(1))).add(modifiersOpt_AST));
currentAST.root = modifiersOpt_AST;
currentAST.child = modifiersOpt_AST!=null &&modifiersOpt_AST.getFirstChild()!=null ?
modifiersOpt_AST.getFirstChild() : modifiersOpt_AST;
currentAST.advanceChildToEnd();
}
modifiersOpt_AST = (AST)currentAST.root;
returnAST = modifiersOpt_AST;
}
/** Used only as a lookahead predicate for nested type declarations. */
public final void typeDeclarationStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeDeclarationStart_AST = null;
modifiersOpt();
{
switch ( LA(1)) {
case LITERAL_class:
{
match(LITERAL_class);
break;
}
case LITERAL_interface:
{
match(LITERAL_interface);
break;
}
case LITERAL_enum:
{
match(LITERAL_enum);
break;
}
case AT:
{
AST tmp94_AST = null;
tmp94_AST = astFactory.create(LT(1));
match(AT);
match(LITERAL_interface);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
returnAST = typeDeclarationStart_AST;
}
public final void classTypeSpec(
boolean addImagNode
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST classTypeSpec_AST = null;
AST ct_AST = null;
Token first = LT(1);
classOrInterfaceType(false);
ct_AST = (AST)returnAST;
declaratorBrackets(ct_AST);
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
classTypeSpec_AST = (AST)currentAST.root;
if ( addImagNode ) {
classTypeSpec_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(classTypeSpec_AST));
}
currentAST.root = classTypeSpec_AST;
currentAST.child = classTypeSpec_AST!=null &&classTypeSpec_AST.getFirstChild()!=null ?
classTypeSpec_AST.getFirstChild() : classTypeSpec_AST;
currentAST.advanceChildToEnd();
}
classTypeSpec_AST = (AST)currentAST.root;
returnAST = classTypeSpec_AST;
}
public final void builtInTypeSpec(
boolean addImagNode
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST builtInTypeSpec_AST = null;
AST bt_AST = null;
Token first = LT(1);
builtInType();
bt_AST = (AST)returnAST;
declaratorBrackets(bt_AST);
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
builtInTypeSpec_AST = (AST)currentAST.root;
if ( addImagNode ) {
builtInTypeSpec_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(builtInTypeSpec_AST));
}
currentAST.root = builtInTypeSpec_AST;
currentAST.child = builtInTypeSpec_AST!=null &&builtInTypeSpec_AST.getFirstChild()!=null ?
builtInTypeSpec_AST.getFirstChild() : builtInTypeSpec_AST;
currentAST.advanceChildToEnd();
}
builtInTypeSpec_AST = (AST)currentAST.root;
returnAST = builtInTypeSpec_AST;
}
public final void classOrInterfaceType(
boolean addImagNode
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST classOrInterfaceType_AST = null;
Token first = LT(1);
AST tmp96_AST = null;
tmp96_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp96_AST);
match(IDENT);
{
switch ( LA(1)) {
case LT:
{
typeArguments();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case FINAL:
case ABSTRACT:
case UNUSED_GOTO:
case UNUSED_DO:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case RBRACK:
case IDENT:
case STRING_LITERAL:
case DOT:
case LPAREN:
case LITERAL_class:
case AT:
case QUESTION:
case LITERAL_extends:
case LITERAL_super:
case COMMA:
case GT:
case SR:
case BSR:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case RPAREN:
case ASSIGN:
case BAND:
case LCURLY:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_implements:
case LITERAL_this:
case TRIPLE_DOT:
case CLOSABLE_BLOCK_OP:
case COLON:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case PLUS:
case MINUS:
case LITERAL_case:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case PLUS_ASSIGN:
case MINUS_ASSIGN:
case STAR_ASSIGN:
case DIV_ASSIGN:
case MOD_ASSIGN:
case SR_ASSIGN:
case BSR_ASSIGN:
case SL_ASSIGN:
case BAND_ASSIGN:
case BXOR_ASSIGN:
case BOR_ASSIGN:
case STAR_STAR_ASSIGN:
case ELVIS_OPERATOR:
case LOR:
case LAND:
case BOR:
case BXOR:
case REGEX_FIND:
case REGEX_MATCH:
case NOT_EQUAL:
case EQUAL:
case COMPARE_TO:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
_loop46:
do {
if ((LA(1)==DOT) && (LA(2)==IDENT)) {
AST tmp97_AST = null;
tmp97_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp97_AST);
match(DOT);
AST tmp98_AST = null;
tmp98_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp98_AST);
match(IDENT);
{
switch ( LA(1)) {
case LT:
{
typeArguments();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case FINAL:
case ABSTRACT:
case UNUSED_GOTO:
case UNUSED_DO:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case RBRACK:
case IDENT:
case STRING_LITERAL:
case DOT:
case LPAREN:
case LITERAL_class:
case AT:
case QUESTION:
case LITERAL_extends:
case LITERAL_super:
case COMMA:
case GT:
case SR:
case BSR:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case RPAREN:
case ASSIGN:
case BAND:
case LCURLY:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_implements:
case LITERAL_this:
case TRIPLE_DOT:
case CLOSABLE_BLOCK_OP:
case COLON:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case PLUS:
case MINUS:
case LITERAL_case:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case PLUS_ASSIGN:
case MINUS_ASSIGN:
case STAR_ASSIGN:
case DIV_ASSIGN:
case MOD_ASSIGN:
case SR_ASSIGN:
case BSR_ASSIGN:
case SL_ASSIGN:
case BAND_ASSIGN:
case BXOR_ASSIGN:
case BOR_ASSIGN:
case STAR_STAR_ASSIGN:
case ELVIS_OPERATOR:
case LOR:
case LAND:
case BOR:
case BXOR:
case REGEX_FIND:
case REGEX_MATCH:
case NOT_EQUAL:
case EQUAL:
case COMPARE_TO:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop46;
}
} while (true);
}
if ( inputState.guessing==0 ) {
classOrInterfaceType_AST = (AST)currentAST.root;
if ( addImagNode ) {
classOrInterfaceType_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(classOrInterfaceType_AST));
}
currentAST.root = classOrInterfaceType_AST;
currentAST.child = classOrInterfaceType_AST!=null &&classOrInterfaceType_AST.getFirstChild()!=null ?
classOrInterfaceType_AST.getFirstChild() : classOrInterfaceType_AST;
currentAST.advanceChildToEnd();
}
classOrInterfaceType_AST = (AST)currentAST.root;
returnAST = classOrInterfaceType_AST;
}
/** After some type names, where zero or more empty bracket pairs are allowed.
* We use ARRAY_DECLARATOR to represent this.
* TODO: Is there some more Groovy way to view this in terms of the indexed property syntax?
*/
public final void declaratorBrackets(
AST typ
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST declaratorBrackets_AST = null;
Token lb = null;
AST lb_AST = null;
if ( inputState.guessing==0 ) {
declaratorBrackets_AST = (AST)currentAST.root;
declaratorBrackets_AST=typ;
currentAST.root = declaratorBrackets_AST;
currentAST.child = declaratorBrackets_AST!=null &&declaratorBrackets_AST.getFirstChild()!=null ?
declaratorBrackets_AST.getFirstChild() : declaratorBrackets_AST;
currentAST.advanceChildToEnd();
}
{
_loop219:
do {
if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
lb = LT(1);
lb_AST = astFactory.create(lb);
astFactory.makeASTRoot(currentAST, lb_AST);
match(LBRACK);
if ( inputState.guessing==0 ) {
lb_AST.setType(ARRAY_DECLARATOR);
}
match(RBRACK);
}
else {
break _loop219;
}
} while (true);
}
declaratorBrackets_AST = (AST)currentAST.root;
returnAST = declaratorBrackets_AST;
}
public final void typeArgumentSpec() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeArgumentSpec_AST = null;
switch ( LA(1)) {
case IDENT:
{
classTypeSpec(true);
astFactory.addASTChild(currentAST, returnAST);
typeArgumentSpec_AST = (AST)currentAST.root;
break;
}
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
builtInTypeArraySpec(true);
astFactory.addASTChild(currentAST, returnAST);
typeArgumentSpec_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = typeArgumentSpec_AST;
}
public final void builtInTypeArraySpec(
boolean addImagNode
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST builtInTypeArraySpec_AST = null;
AST bt_AST = null;
Token first = LT(1);
builtInType();
bt_AST = (AST)returnAST;
{
boolean synPredMatched64 = false;
if (((_tokenSet_31.member(LA(1))) && (_tokenSet_3.member(LA(2))))) {
int _m64 = mark();
synPredMatched64 = true;
inputState.guessing++;
try {
{
match(LBRACK);
}
}
catch (RecognitionException pe) {
synPredMatched64 = false;
}
rewind(_m64);
inputState.guessing--;
}
if ( synPredMatched64 ) {
declaratorBrackets(bt_AST);
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_31.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
if ( inputState.guessing==0 ) {
require(false,
"primitive type parameters not allowed here",
"use the corresponding wrapper type, such as Integer for int"
);
}
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
builtInTypeArraySpec_AST = (AST)currentAST.root;
if ( addImagNode ) {
builtInTypeArraySpec_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(builtInTypeArraySpec_AST));
}
currentAST.root = builtInTypeArraySpec_AST;
currentAST.child = builtInTypeArraySpec_AST!=null &&builtInTypeArraySpec_AST.getFirstChild()!=null ?
builtInTypeArraySpec_AST.getFirstChild() : builtInTypeArraySpec_AST;
currentAST.advanceChildToEnd();
}
builtInTypeArraySpec_AST = (AST)currentAST.root;
returnAST = builtInTypeArraySpec_AST;
}
public final void typeArgument() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeArgument_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case IDENT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
typeArgumentSpec();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case QUESTION:
{
wildcardType();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
typeArgument_AST = (AST)currentAST.root;
typeArgument_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE_ARGUMENT,"TYPE_ARGUMENT",first,LT(1))).add(typeArgument_AST));
currentAST.root = typeArgument_AST;
currentAST.child = typeArgument_AST!=null &&typeArgument_AST.getFirstChild()!=null ?
typeArgument_AST.getFirstChild() : typeArgument_AST;
currentAST.advanceChildToEnd();
}
typeArgument_AST = (AST)currentAST.root;
returnAST = typeArgument_AST;
}
public final void wildcardType() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST wildcardType_AST = null;
AST tmp100_AST = null;
tmp100_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp100_AST);
match(QUESTION);
{
boolean synPredMatched53 = false;
if (((LA(1)==LITERAL_extends||LA(1)==LITERAL_super) && (LA(2)==IDENT||LA(2)==NLS))) {
int _m53 = mark();
synPredMatched53 = true;
inputState.guessing++;
try {
{
switch ( LA(1)) {
case LITERAL_extends:
{
match(LITERAL_extends);
break;
}
case LITERAL_super:
{
match(LITERAL_super);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
catch (RecognitionException pe) {
synPredMatched53 = false;
}
rewind(_m53);
inputState.guessing--;
}
if ( synPredMatched53 ) {
typeArgumentBounds();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_31.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
wildcardType_AST = (AST)currentAST.root;
wildcardType_AST.setType(WILDCARD_TYPE);
}
wildcardType_AST = (AST)currentAST.root;
returnAST = wildcardType_AST;
}
public final void typeArgumentBounds() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeArgumentBounds_AST = null;
Token first = LT(1);boolean isUpperBounds = false;
{
switch ( LA(1)) {
case LITERAL_extends:
{
match(LITERAL_extends);
if ( inputState.guessing==0 ) {
isUpperBounds=true;
}
break;
}
case LITERAL_super:
{
match(LITERAL_super);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
classOrInterfaceType(true);
astFactory.addASTChild(currentAST, returnAST);
nls();
if ( inputState.guessing==0 ) {
typeArgumentBounds_AST = (AST)currentAST.root;
if (isUpperBounds)
{
typeArgumentBounds_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE_UPPER_BOUNDS,"TYPE_UPPER_BOUNDS",first,LT(1))).add(typeArgumentBounds_AST));
}
else
{
typeArgumentBounds_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE_LOWER_BOUNDS,"TYPE_LOWER_BOUNDS",first,LT(1))).add(typeArgumentBounds_AST));
}
currentAST.root = typeArgumentBounds_AST;
currentAST.child = typeArgumentBounds_AST!=null &&typeArgumentBounds_AST.getFirstChild()!=null ?
typeArgumentBounds_AST.getFirstChild() : typeArgumentBounds_AST;
currentAST.advanceChildToEnd();
}
typeArgumentBounds_AST = (AST)currentAST.root;
returnAST = typeArgumentBounds_AST;
}
protected final void typeArgumentsOrParametersEnd() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeArgumentsOrParametersEnd_AST = null;
switch ( LA(1)) {
case GT:
{
match(GT);
if ( inputState.guessing==0 ) {
ltCounter-=1;
}
nls();
typeArgumentsOrParametersEnd_AST = (AST)currentAST.root;
break;
}
case SR:
{
match(SR);
if ( inputState.guessing==0 ) {
ltCounter-=2;
}
nls();
typeArgumentsOrParametersEnd_AST = (AST)currentAST.root;
break;
}
case BSR:
{
match(BSR);
if ( inputState.guessing==0 ) {
ltCounter-=3;
}
nls();
typeArgumentsOrParametersEnd_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = typeArgumentsOrParametersEnd_AST;
}
public final void type() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST type_AST = null;
switch ( LA(1)) {
case IDENT:
{
classOrInterfaceType(false);
astFactory.addASTChild(currentAST, returnAST);
type_AST = (AST)currentAST.root;
break;
}
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
builtInType();
astFactory.addASTChild(currentAST, returnAST);
type_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = type_AST;
}
public final void modifiersInternal() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST modifiersInternal_AST = null;
int seenDef = 0;
{
int _cnt77=0;
_loop77:
do {
if (((LA(1)==LITERAL_def))&&(seenDef++ == 0)) {
match(LITERAL_def);
nls();
}
else if ((_tokenSet_37.member(LA(1)))) {
modifier();
astFactory.addASTChild(currentAST, returnAST);
nls();
}
else if (((LA(1)==AT) && (LA(2)==IDENT))&&(LA(1)==AT && !LT(2).getText().equals("interface"))) {
annotation();
astFactory.addASTChild(currentAST, returnAST);
nls();
}
else {
if ( _cnt77>=1 ) { break _loop77; } else {throw new NoViableAltException(LT(1), getFilename());}
}
_cnt77++;
} while (true);
}
modifiersInternal_AST = (AST)currentAST.root;
returnAST = modifiersInternal_AST;
}
public final void annotationArguments() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationArguments_AST = null;
AST v_AST = null;
if ((_tokenSet_38.member(LA(1))) && (_tokenSet_39.member(LA(2)))) {
annotationMemberValueInitializer();
v_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
annotationArguments_AST = (AST)currentAST.root;
Token itkn = new Token(IDENT, "value");
AST i;
i = (AST)astFactory.make( (new ASTArray(1)).add(create(IDENT,"value",itkn,itkn)));
annotationArguments_AST = (AST)astFactory.make( (new ASTArray(3)).add(create(ANNOTATION_MEMBER_VALUE_PAIR,"ANNOTATION_MEMBER_VALUE_PAIR",LT(1),LT(1))).add(i).add(v_AST));
currentAST.root = annotationArguments_AST;
currentAST.child = annotationArguments_AST!=null &&annotationArguments_AST.getFirstChild()!=null ?
annotationArguments_AST.getFirstChild() : annotationArguments_AST;
currentAST.advanceChildToEnd();
}
annotationArguments_AST = (AST)currentAST.root;
}
else if ((LA(1)==IDENT) && (LA(2)==ASSIGN)) {
annotationMemberValuePairs();
astFactory.addASTChild(currentAST, returnAST);
annotationArguments_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = annotationArguments_AST;
}
public final void annotationMemberValueInitializer() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationMemberValueInitializer_AST = null;
switch ( LA(1)) {
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
conditionalExpression(0);
astFactory.addASTChild(currentAST, returnAST);
annotationMemberValueInitializer_AST = (AST)currentAST.root;
break;
}
case AT:
{
annotation();
astFactory.addASTChild(currentAST, returnAST);
annotationMemberValueInitializer_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = annotationMemberValueInitializer_AST;
}
public final void annotationMemberValuePairs() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationMemberValuePairs_AST = null;
annotationMemberValuePair();
astFactory.addASTChild(currentAST, returnAST);
{
_loop91:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
annotationMemberValuePair();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop91;
}
} while (true);
}
annotationMemberValuePairs_AST = (AST)currentAST.root;
returnAST = annotationMemberValuePairs_AST;
}
public final void annotationMemberValuePair() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationMemberValuePair_AST = null;
Token i = null;
AST i_AST = null;
AST v_AST = null;
Token first = LT(1);
i = LT(1);
i_AST = astFactory.create(i);
match(IDENT);
match(ASSIGN);
nls();
annotationMemberValueInitializer();
v_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
annotationMemberValuePair_AST = (AST)currentAST.root;
annotationMemberValuePair_AST = (AST)astFactory.make( (new ASTArray(3)).add(create(ANNOTATION_MEMBER_VALUE_PAIR,"ANNOTATION_MEMBER_VALUE_PAIR",first,LT(1))).add(i_AST).add(v_AST));
currentAST.root = annotationMemberValuePair_AST;
currentAST.child = annotationMemberValuePair_AST!=null &&annotationMemberValuePair_AST.getFirstChild()!=null ?
annotationMemberValuePair_AST.getFirstChild() : annotationMemberValuePair_AST;
currentAST.advanceChildToEnd();
}
returnAST = annotationMemberValuePair_AST;
}
public final void conditionalExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST conditionalExpression_AST = null;
logicalOrExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
switch ( LA(1)) {
case ELVIS_OPERATOR:
{
AST tmp109_AST = null;
tmp109_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp109_AST);
match(ELVIS_OPERATOR);
nls();
conditionalExpression(0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case QUESTION:
{
AST tmp110_AST = null;
tmp110_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp110_AST);
match(QUESTION);
nls();
assignmentExpression(0);
astFactory.addASTChild(currentAST, returnAST);
match(COLON);
nls();
conditionalExpression(0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case UNUSED_GOTO:
case UNUSED_DO:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case RBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_super:
case COMMA:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case RPAREN:
case ASSIGN:
case LCURLY:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_this:
case CLOSABLE_BLOCK_OP:
case COLON:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case PLUS:
case MINUS:
case LITERAL_case:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case PLUS_ASSIGN:
case MINUS_ASSIGN:
case STAR_ASSIGN:
case DIV_ASSIGN:
case MOD_ASSIGN:
case SR_ASSIGN:
case BSR_ASSIGN:
case SL_ASSIGN:
case BAND_ASSIGN:
case BXOR_ASSIGN:
case BOR_ASSIGN:
case STAR_STAR_ASSIGN:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
conditionalExpression_AST = (AST)currentAST.root;
returnAST = conditionalExpression_AST;
}
public final void annotationMemberArrayValueInitializer() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationMemberArrayValueInitializer_AST = null;
switch ( LA(1)) {
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
conditionalExpression(0);
astFactory.addASTChild(currentAST, returnAST);
annotationMemberArrayValueInitializer_AST = (AST)currentAST.root;
break;
}
case AT:
{
annotation();
astFactory.addASTChild(currentAST, returnAST);
nls();
annotationMemberArrayValueInitializer_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = annotationMemberArrayValueInitializer_AST;
}
public final void superClassClause() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST superClassClause_AST = null;
AST c_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case LITERAL_extends:
{
match(LITERAL_extends);
nls();
classOrInterfaceType(false);
c_AST = (AST)returnAST;
nls();
break;
}
case LCURLY:
case LITERAL_implements:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
superClassClause_AST = (AST)currentAST.root;
superClassClause_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(EXTENDS_CLAUSE,"EXTENDS_CLAUSE",first,LT(1))).add(c_AST));
currentAST.root = superClassClause_AST;
currentAST.child = superClassClause_AST!=null &&superClassClause_AST.getFirstChild()!=null ?
superClassClause_AST.getFirstChild() : superClassClause_AST;
currentAST.advanceChildToEnd();
}
returnAST = superClassClause_AST;
}
public final void implementsClause() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST implementsClause_AST = null;
Token i = null;
AST i_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case LITERAL_implements:
{
i = LT(1);
i_AST = astFactory.create(i);
match(LITERAL_implements);
nls();
classOrInterfaceType(true);
astFactory.addASTChild(currentAST, returnAST);
{
_loop173:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
classOrInterfaceType(true);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop173;
}
} while (true);
}
nls();
break;
}
case LCURLY:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
implementsClause_AST = (AST)currentAST.root;
implementsClause_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(IMPLEMENTS_CLAUSE,"IMPLEMENTS_CLAUSE",first,LT(1))).add(implementsClause_AST));
currentAST.root = implementsClause_AST;
currentAST.child = implementsClause_AST!=null &&implementsClause_AST.getFirstChild()!=null ?
implementsClause_AST.getFirstChild() : implementsClause_AST;
currentAST.advanceChildToEnd();
}
implementsClause_AST = (AST)currentAST.root;
returnAST = implementsClause_AST;
}
public final void classBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST classBlock_AST = null;
Token first = LT(1);
match(LCURLY);
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
{
classField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
_loop117:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
{
classField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop117;
}
} while (true);
}
match(RCURLY);
if ( inputState.guessing==0 ) {
classBlock_AST = (AST)currentAST.root;
classBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(OBJBLOCK,"OBJBLOCK",first,LT(1))).add(classBlock_AST));
currentAST.root = classBlock_AST;
currentAST.child = classBlock_AST!=null &&classBlock_AST.getFirstChild()!=null ?
classBlock_AST.getFirstChild() : classBlock_AST;
currentAST.advanceChildToEnd();
}
classBlock_AST = (AST)currentAST.root;
returnAST = classBlock_AST;
}
public final void interfaceExtends() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST interfaceExtends_AST = null;
Token e = null;
AST e_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case LITERAL_extends:
{
e = LT(1);
e_AST = astFactory.create(e);
match(LITERAL_extends);
nls();
classOrInterfaceType(true);
astFactory.addASTChild(currentAST, returnAST);
{
_loop169:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
classOrInterfaceType(true);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop169;
}
} while (true);
}
nls();
break;
}
case LCURLY:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
interfaceExtends_AST = (AST)currentAST.root;
interfaceExtends_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(EXTENDS_CLAUSE,"EXTENDS_CLAUSE",first,LT(1))).add(interfaceExtends_AST));
currentAST.root = interfaceExtends_AST;
currentAST.child = interfaceExtends_AST!=null &&interfaceExtends_AST.getFirstChild()!=null ?
interfaceExtends_AST.getFirstChild() : interfaceExtends_AST;
currentAST.advanceChildToEnd();
}
interfaceExtends_AST = (AST)currentAST.root;
returnAST = interfaceExtends_AST;
}
public final void interfaceBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST interfaceBlock_AST = null;
Token first = LT(1);
match(LCURLY);
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
interfaceField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
_loop122:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
interfaceField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop122;
}
} while (true);
}
match(RCURLY);
if ( inputState.guessing==0 ) {
interfaceBlock_AST = (AST)currentAST.root;
interfaceBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(OBJBLOCK,"OBJBLOCK",first,LT(1))).add(interfaceBlock_AST));
currentAST.root = interfaceBlock_AST;
currentAST.child = interfaceBlock_AST!=null &&interfaceBlock_AST.getFirstChild()!=null ?
interfaceBlock_AST.getFirstChild() : interfaceBlock_AST;
currentAST.advanceChildToEnd();
}
interfaceBlock_AST = (AST)currentAST.root;
returnAST = interfaceBlock_AST;
}
public final void enumBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST enumBlock_AST = null;
Token first = LT(1);
match(LCURLY);
nls();
{
boolean synPredMatched131 = false;
if (((LA(1)==IDENT||LA(1)==AT) && (_tokenSet_40.member(LA(2))))) {
int _m131 = mark();
synPredMatched131 = true;
inputState.guessing++;
try {
{
enumConstantsStart();
}
}
catch (RecognitionException pe) {
synPredMatched131 = false;
}
rewind(_m131);
inputState.guessing--;
}
if ( synPredMatched131 ) {
enumConstants();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_41.member(LA(1))) && (_tokenSet_42.member(LA(2)))) {
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
{
classField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
{
_loop135:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
{
classField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop135;
}
} while (true);
}
match(RCURLY);
if ( inputState.guessing==0 ) {
enumBlock_AST = (AST)currentAST.root;
enumBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(OBJBLOCK,"OBJBLOCK",first,LT(1))).add(enumBlock_AST));
currentAST.root = enumBlock_AST;
currentAST.child = enumBlock_AST!=null &&enumBlock_AST.getFirstChild()!=null ?
enumBlock_AST.getFirstChild() : enumBlock_AST;
currentAST.advanceChildToEnd();
}
enumBlock_AST = (AST)currentAST.root;
returnAST = enumBlock_AST;
}
public final void annotationBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationBlock_AST = null;
Token first = LT(1);
match(LCURLY);
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
annotationField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
_loop127:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
annotationField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop127;
}
} while (true);
}
match(RCURLY);
if ( inputState.guessing==0 ) {
annotationBlock_AST = (AST)currentAST.root;
annotationBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(OBJBLOCK,"OBJBLOCK",first,LT(1))).add(annotationBlock_AST));
currentAST.root = annotationBlock_AST;
currentAST.child = annotationBlock_AST!=null &&annotationBlock_AST.getFirstChild()!=null ?
annotationBlock_AST.getFirstChild() : annotationBlock_AST;
currentAST.advanceChildToEnd();
}
annotationBlock_AST = (AST)currentAST.root;
returnAST = annotationBlock_AST;
}
public final void typeParameter() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeParameter_AST = null;
Token id = null;
AST id_AST = null;
Token first = LT(1);
{
id = LT(1);
id_AST = astFactory.create(id);
astFactory.addASTChild(currentAST, id_AST);
match(IDENT);
}
{
if ((LA(1)==LITERAL_extends) && (LA(2)==IDENT||LA(2)==NLS)) {
typeParameterBounds();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_43.member(LA(1))) && (_tokenSet_44.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
typeParameter_AST = (AST)currentAST.root;
typeParameter_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE_PARAMETER,"TYPE_PARAMETER",first,LT(1))).add(typeParameter_AST));
currentAST.root = typeParameter_AST;
currentAST.child = typeParameter_AST!=null &&typeParameter_AST.getFirstChild()!=null ?
typeParameter_AST.getFirstChild() : typeParameter_AST;
currentAST.advanceChildToEnd();
}
typeParameter_AST = (AST)currentAST.root;
returnAST = typeParameter_AST;
}
public final void typeParameterBounds() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST typeParameterBounds_AST = null;
Token first = LT(1);
match(LITERAL_extends);
nls();
classOrInterfaceType(true);
astFactory.addASTChild(currentAST, returnAST);
{
_loop112:
do {
if ((LA(1)==BAND)) {
match(BAND);
nls();
classOrInterfaceType(true);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop112;
}
} while (true);
}
if ( inputState.guessing==0 ) {
typeParameterBounds_AST = (AST)currentAST.root;
typeParameterBounds_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(TYPE_UPPER_BOUNDS,"TYPE_UPPER_BOUNDS",first,LT(1))).add(typeParameterBounds_AST));
currentAST.root = typeParameterBounds_AST;
currentAST.child = typeParameterBounds_AST!=null &&typeParameterBounds_AST.getFirstChild()!=null ?
typeParameterBounds_AST.getFirstChild() : typeParameterBounds_AST;
currentAST.advanceChildToEnd();
}
typeParameterBounds_AST = (AST)currentAST.root;
returnAST = typeParameterBounds_AST;
}
public final void classField() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST classField_AST = null;
AST mc_AST = null;
AST ctor_AST = null;
AST dg_AST = null;
AST dd_AST = null;
AST mods_AST = null;
AST td_AST = null;
AST s3_AST = null;
AST s4_AST = null;
Token first = LT(1);
boolean synPredMatched176 = false;
if (((_tokenSet_45.member(LA(1))) && (_tokenSet_46.member(LA(2))))) {
int _m176 = mark();
synPredMatched176 = true;
inputState.guessing++;
try {
{
constructorStart();
}
}
catch (RecognitionException pe) {
synPredMatched176 = false;
}
rewind(_m176);
inputState.guessing--;
}
if ( synPredMatched176 ) {
modifiersOpt();
mc_AST = (AST)returnAST;
constructorDefinition(mc_AST);
ctor_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
classField_AST = (AST)currentAST.root;
classField_AST = ctor_AST;
currentAST.root = classField_AST;
currentAST.child = classField_AST!=null &&classField_AST.getFirstChild()!=null ?
classField_AST.getFirstChild() : classField_AST;
currentAST.advanceChildToEnd();
}
}
else {
boolean synPredMatched178 = false;
if (((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2))))) {
int _m178 = mark();
synPredMatched178 = true;
inputState.guessing++;
try {
{
genericMethodStart();
}
}
catch (RecognitionException pe) {
synPredMatched178 = false;
}
rewind(_m178);
inputState.guessing--;
}
if ( synPredMatched178 ) {
genericMethod();
dg_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
classField_AST = (AST)currentAST.root;
classField_AST = dg_AST;
currentAST.root = classField_AST;
currentAST.child = classField_AST!=null &&classField_AST.getFirstChild()!=null ?
classField_AST.getFirstChild() : classField_AST;
currentAST.advanceChildToEnd();
}
}
else {
boolean synPredMatched180 = false;
if (((_tokenSet_10.member(LA(1))) && (_tokenSet_11.member(LA(2))))) {
int _m180 = mark();
synPredMatched180 = true;
inputState.guessing++;
try {
{
declarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched180 = false;
}
rewind(_m180);
inputState.guessing--;
}
if ( synPredMatched180 ) {
declaration();
dd_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
classField_AST = (AST)currentAST.root;
classField_AST = dd_AST;
currentAST.root = classField_AST;
currentAST.child = classField_AST!=null &&classField_AST.getFirstChild()!=null ?
classField_AST.getFirstChild() : classField_AST;
currentAST.advanceChildToEnd();
}
}
else {
boolean synPredMatched182 = false;
if (((_tokenSet_16.member(LA(1))) && (_tokenSet_17.member(LA(2))))) {
int _m182 = mark();
synPredMatched182 = true;
inputState.guessing++;
try {
{
typeDeclarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched182 = false;
}
rewind(_m182);
inputState.guessing--;
}
if ( synPredMatched182 ) {
modifiersOpt();
mods_AST = (AST)returnAST;
{
typeDefinitionInternal(mods_AST);
td_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
classField_AST = (AST)currentAST.root;
classField_AST = td_AST;
currentAST.root = classField_AST;
currentAST.child = classField_AST!=null &&classField_AST.getFirstChild()!=null ?
classField_AST.getFirstChild() : classField_AST;
currentAST.advanceChildToEnd();
}
}
}
else if ((LA(1)==LITERAL_static) && (LA(2)==LCURLY||LA(2)==NLS)) {
match(LITERAL_static);
nls();
compoundStatement();
s3_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
classField_AST = (AST)currentAST.root;
classField_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(STATIC_INIT,"STATIC_INIT",first,LT(1))).add(s3_AST));
currentAST.root = classField_AST;
currentAST.child = classField_AST!=null &&classField_AST.getFirstChild()!=null ?
classField_AST.getFirstChild() : classField_AST;
currentAST.advanceChildToEnd();
}
}
else if ((LA(1)==LCURLY)) {
compoundStatement();
s4_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
classField_AST = (AST)currentAST.root;
classField_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(INSTANCE_INIT,"INSTANCE_INIT",first,LT(1))).add(s4_AST));
currentAST.root = classField_AST;
currentAST.child = classField_AST!=null &&classField_AST.getFirstChild()!=null ?
classField_AST.getFirstChild() : classField_AST;
currentAST.advanceChildToEnd();
}
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}}}
returnAST = classField_AST;
}
public final void interfaceField() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST interfaceField_AST = null;
AST d_AST = null;
AST mods_AST = null;
AST td_AST = null;
boolean synPredMatched186 = false;
if (((_tokenSet_10.member(LA(1))) && (_tokenSet_11.member(LA(2))))) {
int _m186 = mark();
synPredMatched186 = true;
inputState.guessing++;
try {
{
declarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched186 = false;
}
rewind(_m186);
inputState.guessing--;
}
if ( synPredMatched186 ) {
declaration();
d_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
interfaceField_AST = (AST)currentAST.root;
interfaceField_AST = d_AST;
currentAST.root = interfaceField_AST;
currentAST.child = interfaceField_AST!=null &&interfaceField_AST.getFirstChild()!=null ?
interfaceField_AST.getFirstChild() : interfaceField_AST;
currentAST.advanceChildToEnd();
}
}
else {
boolean synPredMatched188 = false;
if (((_tokenSet_16.member(LA(1))) && (_tokenSet_17.member(LA(2))))) {
int _m188 = mark();
synPredMatched188 = true;
inputState.guessing++;
try {
{
typeDeclarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched188 = false;
}
rewind(_m188);
inputState.guessing--;
}
if ( synPredMatched188 ) {
modifiersOpt();
mods_AST = (AST)returnAST;
{
typeDefinitionInternal(mods_AST);
td_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
interfaceField_AST = (AST)currentAST.root;
interfaceField_AST = td_AST;
currentAST.root = interfaceField_AST;
currentAST.child = interfaceField_AST!=null &&interfaceField_AST.getFirstChild()!=null ?
interfaceField_AST.getFirstChild() : interfaceField_AST;
currentAST.advanceChildToEnd();
}
}
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = interfaceField_AST;
}
public final void annotationField() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST annotationField_AST = null;
AST mods_AST = null;
AST td_AST = null;
AST t_AST = null;
Token i = null;
AST i_AST = null;
AST amvi_AST = null;
AST v_AST = null;
Token first = LT(1);
modifiersOpt();
mods_AST = (AST)returnAST;
{
switch ( LA(1)) {
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
{
typeDefinitionInternal(mods_AST);
td_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
annotationField_AST = (AST)currentAST.root;
annotationField_AST = td_AST;
currentAST.root = annotationField_AST;
currentAST.child = annotationField_AST!=null &&annotationField_AST.getFirstChild()!=null ?
annotationField_AST.getFirstChild() : annotationField_AST;
currentAST.advanceChildToEnd();
}
break;
}
case IDENT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
typeSpec(false);
t_AST = (AST)returnAST;
{
boolean synPredMatched146 = false;
if (((LA(1)==IDENT) && (LA(2)==LPAREN))) {
int _m146 = mark();
synPredMatched146 = true;
inputState.guessing++;
try {
{
match(IDENT);
match(LPAREN);
}
}
catch (RecognitionException pe) {
synPredMatched146 = false;
}
rewind(_m146);
inputState.guessing--;
}
if ( synPredMatched146 ) {
i = LT(1);
i_AST = astFactory.create(i);
match(IDENT);
match(LPAREN);
match(RPAREN);
{
switch ( LA(1)) {
case LITERAL_default:
{
match(LITERAL_default);
nls();
annotationMemberValueInitializer();
amvi_AST = (AST)returnAST;
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
annotationField_AST = (AST)currentAST.root;
annotationField_AST =
(AST)astFactory.make( (new ASTArray(5)).add(create(ANNOTATION_FIELD_DEF,"ANNOTATION_FIELD_DEF",first,LT(1))).add(mods_AST).add((AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(t_AST))).add(i_AST).add(amvi_AST));
currentAST.root = annotationField_AST;
currentAST.child = annotationField_AST!=null &&annotationField_AST.getFirstChild()!=null ?
annotationField_AST.getFirstChild() : annotationField_AST;
currentAST.advanceChildToEnd();
}
}
else if ((LA(1)==IDENT||LA(1)==STRING_LITERAL) && (_tokenSet_47.member(LA(2)))) {
variableDefinitions(mods_AST,t_AST);
v_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
annotationField_AST = (AST)currentAST.root;
annotationField_AST = v_AST;
currentAST.root = annotationField_AST;
currentAST.child = annotationField_AST!=null &&annotationField_AST.getFirstChild()!=null ?
annotationField_AST.getFirstChild() : annotationField_AST;
currentAST.advanceChildToEnd();
}
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
returnAST = annotationField_AST;
}
/** Guard for enumConstants. */
public final void enumConstantsStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST enumConstantsStart_AST = null;
enumConstant();
astFactory.addASTChild(currentAST, returnAST);
{
switch ( LA(1)) {
case COMMA:
{
AST tmp129_AST = null;
tmp129_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp129_AST);
match(COMMA);
break;
}
case SEMI:
{
AST tmp130_AST = null;
tmp130_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp130_AST);
match(SEMI);
break;
}
case NLS:
{
AST tmp131_AST = null;
tmp131_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp131_AST);
match(NLS);
break;
}
case RCURLY:
{
AST tmp132_AST = null;
tmp132_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp132_AST);
match(RCURLY);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
enumConstantsStart_AST = (AST)currentAST.root;
returnAST = enumConstantsStart_AST;
}
/** Comma-separated list of one or more enum constant definitions. */
public final void enumConstants() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST enumConstants_AST = null;
enumConstant();
astFactory.addASTChild(currentAST, returnAST);
{
_loop140:
do {
if ((LA(1)==COMMA) && (_tokenSet_48.member(LA(2)))) {
match(COMMA);
nls();
enumConstant();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop140;
}
} while (true);
}
{
switch ( LA(1)) {
case COMMA:
{
match(COMMA);
nls();
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
enumConstants_AST = (AST)currentAST.root;
returnAST = enumConstants_AST;
}
public final void enumConstant() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST enumConstant_AST = null;
AST an_AST = null;
Token i = null;
AST i_AST = null;
AST a_AST = null;
AST b_AST = null;
Token first = LT(1);
annotationsOpt();
an_AST = (AST)returnAST;
i = LT(1);
i_AST = astFactory.create(i);
match(IDENT);
{
switch ( LA(1)) {
case LPAREN:
{
match(LPAREN);
argList();
a_AST = (AST)returnAST;
match(RPAREN);
break;
}
case COMMA:
case LCURLY:
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
switch ( LA(1)) {
case LCURLY:
{
enumConstantBlock();
b_AST = (AST)returnAST;
break;
}
case COMMA:
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
enumConstant_AST = (AST)currentAST.root;
enumConstant_AST = (AST)astFactory.make( (new ASTArray(5)).add(create(ENUM_CONSTANT_DEF,"ENUM_CONSTANT_DEF",first,LT(1))).add(an_AST).add(i_AST).add(a_AST).add(b_AST));
currentAST.root = enumConstant_AST;
currentAST.child = enumConstant_AST!=null &&enumConstant_AST.getFirstChild()!=null ?
enumConstant_AST.getFirstChild() : enumConstant_AST;
currentAST.advanceChildToEnd();
}
returnAST = enumConstant_AST;
}
public final void argList() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST argList_AST = null;
Token first = LT(1);
Token lastComma = null;
int hls=0, hls2=0;
boolean hasClosureList=false;
boolean trailingComma=false;
boolean sce=false;
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case UNUSED_GOTO:
case UNUSED_DO:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case STAR:
case LITERAL_as:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_default:
case LITERAL_this:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
hls=argument();
astFactory.addASTChild(currentAST, returnAST);
{
switch ( LA(1)) {
case SEMI:
{
{
{
int _cnt469=0;
_loop469:
do {
if ((LA(1)==SEMI)) {
match(SEMI);
if ( inputState.guessing==0 ) {
hasClosureList=true;
}
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
sce=strictContextExpression(true);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RBRACK:
case RPAREN:
case SEMI:
{
if ( inputState.guessing==0 ) {
astFactory.addASTChild(currentAST,astFactory.create(EMPTY_STAT, "EMPTY_STAT"));
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
if ( _cnt469>=1 ) { break _loop469; } else {throw new NoViableAltException(LT(1), getFilename());}
}
_cnt469++;
} while (true);
}
if ( inputState.guessing==0 ) {
argList_AST = (AST)currentAST.root;
argList_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(CLOSURE_LIST,"CLOSURE_LIST",first,LT(1))).add(argList_AST));
currentAST.root = argList_AST;
currentAST.child = argList_AST!=null &&argList_AST.getFirstChild()!=null ?
argList_AST.getFirstChild() : argList_AST;
currentAST.advanceChildToEnd();
}
}
break;
}
case RBRACK:
case COMMA:
case RPAREN:
{
{
{
_loop475:
do {
if ((LA(1)==COMMA)) {
if ( inputState.guessing==0 ) {
lastComma = LT(1);
}
match(COMMA);
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case UNUSED_GOTO:
case UNUSED_DO:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case STAR:
case LITERAL_as:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_default:
case LITERAL_this:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
{
hls2=argument();
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
hls |= hls2;
}
}
break;
}
case RBRACK:
case COMMA:
case RPAREN:
{
{
if ( inputState.guessing==0 ) {
if (trailingComma) throw new NoViableAltException(lastComma, getFilename());
trailingComma=true;
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop475;
}
} while (true);
}
if ( inputState.guessing==0 ) {
argList_AST = (AST)currentAST.root;
argList_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(ELIST,"ELIST",first,LT(1))).add(argList_AST));
currentAST.root = argList_AST;
currentAST.child = argList_AST!=null &&argList_AST.getFirstChild()!=null ?
argList_AST.getFirstChild() : argList_AST;
currentAST.advanceChildToEnd();
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
break;
}
case RBRACK:
case RPAREN:
{
{
if ( inputState.guessing==0 ) {
argList_AST = (AST)currentAST.root;
argList_AST = create(ELIST,"ELIST",first,LT(1));
currentAST.root = argList_AST;
currentAST.child = argList_AST!=null &&argList_AST.getFirstChild()!=null ?
argList_AST.getFirstChild() : argList_AST;
currentAST.advanceChildToEnd();
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
argListHasLabels = (hls&1)!=0;
}
argList_AST = (AST)currentAST.root;
returnAST = argList_AST;
}
public final void enumConstantBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST enumConstantBlock_AST = null;
Token first = LT(1);
match(LCURLY);
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
{
enumConstantField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
_loop155:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
{
enumConstantField();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop155;
}
} while (true);
}
match(RCURLY);
if ( inputState.guessing==0 ) {
enumConstantBlock_AST = (AST)currentAST.root;
enumConstantBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(OBJBLOCK,"OBJBLOCK",first,LT(1))).add(enumConstantBlock_AST));
currentAST.root = enumConstantBlock_AST;
currentAST.child = enumConstantBlock_AST!=null &&enumConstantBlock_AST.getFirstChild()!=null ?
enumConstantBlock_AST.getFirstChild() : enumConstantBlock_AST;
currentAST.advanceChildToEnd();
}
enumConstantBlock_AST = (AST)currentAST.root;
returnAST = enumConstantBlock_AST;
}
public final void enumConstantField() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST enumConstantField_AST = null;
AST mods_AST = null;
AST td_AST = null;
AST tp_AST = null;
AST t_AST = null;
AST param_AST = null;
AST tc_AST = null;
AST s2_AST = null;
AST v_AST = null;
AST s4_AST = null;
Token first = LT(1);
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case LT:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
{
modifiersOpt();
mods_AST = (AST)returnAST;
{
switch ( LA(1)) {
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
{
typeDefinitionInternal(mods_AST);
td_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
enumConstantField_AST = (AST)currentAST.root;
enumConstantField_AST = td_AST;
currentAST.root = enumConstantField_AST;
currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
enumConstantField_AST.getFirstChild() : enumConstantField_AST;
currentAST.advanceChildToEnd();
}
break;
}
case IDENT:
case LT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
{
switch ( LA(1)) {
case LT:
{
typeParameters();
tp_AST = (AST)returnAST;
break;
}
case IDENT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
typeSpec(false);
t_AST = (AST)returnAST;
{
boolean synPredMatched161 = false;
if (((LA(1)==IDENT) && (LA(2)==LPAREN))) {
int _m161 = mark();
synPredMatched161 = true;
inputState.guessing++;
try {
{
match(IDENT);
match(LPAREN);
}
}
catch (RecognitionException pe) {
synPredMatched161 = false;
}
rewind(_m161);
inputState.guessing--;
}
if ( synPredMatched161 ) {
AST tmp141_AST = null;
tmp141_AST = astFactory.create(LT(1));
match(IDENT);
match(LPAREN);
parameterDeclarationList();
param_AST = (AST)returnAST;
match(RPAREN);
{
boolean synPredMatched164 = false;
if (((LA(1)==NLS||LA(1)==LITERAL_throws) && (_tokenSet_23.member(LA(2))))) {
int _m164 = mark();
synPredMatched164 = true;
inputState.guessing++;
try {
{
nls();
match(LITERAL_throws);
}
}
catch (RecognitionException pe) {
synPredMatched164 = false;
}
rewind(_m164);
inputState.guessing--;
}
if ( synPredMatched164 ) {
throwsClause();
tc_AST = (AST)returnAST;
}
else if (((LA(1) >= LCURLY && LA(1) <= NLS)) && (_tokenSet_49.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
{
switch ( LA(1)) {
case LCURLY:
{
compoundStatement();
s2_AST = (AST)returnAST;
break;
}
case RCURLY:
case SEMI:
case NLS:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
enumConstantField_AST = (AST)currentAST.root;
enumConstantField_AST = (AST)astFactory.make( (new ASTArray(8)).add(create(METHOD_DEF,"METHOD_DEF",first,LT(1))).add(mods_AST).add(tp_AST).add((AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(t_AST))).add(tmp141_AST).add(param_AST).add(tc_AST).add(s2_AST));
currentAST.root = enumConstantField_AST;
currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
enumConstantField_AST.getFirstChild() : enumConstantField_AST;
currentAST.advanceChildToEnd();
}
}
else if ((LA(1)==IDENT||LA(1)==STRING_LITERAL) && (_tokenSet_47.member(LA(2)))) {
variableDefinitions(mods_AST,t_AST);
v_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
enumConstantField_AST = (AST)currentAST.root;
enumConstantField_AST = v_AST;
currentAST.root = enumConstantField_AST;
currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
enumConstantField_AST.getFirstChild() : enumConstantField_AST;
currentAST.advanceChildToEnd();
}
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
break;
}
case LCURLY:
{
compoundStatement();
s4_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
enumConstantField_AST = (AST)currentAST.root;
enumConstantField_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(INSTANCE_INIT,"INSTANCE_INIT",first,LT(1))).add(s4_AST));
currentAST.root = enumConstantField_AST;
currentAST.child = enumConstantField_AST!=null &&enumConstantField_AST.getFirstChild()!=null ?
enumConstantField_AST.getFirstChild() : enumConstantField_AST;
currentAST.advanceChildToEnd();
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = enumConstantField_AST;
}
/** A list of zero or more formal parameters.
* If a parameter is variable length (e.g. String... myArg) it should be
* to the right of any other parameters of the same kind.
* General form: (req, ..., opt, ..., [rest], key, ..., [restKeys], [block]
* This must be sorted out after parsing, since the various declaration forms
* are impossible to tell apart without backtracking.
*/
public final void parameterDeclarationList() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST parameterDeclarationList_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case FINAL:
case LITERAL_def:
case IDENT:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case TRIPLE_DOT:
{
parameterDeclaration();
astFactory.addASTChild(currentAST, returnAST);
{
_loop227:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
parameterDeclaration();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop227;
}
} while (true);
}
break;
}
case RPAREN:
case NLS:
case CLOSABLE_BLOCK_OP:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
parameterDeclarationList_AST = (AST)currentAST.root;
parameterDeclarationList_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(PARAMETERS,"PARAMETERS",first,LT(1))).add(parameterDeclarationList_AST));
currentAST.root = parameterDeclarationList_AST;
currentAST.child = parameterDeclarationList_AST!=null &¶meterDeclarationList_AST.getFirstChild()!=null ?
parameterDeclarationList_AST.getFirstChild() : parameterDeclarationList_AST;
currentAST.advanceChildToEnd();
}
parameterDeclarationList_AST = (AST)currentAST.root;
returnAST = parameterDeclarationList_AST;
}
public final void throwsClause() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST throwsClause_AST = null;
nls();
AST tmp145_AST = null;
tmp145_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp145_AST);
match(LITERAL_throws);
nls();
identifier();
astFactory.addASTChild(currentAST, returnAST);
{
_loop223:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
identifier();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop223;
}
} while (true);
}
throwsClause_AST = (AST)currentAST.root;
returnAST = throwsClause_AST;
}
public final void compoundStatement() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST compoundStatement_AST = null;
openBlock();
astFactory.addASTChild(currentAST, returnAST);
compoundStatement_AST = (AST)currentAST.root;
returnAST = compoundStatement_AST;
}
/** I've split out constructors separately; we could maybe integrate back into variableDefinitions
* later on if we maybe simplified 'def' to be a type declaration?
*/
public final void constructorDefinition(
AST mods
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST constructorDefinition_AST = null;
Token id = null;
AST id_AST = null;
AST param_AST = null;
AST tc_AST = null;
AST cb_AST = null;
Token first = LT(1);
id = LT(1);
id_AST = astFactory.create(id);
astFactory.addASTChild(currentAST, id_AST);
match(IDENT);
match(LPAREN);
parameterDeclarationList();
param_AST = (AST)returnAST;
match(RPAREN);
{
boolean synPredMatched212 = false;
if (((LA(1)==NLS||LA(1)==LITERAL_throws) && (_tokenSet_23.member(LA(2))))) {
int _m212 = mark();
synPredMatched212 = true;
inputState.guessing++;
try {
{
nls();
match(LITERAL_throws);
}
}
catch (RecognitionException pe) {
synPredMatched212 = false;
}
rewind(_m212);
inputState.guessing--;
}
if ( synPredMatched212 ) {
throwsClause();
tc_AST = (AST)returnAST;
}
else if ((LA(1)==LCURLY||LA(1)==NLS) && (_tokenSet_50.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
nlsWarn();
if ( inputState.guessing==0 ) {
isConstructorIdent(id);
}
constructorBody();
cb_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
constructorDefinition_AST = (AST)currentAST.root;
constructorDefinition_AST = (AST)astFactory.make( (new ASTArray(5)).add(create(CTOR_IDENT,"CTOR_IDENT",first,LT(1))).add(mods).add(param_AST).add(tc_AST).add(cb_AST));
currentAST.root = constructorDefinition_AST;
currentAST.child = constructorDefinition_AST!=null &&constructorDefinition_AST.getFirstChild()!=null ?
constructorDefinition_AST.getFirstChild() : constructorDefinition_AST;
currentAST.advanceChildToEnd();
}
constructorDefinition_AST = (AST)currentAST.root;
returnAST = constructorDefinition_AST;
}
public final void constructorBody() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST constructorBody_AST = null;
Token lc = null;
AST lc_AST = null;
lc = LT(1);
lc_AST = astFactory.create(lc);
astFactory.makeASTRoot(currentAST, lc_AST);
match(LCURLY);
nls();
if ( inputState.guessing==0 ) {
lc_AST.setType(SLIST);
}
{
boolean synPredMatched193 = false;
if (((_tokenSet_51.member(LA(1))) && (_tokenSet_52.member(LA(2))))) {
int _m193 = mark();
synPredMatched193 = true;
inputState.guessing++;
try {
{
explicitConstructorInvocation();
}
}
catch (RecognitionException pe) {
synPredMatched193 = false;
}
rewind(_m193);
inputState.guessing--;
}
if ( synPredMatched193 ) {
explicitConstructorInvocation();
astFactory.addASTChild(currentAST, returnAST);
{
switch ( LA(1)) {
case SEMI:
case NLS:
{
sep();
blockBody(sepToken);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else if ((_tokenSet_25.member(LA(1))) && (_tokenSet_53.member(LA(2)))) {
blockBody(EOF);
astFactory.addASTChild(currentAST, returnAST);
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
match(RCURLY);
constructorBody_AST = (AST)currentAST.root;
returnAST = constructorBody_AST;
}
/** Catch obvious constructor calls, but not the expr.super(...) calls */
public final void explicitConstructorInvocation() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST explicitConstructorInvocation_AST = null;
Token lp1 = null;
AST lp1_AST = null;
Token lp2 = null;
AST lp2_AST = null;
{
switch ( LA(1)) {
case LT:
{
typeArguments();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case LITERAL_super:
case LITERAL_this:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
switch ( LA(1)) {
case LITERAL_this:
{
match(LITERAL_this);
lp1 = LT(1);
lp1_AST = astFactory.create(lp1);
astFactory.makeASTRoot(currentAST, lp1_AST);
match(LPAREN);
argList();
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
if ( inputState.guessing==0 ) {
lp1_AST.setType(CTOR_CALL);
}
break;
}
case LITERAL_super:
{
match(LITERAL_super);
lp2 = LT(1);
lp2_AST = astFactory.create(lp2);
astFactory.makeASTRoot(currentAST, lp2_AST);
match(LPAREN);
argList();
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
if ( inputState.guessing==0 ) {
lp2_AST.setType(SUPER_CTOR_CALL);
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
explicitConstructorInvocation_AST = (AST)currentAST.root;
returnAST = explicitConstructorInvocation_AST;
}
/** Declaration of a variable. This can be a class/instance variable,
* or a local variable in a method
* It can also include possible initialization.
*/
public final void variableDeclarator(
AST mods, AST t
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST variableDeclarator_AST = null;
AST id_AST = null;
AST v_AST = null;
Token first = LT(1);
variableName();
id_AST = (AST)returnAST;
{
switch ( LA(1)) {
case ASSIGN:
{
varInitializer();
v_AST = (AST)returnAST;
break;
}
case EOF:
case COMMA:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_else:
case LITERAL_case:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
variableDeclarator_AST = (AST)currentAST.root;
variableDeclarator_AST = (AST)astFactory.make( (new ASTArray(5)).add(create(VARIABLE_DEF,"VARIABLE_DEF",first,LT(1))).add(mods).add((AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(t))).add(id_AST).add(v_AST));
currentAST.root = variableDeclarator_AST;
currentAST.child = variableDeclarator_AST!=null &&variableDeclarator_AST.getFirstChild()!=null ?
variableDeclarator_AST.getFirstChild() : variableDeclarator_AST;
currentAST.advanceChildToEnd();
}
returnAST = variableDeclarator_AST;
}
/** Zero or more insignificant newlines, all gobbled up and thrown away,
* but a warning message is left for the user, if there was a newline.
*/
public final void nlsWarn() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST nlsWarn_AST = null;
{
boolean synPredMatched514 = false;
if (((_tokenSet_54.member(LA(1))) && (_tokenSet_14.member(LA(2))))) {
int _m514 = mark();
synPredMatched514 = true;
inputState.guessing++;
try {
{
match(NLS);
}
}
catch (RecognitionException pe) {
synPredMatched514 = false;
}
rewind(_m514);
inputState.guessing--;
}
if ( synPredMatched514 ) {
if ( inputState.guessing==0 ) {
addWarning(
"A newline at this point does not follow the Groovy Coding Conventions.",
"Keep this statement on one line, or use curly braces to break across multiple lines."
);
}
}
else if ((_tokenSet_54.member(LA(1))) && (_tokenSet_14.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
nls();
returnAST = nlsWarn_AST;
}
/** An open block is not allowed to have closure arguments. */
public final void openBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST openBlock_AST = null;
Token lc = null;
AST lc_AST = null;
lc = LT(1);
lc_AST = astFactory.create(lc);
astFactory.makeASTRoot(currentAST, lc_AST);
match(LCURLY);
nls();
if ( inputState.guessing==0 ) {
lc_AST.setType(SLIST);
}
blockBody(EOF);
astFactory.addASTChild(currentAST, returnAST);
match(RCURLY);
openBlock_AST = (AST)currentAST.root;
returnAST = openBlock_AST;
}
public final void variableName() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST variableName_AST = null;
AST tmp155_AST = null;
tmp155_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp155_AST);
match(IDENT);
variableName_AST = (AST)currentAST.root;
returnAST = variableName_AST;
}
public final void expression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST expression_AST = null;
assignmentExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
expression_AST = (AST)currentAST.root;
returnAST = expression_AST;
}
/** A formal parameter for a method or closure. */
public final void parameterDeclaration() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST parameterDeclaration_AST = null;
AST pm_AST = null;
AST t_AST = null;
Token id = null;
AST id_AST = null;
AST exp_AST = null;
Token first = LT(1);boolean spreadParam = false;
parameterModifiersOpt();
pm_AST = (AST)returnAST;
{
if ((_tokenSet_19.member(LA(1))) && (_tokenSet_55.member(LA(2)))) {
typeSpec(false);
t_AST = (AST)returnAST;
}
else if ((LA(1)==IDENT||LA(1)==TRIPLE_DOT) && (_tokenSet_56.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
{
switch ( LA(1)) {
case TRIPLE_DOT:
{
match(TRIPLE_DOT);
if ( inputState.guessing==0 ) {
spreadParam = true;
}
break;
}
case IDENT:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
id = LT(1);
id_AST = astFactory.create(id);
match(IDENT);
{
switch ( LA(1)) {
case ASSIGN:
{
varInitializer();
exp_AST = (AST)returnAST;
break;
}
case COMMA:
case RPAREN:
case NLS:
case CLOSABLE_BLOCK_OP:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
parameterDeclaration_AST = (AST)currentAST.root;
if (spreadParam) {
parameterDeclaration_AST = (AST)astFactory.make( (new ASTArray(5)).add(create(VARIABLE_PARAMETER_DEF,"VARIABLE_PARAMETER_DEF",first,LT(1))).add(pm_AST).add((AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(t_AST))).add(id_AST).add(exp_AST));
} else {
parameterDeclaration_AST = (AST)astFactory.make( (new ASTArray(5)).add(create(PARAMETER_DEF,"PARAMETER_DEF",first,LT(1))).add(pm_AST).add((AST)astFactory.make( (new ASTArray(2)).add(create(TYPE,"TYPE",first,LT(1))).add(t_AST))).add(id_AST).add(exp_AST));
}
currentAST.root = parameterDeclaration_AST;
currentAST.child = parameterDeclaration_AST!=null &¶meterDeclaration_AST.getFirstChild()!=null ?
parameterDeclaration_AST.getFirstChild() : parameterDeclaration_AST;
currentAST.advanceChildToEnd();
}
returnAST = parameterDeclaration_AST;
}
public final void parameterModifiersOpt() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST parameterModifiersOpt_AST = null;
Token first = LT(1);int seenDef = 0;
{
_loop234:
do {
switch ( LA(1)) {
case FINAL:
{
AST tmp157_AST = null;
tmp157_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp157_AST);
match(FINAL);
nls();
break;
}
case AT:
{
annotation();
astFactory.addASTChild(currentAST, returnAST);
nls();
break;
}
default:
if (((LA(1)==LITERAL_def))&&(seenDef++ == 0)) {
match(LITERAL_def);
nls();
}
else {
break _loop234;
}
}
} while (true);
}
if ( inputState.guessing==0 ) {
parameterModifiersOpt_AST = (AST)currentAST.root;
parameterModifiersOpt_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(MODIFIERS,"MODIFIERS",first,LT(1))).add(parameterModifiersOpt_AST));
currentAST.root = parameterModifiersOpt_AST;
currentAST.child = parameterModifiersOpt_AST!=null &¶meterModifiersOpt_AST.getFirstChild()!=null ?
parameterModifiersOpt_AST.getFirstChild() : parameterModifiersOpt_AST;
currentAST.advanceChildToEnd();
}
parameterModifiersOpt_AST = (AST)currentAST.root;
returnAST = parameterModifiersOpt_AST;
}
/** Closure parameters are exactly like method parameters,
* except that they are not enclosed in parentheses, but rather
* are prepended to the front of a block, just after the brace.
* They are separated from the closure body by a CLOSABLE_BLOCK_OP token '->'.
*/
public final void closableBlockParamsOpt(
boolean addImplicit
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST closableBlockParamsOpt_AST = null;
boolean synPredMatched237 = false;
if (((_tokenSet_57.member(LA(1))) && (_tokenSet_58.member(LA(2))))) {
int _m237 = mark();
synPredMatched237 = true;
inputState.guessing++;
try {
{
parameterDeclarationList();
nls();
match(CLOSABLE_BLOCK_OP);
}
}
catch (RecognitionException pe) {
synPredMatched237 = false;
}
rewind(_m237);
inputState.guessing--;
}
if ( synPredMatched237 ) {
parameterDeclarationList();
astFactory.addASTChild(currentAST, returnAST);
nls();
match(CLOSABLE_BLOCK_OP);
nls();
closableBlockParamsOpt_AST = (AST)currentAST.root;
}
else if (((_tokenSet_25.member(LA(1))) && (_tokenSet_59.member(LA(2))))&&(addImplicit)) {
implicitParameters();
astFactory.addASTChild(currentAST, returnAST);
closableBlockParamsOpt_AST = (AST)currentAST.root;
}
else if ((_tokenSet_25.member(LA(1))) && (_tokenSet_59.member(LA(2)))) {
closableBlockParamsOpt_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = closableBlockParamsOpt_AST;
}
/** A block known to be a closure, but which omits its arguments, is given this placeholder.
* A subsequent pass is responsible for deciding if there is an implicit 'it' parameter,
* or if the parameter list should be empty.
*/
public final void implicitParameters() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST implicitParameters_AST = null;
Token first = LT(1);
if ( inputState.guessing==0 ) {
implicitParameters_AST = (AST)currentAST.root;
implicitParameters_AST = (AST)astFactory.make( (new ASTArray(1)).add(create(IMPLICIT_PARAMETERS,"IMPLICIT_PARAMETERS",first,LT(1))));
currentAST.root = implicitParameters_AST;
currentAST.child = implicitParameters_AST!=null &&implicitParameters_AST.getFirstChild()!=null ?
implicitParameters_AST.getFirstChild() : implicitParameters_AST;
currentAST.advanceChildToEnd();
}
implicitParameters_AST = (AST)currentAST.root;
returnAST = implicitParameters_AST;
}
/** Lookahead to check whether a block begins with explicit closure arguments. */
public final void closableBlockParamsStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST closableBlockParamsStart_AST = null;
parameterDeclarationList();
nls();
AST tmp160_AST = null;
tmp160_AST = astFactory.create(LT(1));
match(CLOSABLE_BLOCK_OP);
returnAST = closableBlockParamsStart_AST;
}
/** Simple names, as in {x|...}, are completely equivalent to {(def x)|...}. Build the right AST. */
public final void closableBlockParam() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST closableBlockParam_AST = null;
Token id = null;
AST id_AST = null;
Token first = LT(1);
id = LT(1);
id_AST = astFactory.create(id);
match(IDENT);
if ( inputState.guessing==0 ) {
closableBlockParam_AST = (AST)currentAST.root;
closableBlockParam_AST = (AST)astFactory.make( (new ASTArray(4)).add(create(PARAMETER_DEF,"PARAMETER_DEF",first,LT(1))).add((AST)astFactory.make( (new ASTArray(1)).add(create(MODIFIERS,"MODIFIERS",first,LT(1))))).add((AST)astFactory.make( (new ASTArray(1)).add(create(TYPE,"TYPE",first,LT(1))))).add(id_AST));
currentAST.root = closableBlockParam_AST;
currentAST.child = closableBlockParam_AST!=null &&closableBlockParam_AST.getFirstChild()!=null ?
closableBlockParam_AST.getFirstChild() : closableBlockParam_AST;
currentAST.advanceChildToEnd();
}
returnAST = closableBlockParam_AST;
}
/** A block which is known to be a closure, even if it has no apparent arguments.
* A block inside an expression or after a method call is always assumed to be a closure.
* Only labeled, unparameterized blocks which occur directly as substatements are kept open.
*/
public final void closableBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST closableBlock_AST = null;
Token lc = null;
AST lc_AST = null;
lc = LT(1);
lc_AST = astFactory.create(lc);
astFactory.makeASTRoot(currentAST, lc_AST);
match(LCURLY);
nls();
if ( inputState.guessing==0 ) {
lc_AST.setType(CLOSABLE_BLOCK);
}
closableBlockParamsOpt(true);
astFactory.addASTChild(currentAST, returnAST);
blockBody(EOF);
astFactory.addASTChild(currentAST, returnAST);
match(RCURLY);
closableBlock_AST = (AST)currentAST.root;
returnAST = closableBlock_AST;
}
/** A sub-block of a block can be either open or closable.
* It is closable if and only if there are explicit closure arguments.
* Compare this to a block which is appended to a method call,
* which is given closure arguments, even if they are not explicit in the code.
*/
public final void openOrClosableBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST openOrClosableBlock_AST = null;
Token lc = null;
AST lc_AST = null;
AST cp_AST = null;
lc = LT(1);
lc_AST = astFactory.create(lc);
astFactory.makeASTRoot(currentAST, lc_AST);
match(LCURLY);
nls();
closableBlockParamsOpt(false);
cp_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
if (cp_AST == null) lc_AST.setType(SLIST);
else lc_AST.setType(CLOSABLE_BLOCK);
}
blockBody(EOF);
astFactory.addASTChild(currentAST, returnAST);
match(RCURLY);
openOrClosableBlock_AST = (AST)currentAST.root;
returnAST = openOrClosableBlock_AST;
}
/** A labeled statement, consisting of a vanilla identifier followed by a colon. */
public final void statementLabelPrefix() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST statementLabelPrefix_AST = null;
Token c = null;
AST c_AST = null;
AST tmp163_AST = null;
tmp163_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp163_AST);
match(IDENT);
c = LT(1);
c_AST = astFactory.create(c);
astFactory.makeASTRoot(currentAST, c_AST);
match(COLON);
if ( inputState.guessing==0 ) {
c_AST.setType(LABELED_STAT);
}
nls();
statementLabelPrefix_AST = (AST)currentAST.root;
returnAST = statementLabelPrefix_AST;
}
/** An expression statement can be any general expression.
*
* An expression statement can also be a command,
* which is a simple method call in which the outermost parentheses are omitted.
*
* Certain "suspicious" looking forms are flagged for the user to disambiguate.
*/
public final void expressionStatement(
int prevToken
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST expressionStatement_AST = null;
AST head_AST = null;
AST cmd_AST = null;
Token first = LT(1);boolean isPathExpr = false;
{
boolean synPredMatched295 = false;
if (((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2))))) {
int _m295 = mark();
synPredMatched295 = true;
inputState.guessing++;
try {
{
suspiciousExpressionStatementStart();
}
}
catch (RecognitionException pe) {
synPredMatched295 = false;
}
rewind(_m295);
inputState.guessing--;
}
if ( synPredMatched295 ) {
checkSuspiciousExpressionStatement(prevToken);
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
expression(LC_STMT);
head_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
isPathExpr = (head_AST == lastPathExpression);
}
{
if (((_tokenSet_60.member(LA(1))) && (_tokenSet_61.member(LA(2))))&&(isPathExpr)) {
commandArguments(head_AST);
cmd_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
expressionStatement_AST = (AST)currentAST.root;
expressionStatement_AST = cmd_AST;
currentAST.root = expressionStatement_AST;
currentAST.child = expressionStatement_AST!=null &&expressionStatement_AST.getFirstChild()!=null ?
expressionStatement_AST.getFirstChild() : expressionStatement_AST;
currentAST.advanceChildToEnd();
}
}
else if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
expressionStatement_AST = (AST)currentAST.root;
expressionStatement_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(EXPR,"EXPR",first,LT(1))).add(expressionStatement_AST));
currentAST.root = expressionStatement_AST;
currentAST.child = expressionStatement_AST!=null &&expressionStatement_AST.getFirstChild()!=null ?
expressionStatement_AST.getFirstChild() : expressionStatement_AST;
currentAST.advanceChildToEnd();
}
expressionStatement_AST = (AST)currentAST.root;
returnAST = expressionStatement_AST;
}
public final void assignmentLessExpression() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST assignmentLessExpression_AST = null;
Token first = LT(1);
{
conditionalExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
if ( inputState.guessing==0 ) {
assignmentLessExpression_AST = (AST)currentAST.root;
assignmentLessExpression_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(EXPR,"EXPR",first,LT(1))).add(assignmentLessExpression_AST));
currentAST.root = assignmentLessExpression_AST;
currentAST.child = assignmentLessExpression_AST!=null &&assignmentLessExpression_AST.getFirstChild()!=null ?
assignmentLessExpression_AST.getFirstChild() : assignmentLessExpression_AST;
currentAST.advanceChildToEnd();
}
assignmentLessExpression_AST = (AST)currentAST.root;
returnAST = assignmentLessExpression_AST;
}
/** In Java, "if", "while", and "for" statements can take random, non-braced statements as their bodies.
* Support this practice, even though it isn't very Groovy.
*/
public final void compatibleBodyStatement() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST compatibleBodyStatement_AST = null;
boolean synPredMatched284 = false;
if (((LA(1)==LCURLY) && (_tokenSet_25.member(LA(2))))) {
int _m284 = mark();
synPredMatched284 = true;
inputState.guessing++;
try {
{
match(LCURLY);
}
}
catch (RecognitionException pe) {
synPredMatched284 = false;
}
rewind(_m284);
inputState.guessing--;
}
if ( synPredMatched284 ) {
compoundStatement();
astFactory.addASTChild(currentAST, returnAST);
compatibleBodyStatement_AST = (AST)currentAST.root;
}
else if ((_tokenSet_13.member(LA(1))) && (_tokenSet_14.member(LA(2)))) {
statement(EOF);
astFactory.addASTChild(currentAST, returnAST);
compatibleBodyStatement_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = compatibleBodyStatement_AST;
}
public final void forStatement() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST forStatement_AST = null;
Token f = null;
AST f_AST = null;
f = LT(1);
f_AST = astFactory.create(f);
astFactory.makeASTRoot(currentAST, f_AST);
match(LITERAL_for);
match(LPAREN);
{
boolean synPredMatched272 = false;
if (((_tokenSet_62.member(LA(1))) && (_tokenSet_53.member(LA(2))))) {
int _m272 = mark();
synPredMatched272 = true;
inputState.guessing++;
try {
{
switch ( LA(1)) {
case SEMI:
{
match(SEMI);
break;
}
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
{
strictContextExpression(true);
match(SEMI);
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
catch (RecognitionException pe) {
synPredMatched272 = false;
}
rewind(_m272);
inputState.guessing--;
}
if ( synPredMatched272 ) {
closureList();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_10.member(LA(1))) && (_tokenSet_63.member(LA(2)))) {
forInClause();
astFactory.addASTChild(currentAST, returnAST);
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
match(RPAREN);
nls();
{
switch ( LA(1)) {
case SEMI:
{
AST tmp166_AST = null;
tmp166_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp166_AST);
match(SEMI);
break;
}
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
compatibleBodyStatement();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
forStatement_AST = (AST)currentAST.root;
returnAST = forStatement_AST;
}
/** Things that can show up as expressions, but only in strict
* contexts like inside parentheses, argument lists, and list constructors.
*/
public final boolean strictContextExpression(
boolean allowDeclaration
) throws RecognitionException, TokenStreamException {
boolean hasDeclaration=false;
returnAST = null;
ASTPair currentAST = new ASTPair();
AST strictContextExpression_AST = null;
Token first = LT(1);
{
boolean synPredMatched449 = false;
if (((_tokenSet_10.member(LA(1))) && (_tokenSet_64.member(LA(2))))) {
int _m449 = mark();
synPredMatched449 = true;
inputState.guessing++;
try {
{
if (!(allowDeclaration))
throw new SemanticException("allowDeclaration");
declarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched449 = false;
}
rewind(_m449);
inputState.guessing--;
}
if ( synPredMatched449 ) {
if ( inputState.guessing==0 ) {
hasDeclaration=true;
}
singleDeclaration();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_15.member(LA(1))) && (_tokenSet_65.member(LA(2)))) {
expression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else if (((LA(1) >= LITERAL_return && LA(1) <= LITERAL_assert))) {
branchStatement();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((LA(1)==AT) && (LA(2)==IDENT)) {
annotation();
astFactory.addASTChild(currentAST, returnAST);
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
strictContextExpression_AST = (AST)currentAST.root;
strictContextExpression_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(EXPR,"EXPR",first,LT(1))).add(strictContextExpression_AST));
currentAST.root = strictContextExpression_AST;
currentAST.child = strictContextExpression_AST!=null &&strictContextExpression_AST.getFirstChild()!=null ?
strictContextExpression_AST.getFirstChild() : strictContextExpression_AST;
currentAST.advanceChildToEnd();
}
strictContextExpression_AST = (AST)currentAST.root;
returnAST = strictContextExpression_AST;
return hasDeclaration;
}
public final void casesGroup() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST casesGroup_AST = null;
Token first = LT(1);
{
int _cnt307=0;
_loop307:
do {
if ((LA(1)==LITERAL_default||LA(1)==LITERAL_case)) {
aCase();
astFactory.addASTChild(currentAST, returnAST);
}
else {
if ( _cnt307>=1 ) { break _loop307; } else {throw new NoViableAltException(LT(1), getFilename());}
}
_cnt307++;
} while (true);
}
caseSList();
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
casesGroup_AST = (AST)currentAST.root;
casesGroup_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(CASE_GROUP,"CASE_GROUP",first,LT(1))).add(casesGroup_AST));
currentAST.root = casesGroup_AST;
currentAST.child = casesGroup_AST!=null &&casesGroup_AST.getFirstChild()!=null ?
casesGroup_AST.getFirstChild() : casesGroup_AST;
currentAST.advanceChildToEnd();
}
casesGroup_AST = (AST)currentAST.root;
returnAST = casesGroup_AST;
}
public final void tryBlock() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST tryBlock_AST = null;
AST tmp167_AST = null;
tmp167_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp167_AST);
match(LITERAL_try);
nlsWarn();
compoundStatement();
astFactory.addASTChild(currentAST, returnAST);
{
_loop324:
do {
if ((LA(1)==NLS||LA(1)==LITERAL_catch) && (LA(2)==LPAREN||LA(2)==LITERAL_catch)) {
nls();
handler();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop324;
}
} while (true);
}
{
if ((LA(1)==NLS||LA(1)==LITERAL_finally) && (_tokenSet_66.member(LA(2)))) {
nls();
finallyClause();
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_6.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
tryBlock_AST = (AST)currentAST.root;
returnAST = tryBlock_AST;
}
/** In Groovy, return, break, continue, throw, and assert can be used in a parenthesized expression context.
* Example: println (x || (return)); println assert x, "won't print a false value!"
* If an optional expression is missing, its value is void (this coerces to null when a value is required).
*/
public final void branchStatement() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST branchStatement_AST = null;
switch ( LA(1)) {
case LITERAL_return:
{
AST tmp168_AST = null;
tmp168_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp168_AST);
match(LITERAL_return);
{
switch ( LA(1)) {
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
expression(0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case RBRACK:
case COMMA:
case RPAREN:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_else:
case LITERAL_case:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
branchStatement_AST = (AST)currentAST.root;
break;
}
case LITERAL_break:
case LITERAL_continue:
{
{
switch ( LA(1)) {
case LITERAL_break:
{
AST tmp169_AST = null;
tmp169_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp169_AST);
match(LITERAL_break);
break;
}
case LITERAL_continue:
{
AST tmp170_AST = null;
tmp170_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp170_AST);
match(LITERAL_continue);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
switch ( LA(1)) {
case IDENT:
{
AST tmp171_AST = null;
tmp171_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp171_AST);
match(IDENT);
break;
}
case EOF:
case RBRACK:
case COMMA:
case RPAREN:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_else:
case LITERAL_case:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
branchStatement_AST = (AST)currentAST.root;
break;
}
case LITERAL_throw:
{
AST tmp172_AST = null;
tmp172_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp172_AST);
match(LITERAL_throw);
expression(0);
astFactory.addASTChild(currentAST, returnAST);
branchStatement_AST = (AST)currentAST.root;
break;
}
case LITERAL_assert:
{
AST tmp173_AST = null;
tmp173_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp173_AST);
match(LITERAL_assert);
assignmentLessExpression();
astFactory.addASTChild(currentAST, returnAST);
{
if ((LA(1)==COMMA||LA(1)==COLON) && (_tokenSet_15.member(LA(2)))) {
{
switch ( LA(1)) {
case COMMA:
{
match(COMMA);
break;
}
case COLON:
{
match(COLON);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
expression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_67.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
branchStatement_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = branchStatement_AST;
}
public final void closureList() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST closureList_AST = null;
Token first = LT(1); boolean sce=false;
sce=strictContextExpression(true);
astFactory.addASTChild(currentAST, returnAST);
{
int _cnt276=0;
_loop276:
do {
if ((LA(1)==SEMI) && (_tokenSet_62.member(LA(2)))) {
match(SEMI);
sce=strictContextExpression(true);
astFactory.addASTChild(currentAST, returnAST);
}
else if ((LA(1)==SEMI) && (LA(2)==RPAREN||LA(2)==SEMI)) {
match(SEMI);
if ( inputState.guessing==0 ) {
astFactory.addASTChild(currentAST,astFactory.create(EMPTY_STAT, "EMPTY_STAT"));
}
}
else {
if ( _cnt276>=1 ) { break _loop276; } else {throw new NoViableAltException(LT(1), getFilename());}
}
_cnt276++;
} while (true);
}
if ( inputState.guessing==0 ) {
closureList_AST = (AST)currentAST.root;
closureList_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(CLOSURE_LIST,"CLOSURE_LIST",first,LT(1))).add(closureList_AST));
currentAST.root = closureList_AST;
currentAST.child = closureList_AST!=null &&closureList_AST.getFirstChild()!=null ?
closureList_AST.getFirstChild() : closureList_AST;
currentAST.advanceChildToEnd();
}
closureList_AST = (AST)currentAST.root;
returnAST = closureList_AST;
}
public final void forInClause() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST forInClause_AST = null;
AST decl_AST = null;
Token i = null;
AST i_AST = null;
Token c = null;
AST c_AST = null;
{
boolean synPredMatched280 = false;
if (((_tokenSet_10.member(LA(1))) && (_tokenSet_64.member(LA(2))))) {
int _m280 = mark();
synPredMatched280 = true;
inputState.guessing++;
try {
{
declarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched280 = false;
}
rewind(_m280);
inputState.guessing--;
}
if ( synPredMatched280 ) {
singleDeclarationNoInit();
decl_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
}
else if ((LA(1)==IDENT) && (LA(2)==COLON||LA(2)==LITERAL_in)) {
AST tmp178_AST = null;
tmp178_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp178_AST);
match(IDENT);
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
{
switch ( LA(1)) {
case LITERAL_in:
{
i = LT(1);
i_AST = astFactory.create(i);
astFactory.makeASTRoot(currentAST, i_AST);
match(LITERAL_in);
if ( inputState.guessing==0 ) {
i_AST.setType(FOR_IN_ITERABLE);
}
shiftExpression(0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case COLON:
{
if ( inputState.guessing==0 ) {
addWarning(
"A colon at this point is legal Java but not recommended in Groovy.",
"Use the 'in' keyword."
);
require(decl_AST != null,
"Java-style for-each statement requires a type declaration."
,
"Use the 'in' keyword, as for (x in y) {...}"
);
}
c = LT(1);
c_AST = astFactory.create(c);
astFactory.makeASTRoot(currentAST, c_AST);
match(COLON);
if ( inputState.guessing==0 ) {
c_AST.setType(FOR_IN_ITERABLE);
}
expression(0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
forInClause_AST = (AST)currentAST.root;
returnAST = forInClause_AST;
}
public final void shiftExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST shiftExpression_AST = null;
additiveExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop400:
do {
if ((_tokenSet_68.member(LA(1)))) {
{
switch ( LA(1)) {
case SR:
case BSR:
case SL:
{
{
switch ( LA(1)) {
case SL:
{
AST tmp179_AST = null;
tmp179_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp179_AST);
match(SL);
break;
}
case SR:
{
AST tmp180_AST = null;
tmp180_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp180_AST);
match(SR);
break;
}
case BSR:
{
AST tmp181_AST = null;
tmp181_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp181_AST);
match(BSR);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
break;
}
case RANGE_INCLUSIVE:
{
AST tmp182_AST = null;
tmp182_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp182_AST);
match(RANGE_INCLUSIVE);
break;
}
case RANGE_EXCLUSIVE:
{
AST tmp183_AST = null;
tmp183_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp183_AST);
match(RANGE_EXCLUSIVE);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
additiveExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop400;
}
} while (true);
}
shiftExpression_AST = (AST)currentAST.root;
returnAST = shiftExpression_AST;
}
/** Lookahead for suspicious statement warnings and errors. */
public final void suspiciousExpressionStatementStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST suspiciousExpressionStatementStart_AST = null;
{
switch ( LA(1)) {
case PLUS:
case MINUS:
{
{
switch ( LA(1)) {
case PLUS:
{
AST tmp184_AST = null;
tmp184_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp184_AST);
match(PLUS);
break;
}
case MINUS:
{
AST tmp185_AST = null;
tmp185_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp185_AST);
match(MINUS);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
break;
}
case LBRACK:
case LPAREN:
case LCURLY:
{
{
switch ( LA(1)) {
case LBRACK:
{
AST tmp186_AST = null;
tmp186_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp186_AST);
match(LBRACK);
break;
}
case LPAREN:
{
AST tmp187_AST = null;
tmp187_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp187_AST);
match(LPAREN);
break;
}
case LCURLY:
{
AST tmp188_AST = null;
tmp188_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp188_AST);
match(LCURLY);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
suspiciousExpressionStatementStart_AST = (AST)currentAST.root;
returnAST = suspiciousExpressionStatementStart_AST;
}
/**
* If two statements are separated by newline (not SEMI), the second had
* better not look like the latter half of an expression. If it does, issue a warning.
*
* Also, if the expression starts with a closure, it needs to
* have an explicit parameter list, in order to avoid the appearance of a
* compound statement. This is a hard error.
*
* These rules are different from Java's "dumb expression" restriction.
* Unlike Java, Groovy blocks can end with arbitrary (even dumb) expressions,
* as a consequence of optional 'return' and 'continue' tokens.
*
* To make the programmer's intention clear, a leading closure must have an
* explicit parameter list, and must not follow a previous statement separated
* only by newlines.
*/
public final void checkSuspiciousExpressionStatement(
int prevToken
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST checkSuspiciousExpressionStatement_AST = null;
boolean synPredMatched299 = false;
if (((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2))))) {
int _m299 = mark();
synPredMatched299 = true;
inputState.guessing++;
try {
{
if ((_tokenSet_69.member(LA(1)))) {
matchNot(LCURLY);
}
else if ((LA(1)==LCURLY)) {
match(LCURLY);
closableBlockParamsStart();
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
}
catch (RecognitionException pe) {
synPredMatched299 = false;
}
rewind(_m299);
inputState.guessing--;
}
if ( synPredMatched299 ) {
{
if (((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2))))&&(prevToken == NLS)) {
if ( inputState.guessing==0 ) {
addWarning(
"Expression statement looks like it may continue a previous statement",
"Either remove the previous newline, or add an explicit semicolon ';'.");
}
}
else if ((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
checkSuspiciousExpressionStatement_AST = (AST)currentAST.root;
}
else if (((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2))))&&(prevToken == NLS)) {
if ( inputState.guessing==0 ) {
require(false,
"Ambiguous expression could be a parameterless closure expression, "+
"an isolated open code block, or it may continue a previous statement",
"Add an explicit parameter list, e.g. {it -> ...}, or force it to be treated "+
"as an open block by giving it a label, e.g. L:{...}, "+
"and also either remove the previous newline, or add an explicit semicolon ';'"
);
}
checkSuspiciousExpressionStatement_AST = (AST)currentAST.root;
}
else if (((_tokenSet_15.member(LA(1))) && (_tokenSet_14.member(LA(2))))&&(prevToken != NLS)) {
if ( inputState.guessing==0 ) {
require(false,
"Ambiguous expression could be either a parameterless closure expression or "+
"an isolated open code block",
"Add an explicit closure parameter list, e.g. {it -> ...}, or force it to "+
"be treated as an open block by giving it a label, e.g. L:{...}");
}
checkSuspiciousExpressionStatement_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = checkSuspiciousExpressionStatement_AST;
}
/** A member name (x.y) or element name (x[y]) can serve as a command name,
* which may be followed by a list of arguments.
* Unlike parenthesized arguments, these must be plain expressions,
* without labels or spread operators.
*/
public final void commandArguments(
AST head
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST commandArguments_AST = null;
Token first = LT(1);
int hls=0;
commandArgument();
astFactory.addASTChild(currentAST, returnAST);
{
_loop330:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
commandArgument();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop330;
}
} while (true);
}
if ( inputState.guessing==0 ) {
commandArguments_AST = (AST)currentAST.root;
AST elist = (AST)astFactory.make( (new ASTArray(2)).add(create(ELIST,"ELIST",first,LT(1))).add(commandArguments_AST));
AST headid = getASTFactory().dup(head);
headid.setType(METHOD_CALL);
headid.setText("");
commandArguments_AST = (AST)astFactory.make( (new ASTArray(3)).add(headid).add(head).add(elist));
currentAST.root = commandArguments_AST;
currentAST.child = commandArguments_AST!=null &&commandArguments_AST.getFirstChild()!=null ?
commandArguments_AST.getFirstChild() : commandArguments_AST;
currentAST.advanceChildToEnd();
}
commandArguments_AST = (AST)currentAST.root;
returnAST = commandArguments_AST;
}
public final void aCase() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST aCase_AST = null;
{
switch ( LA(1)) {
case LITERAL_case:
{
AST tmp190_AST = null;
tmp190_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp190_AST);
match(LITERAL_case);
expression(0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case LITERAL_default:
{
AST tmp191_AST = null;
tmp191_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp191_AST);
match(LITERAL_default);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
match(COLON);
nls();
aCase_AST = (AST)currentAST.root;
returnAST = aCase_AST;
}
public final void caseSList() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST caseSList_AST = null;
Token first = LT(1);
statement(COLON);
astFactory.addASTChild(currentAST, returnAST);
{
_loop313:
do {
if ((LA(1)==SEMI||LA(1)==NLS)) {
sep();
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_import:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_interface:
case LITERAL_enum:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_if:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case LITERAL_try:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
statement(sepToken);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_case:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop313;
}
} while (true);
}
if ( inputState.guessing==0 ) {
caseSList_AST = (AST)currentAST.root;
caseSList_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(SLIST,"SLIST",first,LT(1))).add(caseSList_AST));
currentAST.root = caseSList_AST;
currentAST.child = caseSList_AST!=null &&caseSList_AST.getFirstChild()!=null ?
caseSList_AST.getFirstChild() : caseSList_AST;
currentAST.advanceChildToEnd();
}
caseSList_AST = (AST)currentAST.root;
returnAST = caseSList_AST;
}
public final void forInit() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST forInit_AST = null;
Token first = LT(1);
boolean synPredMatched316 = false;
if (((_tokenSet_10.member(LA(1))) && (_tokenSet_11.member(LA(2))))) {
int _m316 = mark();
synPredMatched316 = true;
inputState.guessing++;
try {
{
declarationStart();
}
}
catch (RecognitionException pe) {
synPredMatched316 = false;
}
rewind(_m316);
inputState.guessing--;
}
if ( synPredMatched316 ) {
declaration();
astFactory.addASTChild(currentAST, returnAST);
forInit_AST = (AST)currentAST.root;
}
else if ((_tokenSet_70.member(LA(1))) && (_tokenSet_71.member(LA(2)))) {
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
controlExpressionList();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
forInit_AST = (AST)currentAST.root;
forInit_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(FOR_INIT,"FOR_INIT",first,LT(1))).add(forInit_AST));
currentAST.root = forInit_AST;
currentAST.child = forInit_AST!=null &&forInit_AST.getFirstChild()!=null ?
forInit_AST.getFirstChild() : forInit_AST;
currentAST.advanceChildToEnd();
}
forInit_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = forInit_AST;
}
public final void controlExpressionList() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST controlExpressionList_AST = null;
Token first = LT(1); boolean sce=false;
sce=strictContextExpression(false);
astFactory.addASTChild(currentAST, returnAST);
{
_loop338:
do {
if ((LA(1)==COMMA)) {
match(COMMA);
nls();
sce=strictContextExpression(false);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop338;
}
} while (true);
}
if ( inputState.guessing==0 ) {
controlExpressionList_AST = (AST)currentAST.root;
controlExpressionList_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(ELIST,"ELIST",first,LT(1))).add(controlExpressionList_AST));
currentAST.root = controlExpressionList_AST;
currentAST.child = controlExpressionList_AST!=null &&controlExpressionList_AST.getFirstChild()!=null ?
controlExpressionList_AST.getFirstChild() : controlExpressionList_AST;
currentAST.advanceChildToEnd();
}
controlExpressionList_AST = (AST)currentAST.root;
returnAST = controlExpressionList_AST;
}
public final void forCond() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST forCond_AST = null;
Token first = LT(1); boolean sce=false;
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
sce=strictContextExpression(false);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
forCond_AST = (AST)currentAST.root;
forCond_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(FOR_CONDITION,"FOR_CONDITION",first,LT(1))).add(forCond_AST));
currentAST.root = forCond_AST;
currentAST.child = forCond_AST!=null &&forCond_AST.getFirstChild()!=null ?
forCond_AST.getFirstChild() : forCond_AST;
currentAST.advanceChildToEnd();
}
forCond_AST = (AST)currentAST.root;
returnAST = forCond_AST;
}
public final void forIter() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST forIter_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
controlExpressionList();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
forIter_AST = (AST)currentAST.root;
forIter_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(FOR_ITERATOR,"FOR_ITERATOR",first,LT(1))).add(forIter_AST));
currentAST.root = forIter_AST;
currentAST.child = forIter_AST!=null &&forIter_AST.getFirstChild()!=null ?
forIter_AST.getFirstChild() : forIter_AST;
currentAST.advanceChildToEnd();
}
forIter_AST = (AST)currentAST.root;
returnAST = forIter_AST;
}
public final void handler() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST handler_AST = null;
AST tmp194_AST = null;
tmp194_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp194_AST);
match(LITERAL_catch);
match(LPAREN);
parameterDeclaration();
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
nlsWarn();
compoundStatement();
astFactory.addASTChild(currentAST, returnAST);
handler_AST = (AST)currentAST.root;
returnAST = handler_AST;
}
public final void finallyClause() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST finallyClause_AST = null;
AST tmp197_AST = null;
tmp197_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp197_AST);
match(LITERAL_finally);
nlsWarn();
compoundStatement();
astFactory.addASTChild(currentAST, returnAST);
finallyClause_AST = (AST)currentAST.root;
returnAST = finallyClause_AST;
}
public final void commandArgument() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST commandArgument_AST = null;
Token c = null;
AST c_AST = null;
boolean synPredMatched333 = false;
if (((_tokenSet_72.member(LA(1))) && (_tokenSet_73.member(LA(2))))) {
int _m333 = mark();
synPredMatched333 = true;
inputState.guessing++;
try {
{
argumentLabel();
match(COLON);
}
}
catch (RecognitionException pe) {
synPredMatched333 = false;
}
rewind(_m333);
inputState.guessing--;
}
if ( synPredMatched333 ) {
{
argumentLabel();
astFactory.addASTChild(currentAST, returnAST);
c = LT(1);
c_AST = astFactory.create(c);
astFactory.makeASTRoot(currentAST, c_AST);
match(COLON);
expression(0);
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
c_AST.setType(LABELED_ARG);
}
}
commandArgument_AST = (AST)currentAST.root;
}
else if ((_tokenSet_15.member(LA(1))) && (_tokenSet_61.member(LA(2)))) {
expression(0);
astFactory.addASTChild(currentAST, returnAST);
commandArgument_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = commandArgument_AST;
}
/** A label for an argument is of the form a:b, 'a':b, "a":b, (a):b, etc..
* The labels in (a:b), ('a':b), and ("a":b) are in all ways equivalent,
* except that the quotes allow more spellings.
* Equivalent dynamically computed labels are (('a'):b) and ("${'a'}":b)
* but not ((a):b) or "$a":b, since the latter cases evaluate (a) as a normal identifier.
* Bottom line: If you want a truly variable label, use parens and say ((a):b).
*/
public final void argumentLabel() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST argumentLabel_AST = null;
Token id = null;
AST id_AST = null;
AST kw_AST = null;
boolean synPredMatched484 = false;
if (((LA(1)==IDENT) && (LA(2)==COLON))) {
int _m484 = mark();
synPredMatched484 = true;
inputState.guessing++;
try {
{
match(IDENT);
}
}
catch (RecognitionException pe) {
synPredMatched484 = false;
}
rewind(_m484);
inputState.guessing--;
}
if ( synPredMatched484 ) {
id = LT(1);
id_AST = astFactory.create(id);
astFactory.addASTChild(currentAST, id_AST);
match(IDENT);
if ( inputState.guessing==0 ) {
id_AST.setType(STRING_LITERAL);
}
argumentLabel_AST = (AST)currentAST.root;
}
else {
boolean synPredMatched486 = false;
if (((_tokenSet_74.member(LA(1))) && (LA(2)==COLON))) {
int _m486 = mark();
synPredMatched486 = true;
inputState.guessing++;
try {
{
keywordPropertyNames();
}
}
catch (RecognitionException pe) {
synPredMatched486 = false;
}
rewind(_m486);
inputState.guessing--;
}
if ( synPredMatched486 ) {
keywordPropertyNames();
kw_AST = (AST)returnAST;
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
kw_AST.setType(STRING_LITERAL);
}
argumentLabel_AST = (AST)currentAST.root;
}
else if ((_tokenSet_75.member(LA(1))) && (_tokenSet_73.member(LA(2)))) {
primaryExpression();
astFactory.addASTChild(currentAST, returnAST);
argumentLabel_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = argumentLabel_AST;
}
public final void assignmentExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST assignmentExpression_AST = null;
conditionalExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
switch ( LA(1)) {
case ASSIGN:
case PLUS_ASSIGN:
case MINUS_ASSIGN:
case STAR_ASSIGN:
case DIV_ASSIGN:
case MOD_ASSIGN:
case SR_ASSIGN:
case BSR_ASSIGN:
case SL_ASSIGN:
case BAND_ASSIGN:
case BXOR_ASSIGN:
case BOR_ASSIGN:
case STAR_STAR_ASSIGN:
{
{
switch ( LA(1)) {
case ASSIGN:
{
AST tmp198_AST = null;
tmp198_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp198_AST);
match(ASSIGN);
break;
}
case PLUS_ASSIGN:
{
AST tmp199_AST = null;
tmp199_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp199_AST);
match(PLUS_ASSIGN);
break;
}
case MINUS_ASSIGN:
{
AST tmp200_AST = null;
tmp200_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp200_AST);
match(MINUS_ASSIGN);
break;
}
case STAR_ASSIGN:
{
AST tmp201_AST = null;
tmp201_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp201_AST);
match(STAR_ASSIGN);
break;
}
case DIV_ASSIGN:
{
AST tmp202_AST = null;
tmp202_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp202_AST);
match(DIV_ASSIGN);
break;
}
case MOD_ASSIGN:
{
AST tmp203_AST = null;
tmp203_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp203_AST);
match(MOD_ASSIGN);
break;
}
case SR_ASSIGN:
{
AST tmp204_AST = null;
tmp204_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp204_AST);
match(SR_ASSIGN);
break;
}
case BSR_ASSIGN:
{
AST tmp205_AST = null;
tmp205_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp205_AST);
match(BSR_ASSIGN);
break;
}
case SL_ASSIGN:
{
AST tmp206_AST = null;
tmp206_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp206_AST);
match(SL_ASSIGN);
break;
}
case BAND_ASSIGN:
{
AST tmp207_AST = null;
tmp207_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp207_AST);
match(BAND_ASSIGN);
break;
}
case BXOR_ASSIGN:
{
AST tmp208_AST = null;
tmp208_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp208_AST);
match(BXOR_ASSIGN);
break;
}
case BOR_ASSIGN:
{
AST tmp209_AST = null;
tmp209_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp209_AST);
match(BOR_ASSIGN);
break;
}
case STAR_STAR_ASSIGN:
{
AST tmp210_AST = null;
tmp210_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp210_AST);
match(STAR_STAR_ASSIGN);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
assignmentExpression(lc_stmt == LC_STMT? LC_INIT: 0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case EOF:
case UNUSED_GOTO:
case UNUSED_DO:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case RBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_super:
case COMMA:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case RPAREN:
case LCURLY:
case RCURLY:
case SEMI:
case NLS:
case LITERAL_default:
case LITERAL_this:
case CLOSABLE_BLOCK_OP:
case COLON:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case PLUS:
case MINUS:
case LITERAL_case:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
assignmentExpression_AST = (AST)currentAST.root;
returnAST = assignmentExpression_AST;
}
/** A "path expression" is a name or other primary, possibly qualified by various
* forms of dot, and/or followed by various kinds of brackets.
* It can be used for value or assigned to, or else further qualified, indexed, or called.
* It is called a "path" because it looks like a linear path through a data structure.
* Examples: x.y, x?.y, x*.y, x.@y; x[], x[y], x[y,z]; x(), x(y), x(y,z); x{s}; a.b[n].c(x).d{s}
* (Compare to a C lvalue, or LeftHandSide in the JLS section 15.26.)
* General expressions are built up from path expressions, using operators like '+' and '='.
*/
public final void pathExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST pathExpression_AST = null;
AST pre_AST = null;
AST pe_AST = null;
AST apb_AST = null;
AST prefix = null;
primaryExpression();
pre_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
prefix = pre_AST;
}
{
_loop345:
do {
boolean synPredMatched342 = false;
if (((_tokenSet_76.member(LA(1))) && (_tokenSet_77.member(LA(2))))) {
int _m342 = mark();
synPredMatched342 = true;
inputState.guessing++;
try {
{
pathElementStart();
}
}
catch (RecognitionException pe) {
synPredMatched342 = false;
}
rewind(_m342);
inputState.guessing--;
}
if ( synPredMatched342 ) {
nls();
pathElement(prefix);
pe_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
prefix = pe_AST;
}
}
else {
boolean synPredMatched344 = false;
if ((((LA(1)==LCURLY||LA(1)==NLS) && (_tokenSet_12.member(LA(2))))&&(lc_stmt == LC_STMT || lc_stmt == LC_INIT))) {
int _m344 = mark();
synPredMatched344 = true;
inputState.guessing++;
try {
{
nls();
match(LCURLY);
}
}
catch (RecognitionException pe) {
synPredMatched344 = false;
}
rewind(_m344);
inputState.guessing--;
}
if ( synPredMatched344 ) {
nlsWarn();
appendedBlock(prefix);
apb_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
prefix = apb_AST;
}
}
else {
break _loop345;
}
}
} while (true);
}
if ( inputState.guessing==0 ) {
pathExpression_AST = (AST)currentAST.root;
pathExpression_AST = prefix;
lastPathExpression = pathExpression_AST;
currentAST.root = pathExpression_AST;
currentAST.child = pathExpression_AST!=null &&pathExpression_AST.getFirstChild()!=null ?
pathExpression_AST.getFirstChild() : pathExpression_AST;
currentAST.advanceChildToEnd();
}
pathExpression_AST = (AST)currentAST.root;
returnAST = pathExpression_AST;
}
public final void primaryExpression() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST primaryExpression_AST = null;
switch ( LA(1)) {
case IDENT:
{
AST tmp211_AST = null;
tmp211_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp211_AST);
match(IDENT);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case STRING_LITERAL:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
constant();
astFactory.addASTChild(currentAST, returnAST);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case LITERAL_new:
{
newExpression();
astFactory.addASTChild(currentAST, returnAST);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case LITERAL_this:
{
AST tmp212_AST = null;
tmp212_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp212_AST);
match(LITERAL_this);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case LITERAL_super:
{
AST tmp213_AST = null;
tmp213_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp213_AST);
match(LITERAL_super);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case LPAREN:
{
parenthesizedExpression();
astFactory.addASTChild(currentAST, returnAST);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case LCURLY:
{
closableBlockConstructorExpression();
astFactory.addASTChild(currentAST, returnAST);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case LBRACK:
{
listOrMapConstructorExpression();
astFactory.addASTChild(currentAST, returnAST);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case STRING_CTOR_START:
{
stringConstructorExpression();
astFactory.addASTChild(currentAST, returnAST);
primaryExpression_AST = (AST)currentAST.root;
break;
}
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
builtInType();
astFactory.addASTChild(currentAST, returnAST);
primaryExpression_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = primaryExpression_AST;
}
public final void pathElementStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST pathElementStart_AST = null;
switch ( LA(1)) {
case DOT:
case NLS:
{
{
nls();
AST tmp214_AST = null;
tmp214_AST = astFactory.create(LT(1));
match(DOT);
}
break;
}
case SPREAD_DOT:
{
AST tmp215_AST = null;
tmp215_AST = astFactory.create(LT(1));
match(SPREAD_DOT);
break;
}
case OPTIONAL_DOT:
{
AST tmp216_AST = null;
tmp216_AST = astFactory.create(LT(1));
match(OPTIONAL_DOT);
break;
}
case MEMBER_POINTER:
{
AST tmp217_AST = null;
tmp217_AST = astFactory.create(LT(1));
match(MEMBER_POINTER);
break;
}
case LBRACK:
{
AST tmp218_AST = null;
tmp218_AST = astFactory.create(LT(1));
match(LBRACK);
break;
}
case LPAREN:
{
AST tmp219_AST = null;
tmp219_AST = astFactory.create(LT(1));
match(LPAREN);
break;
}
case LCURLY:
{
AST tmp220_AST = null;
tmp220_AST = astFactory.create(LT(1));
match(LCURLY);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = pathElementStart_AST;
}
public final void pathElement(
AST prefix
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST pathElement_AST = null;
AST mca_AST = null;
AST apb_AST = null;
AST ipa_AST = null;
switch ( LA(1)) {
case DOT:
case NLS:
case SPREAD_DOT:
case OPTIONAL_DOT:
case MEMBER_POINTER:
{
if ( inputState.guessing==0 ) {
pathElement_AST = (AST)currentAST.root;
pathElement_AST = prefix;
currentAST.root = pathElement_AST;
currentAST.child = pathElement_AST!=null &&pathElement_AST.getFirstChild()!=null ?
pathElement_AST.getFirstChild() : pathElement_AST;
currentAST.advanceChildToEnd();
}
{
switch ( LA(1)) {
case SPREAD_DOT:
{
AST tmp221_AST = null;
tmp221_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp221_AST);
match(SPREAD_DOT);
break;
}
case OPTIONAL_DOT:
{
AST tmp222_AST = null;
tmp222_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp222_AST);
match(OPTIONAL_DOT);
break;
}
case MEMBER_POINTER:
{
AST tmp223_AST = null;
tmp223_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp223_AST);
match(MEMBER_POINTER);
break;
}
case DOT:
case NLS:
{
{
nls();
AST tmp224_AST = null;
tmp224_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp224_AST);
match(DOT);
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
{
switch ( LA(1)) {
case LT:
{
typeArguments();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case UNUSED_GOTO:
case UNUSED_DO:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case AT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case LCURLY:
case LITERAL_default:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case STRING_CTOR_START:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
namePart();
astFactory.addASTChild(currentAST, returnAST);
pathElement_AST = (AST)currentAST.root;
break;
}
case LPAREN:
{
methodCallArgs(prefix);
mca_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
pathElement_AST = (AST)currentAST.root;
pathElement_AST = mca_AST;
currentAST.root = pathElement_AST;
currentAST.child = pathElement_AST!=null &&pathElement_AST.getFirstChild()!=null ?
pathElement_AST.getFirstChild() : pathElement_AST;
currentAST.advanceChildToEnd();
}
pathElement_AST = (AST)currentAST.root;
break;
}
case LCURLY:
{
appendedBlock(prefix);
apb_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
pathElement_AST = (AST)currentAST.root;
pathElement_AST = apb_AST;
currentAST.root = pathElement_AST;
currentAST.child = pathElement_AST!=null &&pathElement_AST.getFirstChild()!=null ?
pathElement_AST.getFirstChild() : pathElement_AST;
currentAST.advanceChildToEnd();
}
pathElement_AST = (AST)currentAST.root;
break;
}
case LBRACK:
{
indexPropertyArgs(prefix);
ipa_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
pathElement_AST = (AST)currentAST.root;
pathElement_AST = ipa_AST;
currentAST.root = pathElement_AST;
currentAST.child = pathElement_AST!=null &&pathElement_AST.getFirstChild()!=null ?
pathElement_AST.getFirstChild() : pathElement_AST;
currentAST.advanceChildToEnd();
}
pathElement_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = pathElement_AST;
}
/** An appended block follows any expression.
* If the expression is not a method call, it is given an empty argument list.
*/
public final void appendedBlock(
AST callee
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST appendedBlock_AST = null;
if ( inputState.guessing==0 ) {
appendedBlock_AST = (AST)currentAST.root;
// If the callee is itself a call, flatten the AST.
if (callee != null && callee.getType() == METHOD_CALL) {
appendedBlock_AST = callee;
} else {
AST lbrace = getASTFactory().create(LT(1));
lbrace.setType(METHOD_CALL);
if (callee != null) lbrace.addChild(callee);
appendedBlock_AST = lbrace;
}
currentAST.root = appendedBlock_AST;
currentAST.child = appendedBlock_AST!=null &&appendedBlock_AST.getFirstChild()!=null ?
appendedBlock_AST.getFirstChild() : appendedBlock_AST;
currentAST.advanceChildToEnd();
}
closableBlock();
astFactory.addASTChild(currentAST, returnAST);
appendedBlock_AST = (AST)currentAST.root;
returnAST = appendedBlock_AST;
}
/** This is the grammar for what can follow a dot: x.a, x.@a, x.&a, x.'a', etc.
* Note: typeArguments
is handled by the caller of namePart
.
*/
public final void namePart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST namePart_AST = null;
Token ats = null;
AST ats_AST = null;
Token sl = null;
AST sl_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case AT:
{
ats = LT(1);
ats_AST = astFactory.create(ats);
astFactory.makeASTRoot(currentAST, ats_AST);
match(AT);
if ( inputState.guessing==0 ) {
ats_AST.setType(SELECT_SLOT);
}
break;
}
case UNUSED_GOTO:
case UNUSED_DO:
case LITERAL_static:
case LITERAL_def:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_class:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case LCURLY:
case LITERAL_default:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
case STRING_CTOR_START:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
{
switch ( LA(1)) {
case IDENT:
{
AST tmp225_AST = null;
tmp225_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp225_AST);
match(IDENT);
break;
}
case STRING_LITERAL:
{
sl = LT(1);
sl_AST = astFactory.create(sl);
astFactory.addASTChild(currentAST, sl_AST);
match(STRING_LITERAL);
if ( inputState.guessing==0 ) {
sl_AST.setType(IDENT);
}
break;
}
case LPAREN:
case STRING_CTOR_START:
{
dynamicMemberName();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case LCURLY:
{
openBlock();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case UNUSED_GOTO:
case UNUSED_DO:
case LITERAL_static:
case LITERAL_def:
case LITERAL_class:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case LITERAL_default:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
{
keywordPropertyNames();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
namePart_AST = (AST)currentAST.root;
returnAST = namePart_AST;
}
/** An expression may be followed by one or both of (...) and {...}.
* Note: If either is (...) or {...} present, it is a method call.
* The {...} is appended to the argument list, and matches a formal of type Closure.
* If there is no method member, a property (or field) is used instead, and must itself be callable.
*
* If the methodCallArgs are absent, it is a property reference.
* If there is no property, it is treated as a field reference, but never a method reference.
*
* Arguments in the (...) can be labeled, and the appended block can be labeled also.
* If there is a mix of unlabeled and labeled arguments,
* all the labeled arguments must follow the unlabeled arguments,
* except that the closure (labeled or not) is always a separate final argument.
* Labeled arguments are collected up and passed as a single argument to a formal of type Map.
*
* Therefore, f(x,y, a:p, b:q) {s} is equivalent in all ways to f(x,y, [a:p,b:q], {s}).
* Spread arguments of sequence type count as unlabeled arguments,
* while spread arguments of map type count as labeled arguments.
* (This distinction must sometimes be checked dynamically.)
*
* A plain unlabeled argument is allowed to match a trailing Map or Closure argument:
* f(x, a:p) {s} === f(*[ x, [a:p], {s} ])
*/
public final void methodCallArgs(
AST callee
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST methodCallArgs_AST = null;
Token lp = null;
AST lp_AST = null;
if ( inputState.guessing==0 ) {
methodCallArgs_AST = (AST)currentAST.root;
methodCallArgs_AST = callee;
currentAST.root = methodCallArgs_AST;
currentAST.child = methodCallArgs_AST!=null &&methodCallArgs_AST.getFirstChild()!=null ?
methodCallArgs_AST.getFirstChild() : methodCallArgs_AST;
currentAST.advanceChildToEnd();
}
lp = LT(1);
lp_AST = astFactory.create(lp);
astFactory.makeASTRoot(currentAST, lp_AST);
match(LPAREN);
if ( inputState.guessing==0 ) {
lp_AST.setType(METHOD_CALL);
}
argList();
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
methodCallArgs_AST = (AST)currentAST.root;
returnAST = methodCallArgs_AST;
}
/** An expression may be followed by [...].
* Unlike Java, these brackets may contain a general argument list,
* which is passed to the array element operator, which can make of it what it wants.
* The brackets may also be empty, as in T[]. This is how Groovy names array types.
*
Returned AST is [INDEX_OP, indexee, ELIST].
*/
public final void indexPropertyArgs(
AST indexee
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST indexPropertyArgs_AST = null;
Token lb = null;
AST lb_AST = null;
if ( inputState.guessing==0 ) {
indexPropertyArgs_AST = (AST)currentAST.root;
indexPropertyArgs_AST = indexee;
currentAST.root = indexPropertyArgs_AST;
currentAST.child = indexPropertyArgs_AST!=null &&indexPropertyArgs_AST.getFirstChild()!=null ?
indexPropertyArgs_AST.getFirstChild() : indexPropertyArgs_AST;
currentAST.advanceChildToEnd();
}
lb = LT(1);
lb_AST = astFactory.create(lb);
astFactory.makeASTRoot(currentAST, lb_AST);
match(LBRACK);
if ( inputState.guessing==0 ) {
lb_AST.setType(INDEX_OP);
}
argList();
astFactory.addASTChild(currentAST, returnAST);
match(RBRACK);
indexPropertyArgs_AST = (AST)currentAST.root;
returnAST = indexPropertyArgs_AST;
}
/** If a dot is followed by a parenthesized or quoted expression, the member is computed dynamically,
* and the member selection is done only at runtime. This forces a statically unchecked member access.
*/
public final void dynamicMemberName() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST dynamicMemberName_AST = null;
Token first = LT(1);
{
switch ( LA(1)) {
case LPAREN:
{
parenthesizedExpression();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case STRING_CTOR_START:
{
stringConstructorExpression();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
dynamicMemberName_AST = (AST)currentAST.root;
dynamicMemberName_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(DYNAMIC_MEMBER,"DYNAMIC_MEMBER",first,LT(1))).add(dynamicMemberName_AST));
currentAST.root = dynamicMemberName_AST;
currentAST.child = dynamicMemberName_AST!=null &&dynamicMemberName_AST.getFirstChild()!=null ?
dynamicMemberName_AST.getFirstChild() : dynamicMemberName_AST;
currentAST.advanceChildToEnd();
}
dynamicMemberName_AST = (AST)currentAST.root;
returnAST = dynamicMemberName_AST;
}
/** Allowed keywords after dot (as a member name) and before colon (as a label).
* TODO: What's the rationale for these?
*/
public final void keywordPropertyNames() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST keywordPropertyNames_AST = null;
{
switch ( LA(1)) {
case LITERAL_class:
{
AST tmp228_AST = null;
tmp228_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp228_AST);
match(LITERAL_class);
break;
}
case LITERAL_in:
{
AST tmp229_AST = null;
tmp229_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp229_AST);
match(LITERAL_in);
break;
}
case LITERAL_as:
{
AST tmp230_AST = null;
tmp230_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp230_AST);
match(LITERAL_as);
break;
}
case LITERAL_def:
{
AST tmp231_AST = null;
tmp231_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp231_AST);
match(LITERAL_def);
break;
}
case LITERAL_default:
{
AST tmp232_AST = null;
tmp232_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp232_AST);
match(LITERAL_default);
break;
}
case LITERAL_static:
{
AST tmp233_AST = null;
tmp233_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp233_AST);
match(LITERAL_static);
break;
}
case UNUSED_GOTO:
{
AST tmp234_AST = null;
tmp234_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp234_AST);
match(UNUSED_GOTO);
break;
}
case LITERAL_if:
{
AST tmp235_AST = null;
tmp235_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp235_AST);
match(LITERAL_if);
break;
}
case LITERAL_else:
{
AST tmp236_AST = null;
tmp236_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp236_AST);
match(LITERAL_else);
break;
}
case LITERAL_for:
{
AST tmp237_AST = null;
tmp237_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp237_AST);
match(LITERAL_for);
break;
}
case LITERAL_while:
{
AST tmp238_AST = null;
tmp238_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp238_AST);
match(LITERAL_while);
break;
}
case UNUSED_DO:
{
AST tmp239_AST = null;
tmp239_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp239_AST);
match(UNUSED_DO);
break;
}
case LITERAL_switch:
{
AST tmp240_AST = null;
tmp240_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp240_AST);
match(LITERAL_switch);
break;
}
case LITERAL_try:
{
AST tmp241_AST = null;
tmp241_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp241_AST);
match(LITERAL_try);
break;
}
case LITERAL_catch:
{
AST tmp242_AST = null;
tmp242_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp242_AST);
match(LITERAL_catch);
break;
}
case LITERAL_finally:
{
AST tmp243_AST = null;
tmp243_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp243_AST);
match(LITERAL_finally);
break;
}
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
builtInType();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
if ( inputState.guessing==0 ) {
keywordPropertyNames_AST = (AST)currentAST.root;
keywordPropertyNames_AST.setType(IDENT);
}
keywordPropertyNames_AST = (AST)currentAST.root;
returnAST = keywordPropertyNames_AST;
}
public final void parenthesizedExpression() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST parenthesizedExpression_AST = null;
Token first = LT(1);
Token declaration = null;
boolean hasClosureList=false;
boolean firstContainsDeclaration=false;
boolean sce=false;
match(LPAREN);
if ( inputState.guessing==0 ) {
declaration=LT(1);
}
firstContainsDeclaration=strictContextExpression(true);
astFactory.addASTChild(currentAST, returnAST);
{
_loop445:
do {
if ((LA(1)==SEMI)) {
match(SEMI);
if ( inputState.guessing==0 ) {
hasClosureList=true;
}
{
switch ( LA(1)) {
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
sce=strictContextExpression(true);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RPAREN:
case SEMI:
{
if ( inputState.guessing==0 ) {
astFactory.addASTChild(currentAST,astFactory.create(EMPTY_STAT, "EMPTY_STAT"));
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else {
break _loop445;
}
} while (true);
}
if ( inputState.guessing==0 ) {
if (firstContainsDeclaration && !hasClosureList)
throw new NoViableAltException(declaration, getFilename());
}
match(RPAREN);
if ( inputState.guessing==0 ) {
parenthesizedExpression_AST = (AST)currentAST.root;
if (hasClosureList) {
parenthesizedExpression_AST = (AST)astFactory.make( (new ASTArray(2)).add(create(CLOSURE_LIST,"CLOSURE_LIST",first,LT(1))).add(parenthesizedExpression_AST));
}
currentAST.root = parenthesizedExpression_AST;
currentAST.child = parenthesizedExpression_AST!=null &&parenthesizedExpression_AST.getFirstChild()!=null ?
parenthesizedExpression_AST.getFirstChild() : parenthesizedExpression_AST;
currentAST.advanceChildToEnd();
}
parenthesizedExpression_AST = (AST)currentAST.root;
returnAST = parenthesizedExpression_AST;
}
public final void stringConstructorExpression() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST stringConstructorExpression_AST = null;
Token cs = null;
AST cs_AST = null;
Token cm = null;
AST cm_AST = null;
Token ce = null;
AST ce_AST = null;
Token first = LT(1);
cs = LT(1);
cs_AST = astFactory.create(cs);
astFactory.addASTChild(currentAST, cs_AST);
match(STRING_CTOR_START);
if ( inputState.guessing==0 ) {
cs_AST.setType(STRING_LITERAL);
}
stringConstructorValuePart();
astFactory.addASTChild(currentAST, returnAST);
{
_loop455:
do {
if ((LA(1)==STRING_CTOR_MIDDLE)) {
cm = LT(1);
cm_AST = astFactory.create(cm);
astFactory.addASTChild(currentAST, cm_AST);
match(STRING_CTOR_MIDDLE);
if ( inputState.guessing==0 ) {
cm_AST.setType(STRING_LITERAL);
}
stringConstructorValuePart();
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop455;
}
} while (true);
}
ce = LT(1);
ce_AST = astFactory.create(ce);
astFactory.addASTChild(currentAST, ce_AST);
match(STRING_CTOR_END);
if ( inputState.guessing==0 ) {
stringConstructorExpression_AST = (AST)currentAST.root;
ce_AST.setType(STRING_LITERAL);
stringConstructorExpression_AST =
(AST)astFactory.make( (new ASTArray(2)).add(create(STRING_CONSTRUCTOR,"STRING_CONSTRUCTOR",first,LT(1))).add(stringConstructorExpression_AST));
currentAST.root = stringConstructorExpression_AST;
currentAST.child = stringConstructorExpression_AST!=null &&stringConstructorExpression_AST.getFirstChild()!=null ?
stringConstructorExpression_AST.getFirstChild() : stringConstructorExpression_AST;
currentAST.advanceChildToEnd();
}
stringConstructorExpression_AST = (AST)currentAST.root;
returnAST = stringConstructorExpression_AST;
}
public final void logicalOrExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST logicalOrExpression_AST = null;
logicalAndExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop371:
do {
if ((LA(1)==LOR)) {
AST tmp247_AST = null;
tmp247_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp247_AST);
match(LOR);
nls();
logicalAndExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop371;
}
} while (true);
}
logicalOrExpression_AST = (AST)currentAST.root;
returnAST = logicalOrExpression_AST;
}
public final void logicalAndExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST logicalAndExpression_AST = null;
inclusiveOrExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop374:
do {
if ((LA(1)==LAND)) {
AST tmp248_AST = null;
tmp248_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp248_AST);
match(LAND);
nls();
inclusiveOrExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop374;
}
} while (true);
}
logicalAndExpression_AST = (AST)currentAST.root;
returnAST = logicalAndExpression_AST;
}
public final void inclusiveOrExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST inclusiveOrExpression_AST = null;
exclusiveOrExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop377:
do {
if ((LA(1)==BOR)) {
AST tmp249_AST = null;
tmp249_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp249_AST);
match(BOR);
nls();
exclusiveOrExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop377;
}
} while (true);
}
inclusiveOrExpression_AST = (AST)currentAST.root;
returnAST = inclusiveOrExpression_AST;
}
public final void exclusiveOrExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST exclusiveOrExpression_AST = null;
andExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop380:
do {
if ((LA(1)==BXOR)) {
AST tmp250_AST = null;
tmp250_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp250_AST);
match(BXOR);
nls();
andExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop380;
}
} while (true);
}
exclusiveOrExpression_AST = (AST)currentAST.root;
returnAST = exclusiveOrExpression_AST;
}
public final void andExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST andExpression_AST = null;
regexExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop383:
do {
if ((LA(1)==BAND)) {
AST tmp251_AST = null;
tmp251_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp251_AST);
match(BAND);
nls();
regexExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop383;
}
} while (true);
}
andExpression_AST = (AST)currentAST.root;
returnAST = andExpression_AST;
}
public final void regexExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST regexExpression_AST = null;
equalityExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop387:
do {
if ((LA(1)==REGEX_FIND||LA(1)==REGEX_MATCH)) {
{
switch ( LA(1)) {
case REGEX_FIND:
{
AST tmp252_AST = null;
tmp252_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp252_AST);
match(REGEX_FIND);
break;
}
case REGEX_MATCH:
{
AST tmp253_AST = null;
tmp253_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp253_AST);
match(REGEX_MATCH);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
equalityExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop387;
}
} while (true);
}
regexExpression_AST = (AST)currentAST.root;
returnAST = regexExpression_AST;
}
public final void equalityExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST equalityExpression_AST = null;
relationalExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop391:
do {
if (((LA(1) >= NOT_EQUAL && LA(1) <= COMPARE_TO))) {
{
switch ( LA(1)) {
case NOT_EQUAL:
{
AST tmp254_AST = null;
tmp254_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp254_AST);
match(NOT_EQUAL);
break;
}
case EQUAL:
{
AST tmp255_AST = null;
tmp255_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp255_AST);
match(EQUAL);
break;
}
case COMPARE_TO:
{
AST tmp256_AST = null;
tmp256_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp256_AST);
match(COMPARE_TO);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
relationalExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop391;
}
} while (true);
}
equalityExpression_AST = (AST)currentAST.root;
returnAST = equalityExpression_AST;
}
public final void relationalExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST relationalExpression_AST = null;
shiftExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
if ((_tokenSet_78.member(LA(1))) && (_tokenSet_79.member(LA(2)))) {
{
{
switch ( LA(1)) {
case LT:
{
AST tmp257_AST = null;
tmp257_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp257_AST);
match(LT);
break;
}
case GT:
{
AST tmp258_AST = null;
tmp258_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp258_AST);
match(GT);
break;
}
case LE:
{
AST tmp259_AST = null;
tmp259_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp259_AST);
match(LE);
break;
}
case GE:
{
AST tmp260_AST = null;
tmp260_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp260_AST);
match(GE);
break;
}
case LITERAL_in:
{
AST tmp261_AST = null;
tmp261_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp261_AST);
match(LITERAL_in);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
shiftExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
}
else if ((LA(1)==LITERAL_instanceof)) {
AST tmp262_AST = null;
tmp262_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp262_AST);
match(LITERAL_instanceof);
nls();
typeSpec(true);
astFactory.addASTChild(currentAST, returnAST);
}
else if ((LA(1)==LITERAL_as) && (_tokenSet_80.member(LA(2)))) {
AST tmp263_AST = null;
tmp263_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp263_AST);
match(LITERAL_as);
nls();
typeSpec(true);
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_81.member(LA(1))) && (_tokenSet_82.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
relationalExpression_AST = (AST)currentAST.root;
returnAST = relationalExpression_AST;
}
public final void additiveExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST additiveExpression_AST = null;
multiplicativeExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop404:
do {
if ((LA(1)==PLUS||LA(1)==MINUS) && (_tokenSet_79.member(LA(2)))) {
{
switch ( LA(1)) {
case PLUS:
{
AST tmp264_AST = null;
tmp264_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp264_AST);
match(PLUS);
break;
}
case MINUS:
{
AST tmp265_AST = null;
tmp265_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp265_AST);
match(MINUS);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
multiplicativeExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop404;
}
} while (true);
}
additiveExpression_AST = (AST)currentAST.root;
returnAST = additiveExpression_AST;
}
public final void multiplicativeExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST multiplicativeExpression_AST = null;
switch ( LA(1)) {
case INC:
{
{
AST tmp266_AST = null;
tmp266_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp266_AST);
match(INC);
nls();
powerExpressionNotPlusMinus(0);
astFactory.addASTChild(currentAST, returnAST);
{
_loop409:
do {
if ((_tokenSet_83.member(LA(1)))) {
{
switch ( LA(1)) {
case STAR:
{
AST tmp267_AST = null;
tmp267_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp267_AST);
match(STAR);
break;
}
case DIV:
{
AST tmp268_AST = null;
tmp268_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp268_AST);
match(DIV);
break;
}
case MOD:
{
AST tmp269_AST = null;
tmp269_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp269_AST);
match(MOD);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
powerExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop409;
}
} while (true);
}
}
multiplicativeExpression_AST = (AST)currentAST.root;
break;
}
case DEC:
{
{
AST tmp270_AST = null;
tmp270_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp270_AST);
match(DEC);
nls();
powerExpressionNotPlusMinus(0);
astFactory.addASTChild(currentAST, returnAST);
{
_loop413:
do {
if ((_tokenSet_83.member(LA(1)))) {
{
switch ( LA(1)) {
case STAR:
{
AST tmp271_AST = null;
tmp271_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp271_AST);
match(STAR);
break;
}
case DIV:
{
AST tmp272_AST = null;
tmp272_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp272_AST);
match(DIV);
break;
}
case MOD:
{
AST tmp273_AST = null;
tmp273_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp273_AST);
match(MOD);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
powerExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop413;
}
} while (true);
}
}
multiplicativeExpression_AST = (AST)currentAST.root;
break;
}
case MINUS:
{
{
AST tmp274_AST = null;
tmp274_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp274_AST);
match(MINUS);
if ( inputState.guessing==0 ) {
tmp274_AST.setType(UNARY_MINUS);
}
nls();
powerExpressionNotPlusMinus(0);
astFactory.addASTChild(currentAST, returnAST);
{
_loop417:
do {
if ((_tokenSet_83.member(LA(1)))) {
{
switch ( LA(1)) {
case STAR:
{
AST tmp275_AST = null;
tmp275_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp275_AST);
match(STAR);
break;
}
case DIV:
{
AST tmp276_AST = null;
tmp276_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp276_AST);
match(DIV);
break;
}
case MOD:
{
AST tmp277_AST = null;
tmp277_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp277_AST);
match(MOD);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
powerExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop417;
}
} while (true);
}
}
multiplicativeExpression_AST = (AST)currentAST.root;
break;
}
case PLUS:
{
{
AST tmp278_AST = null;
tmp278_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp278_AST);
match(PLUS);
if ( inputState.guessing==0 ) {
tmp278_AST.setType(UNARY_PLUS);
}
nls();
powerExpressionNotPlusMinus(0);
astFactory.addASTChild(currentAST, returnAST);
{
_loop421:
do {
if ((_tokenSet_83.member(LA(1)))) {
{
switch ( LA(1)) {
case STAR:
{
AST tmp279_AST = null;
tmp279_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp279_AST);
match(STAR);
break;
}
case DIV:
{
AST tmp280_AST = null;
tmp280_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp280_AST);
match(DIV);
break;
}
case MOD:
{
AST tmp281_AST = null;
tmp281_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp281_AST);
match(MOD);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
powerExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop421;
}
} while (true);
}
}
multiplicativeExpression_AST = (AST)currentAST.root;
break;
}
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
{
powerExpressionNotPlusMinus(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop425:
do {
if ((_tokenSet_83.member(LA(1)))) {
{
switch ( LA(1)) {
case STAR:
{
AST tmp282_AST = null;
tmp282_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp282_AST);
match(STAR);
break;
}
case DIV:
{
AST tmp283_AST = null;
tmp283_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp283_AST);
match(DIV);
break;
}
case MOD:
{
AST tmp284_AST = null;
tmp284_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp284_AST);
match(MOD);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
nls();
powerExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop425;
}
} while (true);
}
}
multiplicativeExpression_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = multiplicativeExpression_AST;
}
public final void powerExpressionNotPlusMinus(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST powerExpressionNotPlusMinus_AST = null;
unaryExpressionNotPlusMinus(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop431:
do {
if ((LA(1)==STAR_STAR)) {
AST tmp285_AST = null;
tmp285_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp285_AST);
match(STAR_STAR);
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop431;
}
} while (true);
}
powerExpressionNotPlusMinus_AST = (AST)currentAST.root;
returnAST = powerExpressionNotPlusMinus_AST;
}
public final void powerExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST powerExpression_AST = null;
unaryExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
_loop428:
do {
if ((LA(1)==STAR_STAR)) {
AST tmp286_AST = null;
tmp286_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp286_AST);
match(STAR_STAR);
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
break _loop428;
}
} while (true);
}
powerExpression_AST = (AST)currentAST.root;
returnAST = powerExpression_AST;
}
public final void unaryExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST unaryExpression_AST = null;
switch ( LA(1)) {
case INC:
{
AST tmp287_AST = null;
tmp287_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp287_AST);
match(INC);
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
unaryExpression_AST = (AST)currentAST.root;
break;
}
case DEC:
{
AST tmp288_AST = null;
tmp288_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp288_AST);
match(DEC);
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
unaryExpression_AST = (AST)currentAST.root;
break;
}
case MINUS:
{
AST tmp289_AST = null;
tmp289_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp289_AST);
match(MINUS);
if ( inputState.guessing==0 ) {
tmp289_AST.setType(UNARY_MINUS);
}
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
unaryExpression_AST = (AST)currentAST.root;
break;
}
case PLUS:
{
AST tmp290_AST = null;
tmp290_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp290_AST);
match(PLUS);
if ( inputState.guessing==0 ) {
tmp290_AST.setType(UNARY_PLUS);
}
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
unaryExpression_AST = (AST)currentAST.root;
break;
}
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
unaryExpressionNotPlusMinus(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
unaryExpression_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = unaryExpression_AST;
}
public final void unaryExpressionNotPlusMinus(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST unaryExpressionNotPlusMinus_AST = null;
Token lpb = null;
AST lpb_AST = null;
Token lp = null;
AST lp_AST = null;
switch ( LA(1)) {
case BNOT:
{
AST tmp291_AST = null;
tmp291_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp291_AST);
match(BNOT);
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
break;
}
case LNOT:
{
AST tmp292_AST = null;
tmp292_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp292_AST);
match(LNOT);
nls();
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
break;
}
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
{
boolean synPredMatched436 = false;
if (((LA(1)==LPAREN) && ((LA(2) >= LITERAL_void && LA(2) <= LITERAL_double)))) {
int _m436 = mark();
synPredMatched436 = true;
inputState.guessing++;
try {
{
match(LPAREN);
builtInTypeSpec(true);
match(RPAREN);
unaryExpression(0);
}
}
catch (RecognitionException pe) {
synPredMatched436 = false;
}
rewind(_m436);
inputState.guessing--;
}
if ( synPredMatched436 ) {
lpb = LT(1);
lpb_AST = astFactory.create(lpb);
astFactory.makeASTRoot(currentAST, lpb_AST);
match(LPAREN);
if ( inputState.guessing==0 ) {
lpb_AST.setType(TYPECAST);
}
builtInTypeSpec(true);
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
unaryExpression(0);
astFactory.addASTChild(currentAST, returnAST);
}
else {
boolean synPredMatched438 = false;
if (((LA(1)==LPAREN) && (LA(2)==IDENT))) {
int _m438 = mark();
synPredMatched438 = true;
inputState.guessing++;
try {
{
match(LPAREN);
classTypeSpec(true);
match(RPAREN);
unaryExpressionNotPlusMinus(0);
}
}
catch (RecognitionException pe) {
synPredMatched438 = false;
}
rewind(_m438);
inputState.guessing--;
}
if ( synPredMatched438 ) {
lp = LT(1);
lp_AST = astFactory.create(lp);
astFactory.makeASTRoot(currentAST, lp_AST);
match(LPAREN);
if ( inputState.guessing==0 ) {
lp_AST.setType(TYPECAST);
}
classTypeSpec(true);
astFactory.addASTChild(currentAST, returnAST);
match(RPAREN);
unaryExpressionNotPlusMinus(0);
astFactory.addASTChild(currentAST, returnAST);
}
else if ((_tokenSet_75.member(LA(1))) && (_tokenSet_84.member(LA(2)))) {
postfixExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
}
unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = unaryExpressionNotPlusMinus_AST;
}
public final void postfixExpression(
int lc_stmt
) throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST postfixExpression_AST = null;
Token in = null;
AST in_AST = null;
Token de = null;
AST de_AST = null;
pathExpression(lc_stmt);
astFactory.addASTChild(currentAST, returnAST);
{
if ((LA(1)==INC) && (_tokenSet_85.member(LA(2)))) {
in = LT(1);
in_AST = astFactory.create(in);
astFactory.makeASTRoot(currentAST, in_AST);
match(INC);
if ( inputState.guessing==0 ) {
in_AST.setType(POST_INC);
}
}
else if ((LA(1)==DEC) && (_tokenSet_85.member(LA(2)))) {
de = LT(1);
de_AST = astFactory.create(de);
astFactory.makeASTRoot(currentAST, de_AST);
match(DEC);
if ( inputState.guessing==0 ) {
de_AST.setType(POST_DEC);
}
}
else if ((_tokenSet_85.member(LA(1))) && (_tokenSet_82.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
postfixExpression_AST = (AST)currentAST.root;
returnAST = postfixExpression_AST;
}
/** Numeric, string, regexp, boolean, or null constant. */
public final void constant() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST constant_AST = null;
switch ( LA(1)) {
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
constantNumber();
astFactory.addASTChild(currentAST, returnAST);
constant_AST = (AST)currentAST.root;
break;
}
case STRING_LITERAL:
{
AST tmp295_AST = null;
tmp295_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp295_AST);
match(STRING_LITERAL);
constant_AST = (AST)currentAST.root;
break;
}
case LITERAL_true:
{
AST tmp296_AST = null;
tmp296_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp296_AST);
match(LITERAL_true);
constant_AST = (AST)currentAST.root;
break;
}
case LITERAL_false:
{
AST tmp297_AST = null;
tmp297_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp297_AST);
match(LITERAL_false);
constant_AST = (AST)currentAST.root;
break;
}
case LITERAL_null:
{
AST tmp298_AST = null;
tmp298_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp298_AST);
match(LITERAL_null);
constant_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = constant_AST;
}
/** object instantiation.
* Trees are built as illustrated by the following input/tree pairs:
*
* new T()
*
* new
* |
* T -- ELIST
* |
* arg1 -- arg2 -- .. -- argn
*
* new int[]
*
* new
* |
* int -- ARRAY_DECLARATOR
*
* new int[] {1,2}
*
* new
* |
* int -- ARRAY_DECLARATOR -- ARRAY_INIT
* |
* EXPR -- EXPR
* | |
* 1 2
*
* new int[3]
* new
* |
* int -- ARRAY_DECLARATOR
* |
* EXPR
* |
* 3
*
* new int[1][2]
*
* new
* |
* int -- ARRAY_DECLARATOR
* |
* ARRAY_DECLARATOR -- EXPR
* | |
* EXPR 1
* |
* 2
*
*/
public final void newExpression() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST newExpression_AST = null;
AST mca_AST = null;
AST apb1_AST = null;
AST tmp299_AST = null;
tmp299_AST = astFactory.create(LT(1));
astFactory.makeASTRoot(currentAST, tmp299_AST);
match(LITERAL_new);
nls();
{
switch ( LA(1)) {
case LT:
{
typeArguments();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case IDENT:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
type();
astFactory.addASTChild(currentAST, returnAST);
{
switch ( LA(1)) {
case LPAREN:
case NLS:
{
nls();
methodCallArgs(null);
mca_AST = (AST)returnAST;
{
if ((LA(1)==LCURLY) && (_tokenSet_12.member(LA(2)))) {
appendedBlock(mca_AST);
apb1_AST = (AST)returnAST;
if ( inputState.guessing==0 ) {
mca_AST = apb1_AST;
}
}
else if ((_tokenSet_86.member(LA(1))) && (_tokenSet_82.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
if ( inputState.guessing==0 ) {
newExpression_AST = (AST)currentAST.root;
newExpression_AST.addChild(mca_AST.getFirstChild());
}
break;
}
case LBRACK:
{
newArrayDeclarator();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
newExpression_AST = (AST)currentAST.root;
returnAST = newExpression_AST;
}
public final void closableBlockConstructorExpression() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST closableBlockConstructorExpression_AST = null;
closableBlock();
astFactory.addASTChild(currentAST, returnAST);
closableBlockConstructorExpression_AST = (AST)currentAST.root;
returnAST = closableBlockConstructorExpression_AST;
}
/**
* A list constructor is a argument list enclosed in square brackets, without labels.
* Any argument can be decorated with a spread operator (*x), but not a label (a:x).
* Examples: [], [1], [1,2], [1,*l1,2], [*l1,*l2].
* (The l1, l2 must be a sequence or null.)
*
* A map constructor is an argument list enclosed in square brackets, with labels everywhere,
* except on spread arguments, which stand for whole maps spliced in.
* A colon alone between the brackets also forces the expression to be an empty map constructor.
* Examples: [:], [a:1], [a:1,b:2], [a:1,*:m1,b:2], [*:m1,*:m2]
* (The m1, m2 must be a map or null.)
* Values associated with identical keys overwrite from left to right:
* [a:1,a:2] === [a:2]
*
* Some malformed constructor expressions are not detected in the parser, but in a post-pass.
* Bad examples: [1,b:2], [a:1,2], [:1].
* (Note that method call arguments, by contrast, can be a mix of keyworded and non-keyworded arguments.)
*/
public final void listOrMapConstructorExpression() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST listOrMapConstructorExpression_AST = null;
Token lcon = null;
AST lcon_AST = null;
Token emcon = null;
AST emcon_AST = null;
boolean hasLabels = false;
if ((LA(1)==LBRACK) && (_tokenSet_87.member(LA(2)))) {
lcon = LT(1);
lcon_AST = astFactory.create(lcon);
astFactory.makeASTRoot(currentAST, lcon_AST);
match(LBRACK);
argList();
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
hasLabels |= argListHasLabels;
}
match(RBRACK);
if ( inputState.guessing==0 ) {
lcon_AST.setType(hasLabels ? MAP_CONSTRUCTOR : LIST_CONSTRUCTOR);
}
listOrMapConstructorExpression_AST = (AST)currentAST.root;
}
else if ((LA(1)==LBRACK) && (LA(2)==COLON)) {
emcon = LT(1);
emcon_AST = astFactory.create(emcon);
astFactory.makeASTRoot(currentAST, emcon_AST);
match(LBRACK);
match(COLON);
match(RBRACK);
if ( inputState.guessing==0 ) {
emcon_AST.setType(MAP_CONSTRUCTOR);
}
listOrMapConstructorExpression_AST = (AST)currentAST.root;
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
returnAST = listOrMapConstructorExpression_AST;
}
public final void stringConstructorValuePart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST stringConstructorValuePart_AST = null;
{
switch ( LA(1)) {
case IDENT:
{
identifier();
astFactory.addASTChild(currentAST, returnAST);
break;
}
case LCURLY:
{
openOrClosableBlock();
astFactory.addASTChild(currentAST, returnAST);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
stringConstructorValuePart_AST = (AST)currentAST.root;
returnAST = stringConstructorValuePart_AST;
}
public final void newArrayDeclarator() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST newArrayDeclarator_AST = null;
Token lb = null;
AST lb_AST = null;
{
int _cnt494=0;
_loop494:
do {
if ((LA(1)==LBRACK) && (_tokenSet_88.member(LA(2)))) {
lb = LT(1);
lb_AST = astFactory.create(lb);
astFactory.makeASTRoot(currentAST, lb_AST);
match(LBRACK);
if ( inputState.guessing==0 ) {
lb_AST.setType(ARRAY_DECLARATOR);
}
{
switch ( LA(1)) {
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LCURLY:
case LITERAL_this:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
expression(0);
astFactory.addASTChild(currentAST, returnAST);
break;
}
case RBRACK:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
match(RBRACK);
}
else {
if ( _cnt494>=1 ) { break _loop494; } else {throw new NoViableAltException(LT(1), getFilename());}
}
_cnt494++;
} while (true);
}
newArrayDeclarator_AST = (AST)currentAST.root;
returnAST = newArrayDeclarator_AST;
}
/** A single argument in (...) or [...]. Corresponds to to a method or closure parameter.
* May be labeled. May be modified by the spread operator '*' ('*:' for keywords).
*/
public final byte argument() throws RecognitionException, TokenStreamException {
byte hasLabelOrSpread = 0;
returnAST = null;
ASTPair currentAST = new ASTPair();
AST argument_AST = null;
Token c = null;
AST c_AST = null;
Token sp = null;
AST sp_AST = null;
boolean sce=false;
{
boolean synPredMatched480 = false;
if (((_tokenSet_72.member(LA(1))) && (_tokenSet_73.member(LA(2))))) {
int _m480 = mark();
synPredMatched480 = true;
inputState.guessing++;
try {
{
argumentLabelStart();
}
}
catch (RecognitionException pe) {
synPredMatched480 = false;
}
rewind(_m480);
inputState.guessing--;
}
if ( synPredMatched480 ) {
argumentLabel();
astFactory.addASTChild(currentAST, returnAST);
c = LT(1);
c_AST = astFactory.create(c);
astFactory.makeASTRoot(currentAST, c_AST);
match(COLON);
if ( inputState.guessing==0 ) {
c_AST.setType(LABELED_ARG);
}
if ( inputState.guessing==0 ) {
hasLabelOrSpread |= 1;
}
}
else if ((LA(1)==STAR)) {
sp = LT(1);
sp_AST = astFactory.create(sp);
astFactory.makeASTRoot(currentAST, sp_AST);
match(STAR);
if ( inputState.guessing==0 ) {
sp_AST.setType(SPREAD_ARG);
}
if ( inputState.guessing==0 ) {
hasLabelOrSpread |= 2;
}
{
switch ( LA(1)) {
case COLON:
{
match(COLON);
if ( inputState.guessing==0 ) {
sp_AST.setType(SPREAD_MAP_ARG);
}
if ( inputState.guessing==0 ) {
hasLabelOrSpread |= 1;
}
break;
}
case FINAL:
case ABSTRACT:
case STRICTFP:
case LITERAL_static:
case LITERAL_def:
case LBRACK:
case IDENT:
case STRING_LITERAL:
case LPAREN:
case AT:
case LITERAL_super:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_private:
case LITERAL_public:
case LITERAL_protected:
case LITERAL_transient:
case LITERAL_native:
case LITERAL_threadsafe:
case LITERAL_synchronized:
case LITERAL_volatile:
case LCURLY:
case LITERAL_this:
case LITERAL_return:
case LITERAL_break:
case LITERAL_continue:
case LITERAL_throw:
case LITERAL_assert:
case PLUS:
case MINUS:
case INC:
case DEC:
case BNOT:
case LNOT:
case STRING_CTOR_START:
case LITERAL_new:
case LITERAL_true:
case LITERAL_false:
case LITERAL_null:
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
else if ((_tokenSet_62.member(LA(1))) && (_tokenSet_89.member(LA(2)))) {
}
else {
throw new NoViableAltException(LT(1), getFilename());
}
}
sce=strictContextExpression(true);
astFactory.addASTChild(currentAST, returnAST);
if ( inputState.guessing==0 ) {
require(LA(1) != COLON,
"illegal colon after argument expression",
"a complex label expression before a colon must be parenthesized");
}
argument_AST = (AST)currentAST.root;
returnAST = argument_AST;
return hasLabelOrSpread;
}
/** For lookahead only. Fast approximate parse of an argumentLabel followed by a colon. */
public final void argumentLabelStart() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST argumentLabelStart_AST = null;
{
switch ( LA(1)) {
case IDENT:
{
AST tmp305_AST = null;
tmp305_AST = astFactory.create(LT(1));
match(IDENT);
break;
}
case UNUSED_GOTO:
case UNUSED_DO:
case LITERAL_static:
case LITERAL_def:
case LITERAL_class:
case LITERAL_void:
case LITERAL_boolean:
case LITERAL_byte:
case LITERAL_char:
case LITERAL_short:
case LITERAL_int:
case LITERAL_float:
case LITERAL_long:
case LITERAL_double:
case LITERAL_as:
case LITERAL_default:
case LITERAL_if:
case LITERAL_else:
case LITERAL_while:
case LITERAL_switch:
case LITERAL_for:
case LITERAL_in:
case LITERAL_try:
case LITERAL_finally:
case LITERAL_catch:
{
keywordPropertyNames();
break;
}
case NUM_INT:
case NUM_FLOAT:
case NUM_LONG:
case NUM_DOUBLE:
case NUM_BIG_INT:
case NUM_BIG_DECIMAL:
{
constantNumber();
break;
}
case STRING_LITERAL:
{
AST tmp306_AST = null;
tmp306_AST = astFactory.create(LT(1));
match(STRING_LITERAL);
break;
}
case LBRACK:
case LPAREN:
case LCURLY:
case STRING_CTOR_START:
{
balancedBrackets();
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
AST tmp307_AST = null;
tmp307_AST = astFactory.create(LT(1));
match(COLON);
returnAST = argumentLabelStart_AST;
}
/** Numeric constant. */
public final void constantNumber() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST constantNumber_AST = null;
switch ( LA(1)) {
case NUM_INT:
{
AST tmp308_AST = null;
tmp308_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp308_AST);
match(NUM_INT);
constantNumber_AST = (AST)currentAST.root;
break;
}
case NUM_FLOAT:
{
AST tmp309_AST = null;
tmp309_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp309_AST);
match(NUM_FLOAT);
constantNumber_AST = (AST)currentAST.root;
break;
}
case NUM_LONG:
{
AST tmp310_AST = null;
tmp310_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp310_AST);
match(NUM_LONG);
constantNumber_AST = (AST)currentAST.root;
break;
}
case NUM_DOUBLE:
{
AST tmp311_AST = null;
tmp311_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp311_AST);
match(NUM_DOUBLE);
constantNumber_AST = (AST)currentAST.root;
break;
}
case NUM_BIG_INT:
{
AST tmp312_AST = null;
tmp312_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp312_AST);
match(NUM_BIG_INT);
constantNumber_AST = (AST)currentAST.root;
break;
}
case NUM_BIG_DECIMAL:
{
AST tmp313_AST = null;
tmp313_AST = astFactory.create(LT(1));
astFactory.addASTChild(currentAST, tmp313_AST);
match(NUM_BIG_DECIMAL);
constantNumber_AST = (AST)currentAST.root;
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = constantNumber_AST;
}
/** Fast lookahead across balanced brackets of all sorts. */
public final void balancedBrackets() throws RecognitionException, TokenStreamException {
returnAST = null;
ASTPair currentAST = new ASTPair();
AST balancedBrackets_AST = null;
switch ( LA(1)) {
case LPAREN:
{
AST tmp314_AST = null;
tmp314_AST = astFactory.create(LT(1));
match(LPAREN);
balancedTokens();
AST tmp315_AST = null;
tmp315_AST = astFactory.create(LT(1));
match(RPAREN);
break;
}
case LBRACK:
{
AST tmp316_AST = null;
tmp316_AST = astFactory.create(LT(1));
match(LBRACK);
balancedTokens();
AST tmp317_AST = null;
tmp317_AST = astFactory.create(LT(1));
match(RBRACK);
break;
}
case LCURLY:
{
AST tmp318_AST = null;
tmp318_AST = astFactory.create(LT(1));
match(LCURLY);
balancedTokens();
AST tmp319_AST = null;
tmp319_AST = astFactory.create(LT(1));
match(RCURLY);
break;
}
case STRING_CTOR_START:
{
AST tmp320_AST = null;
tmp320_AST = astFactory.create(LT(1));
match(STRING_CTOR_START);
balancedTokens();
AST tmp321_AST = null;
tmp321_AST = astFactory.create(LT(1));
match(STRING_CTOR_END);
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
returnAST = balancedBrackets_AST;
}
public static final String[] _tokenNames = {
"<0>",
"EOF",
"<2>",
"NULL_TREE_LOOKAHEAD",
"BLOCK",
"MODIFIERS",
"OBJBLOCK",
"SLIST",
"METHOD_DEF",
"VARIABLE_DEF",
"INSTANCE_INIT",
"STATIC_INIT",
"TYPE",
"CLASS_DEF",
"INTERFACE_DEF",
"PACKAGE_DEF",
"ARRAY_DECLARATOR",
"EXTENDS_CLAUSE",
"IMPLEMENTS_CLAUSE",
"PARAMETERS",
"PARAMETER_DEF",
"LABELED_STAT",
"TYPECAST",
"INDEX_OP",
"POST_INC",
"POST_DEC",
"METHOD_CALL",
"EXPR",
"IMPORT",
"UNARY_MINUS",
"UNARY_PLUS",
"CASE_GROUP",
"ELIST",
"FOR_INIT",
"FOR_CONDITION",
"FOR_ITERATOR",
"EMPTY_STAT",
"\"final\"",
"\"abstract\"",
"\"goto\"",
"\"const\"",
"\"do\"",
"\"strictfp\"",
"SUPER_CTOR_CALL",
"CTOR_CALL",
"CTOR_IDENT",
"VARIABLE_PARAMETER_DEF",
"STRING_CONSTRUCTOR",
"STRING_CTOR_MIDDLE",
"CLOSABLE_BLOCK",
"IMPLICIT_PARAMETERS",
"SELECT_SLOT",
"DYNAMIC_MEMBER",
"LABELED_ARG",
"SPREAD_ARG",
"SPREAD_MAP_ARG",
"LIST_CONSTRUCTOR",
"MAP_CONSTRUCTOR",
"FOR_IN_ITERABLE",
"STATIC_IMPORT",
"ENUM_DEF",
"ENUM_CONSTANT_DEF",
"FOR_EACH_CLAUSE",
"ANNOTATION_DEF",
"ANNOTATIONS",
"ANNOTATION",
"ANNOTATION_MEMBER_VALUE_PAIR",
"ANNOTATION_FIELD_DEF",
"ANNOTATION_ARRAY_INIT",
"TYPE_ARGUMENTS",
"TYPE_ARGUMENT",
"TYPE_PARAMETERS",
"TYPE_PARAMETER",
"WILDCARD_TYPE",
"TYPE_UPPER_BOUNDS",
"TYPE_LOWER_BOUNDS",
"CLOSURE_LIST",
"a script header",
"\"package\"",
"\"import\"",
"\"static\"",
"\"def\"",
"'['",
"']'",
"an identifier",
"a string literal",
"'<'",
"'.'",
"'('",
"\"class\"",
"\"interface\"",
"\"enum\"",
"'@'",
"'?'",
"\"extends\"",
"\"super\"",
"','",
"'>'",
"'>>'",
"'>>>'",
"\"void\"",
"\"boolean\"",
"\"byte\"",
"\"char\"",
"\"short\"",
"\"int\"",
"\"float\"",
"\"long\"",
"\"double\"",
"'*'",
"\"as\"",
"\"private\"",
"\"public\"",
"\"protected\"",
"\"transient\"",
"\"native\"",
"\"threadsafe\"",
"\"synchronized\"",
"\"volatile\"",
"')'",
"'='",
"'&'",
"'{'",
"'}'",
"';'",
"some newlines, whitespace or comments",
"\"default\"",
"\"throws\"",
"\"implements\"",
"\"this\"",
"'...'",
"'->'",
"':'",
"\"if\"",
"\"else\"",
"\"while\"",
"\"switch\"",
"\"for\"",
"\"in\"",
"\"return\"",
"\"break\"",
"\"continue\"",
"\"throw\"",
"\"assert\"",
"'+'",
"'-'",
"\"case\"",
"\"try\"",
"\"finally\"",
"\"catch\"",
"'*.'",
"'?.'",
"'.&'",
"'+='",
"'-='",
"'*='",
"'/='",
"'%='",
"'>>='",
"'>>>='",
"'<<='",
"'&='",
"'^='",
"'|='",
"'**='",
"'?:'",
"'||'",
"'&&'",
"'|'",
"'^'",
"'=~'",
"'==~'",
"'!='",
"'=='",
"'<=>'",
"'<='",
"'>='",
"\"instanceof\"",
"'<<'",
"'..'",
"'..<'",
"'++'",
"'/'",
"'%'",
"'--'",
"'**'",
"'~'",
"'!'",
"STRING_CTOR_START",
"a string literal end",
"\"new\"",
"\"true\"",
"\"false\"",
"\"null\"",
"a numeric literal",
"NUM_FLOAT",
"NUM_LONG",
"NUM_DOUBLE",
"NUM_BIG_INT",
"NUM_BIG_DECIMAL",
"'$'",
"whitespace",
"a newline",
"a single line comment",
"a comment",
"a string character",
"a regular expression literal",
"a regular expression literal end",
"a regular expression character",
"an escape sequence",
"a newline inside a string",
"a hexadecimal digit",
"a character",
"a letter",
"a digit",
"an exponent",
"a float or double suffix",
"a big decimal suffix"
};
protected void buildTokenTypeASTClassMap() {
tokenTypeToASTClassMap=null;
};
private static final long[] mk_tokenSet_0() {
long[] data = new long[8];
data[0]=4810363371522L;
data[1]=3782918067826688000L;
data[2]=-2513008592071951454L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
private static final long[] mk_tokenSet_1() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=9187343234467069952L;
data[2]=-2305843009213956098L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
private static final long[] mk_tokenSet_2() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=-16384L;
data[2]=-2512867854584381441L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
private static final long[] mk_tokenSet_3() {
long[] data = new long[12];
data[0]=-14L;
for (int i = 1; i<=2; i++) { data[i]=-1L; }
data[3]=67108863L;
return data;
}
public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
private static final long[] mk_tokenSet_4() {
long[] data = { 0L, 3458764513820540928L, 64L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
private static final long[] mk_tokenSet_5() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=3782918067826688000L;
data[2]=-2513008592071951390L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
private static final long[] mk_tokenSet_6() {
long[] data = { 2L, 8646911284551352320L, 262208L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
private static final long[] mk_tokenSet_7() {
long[] data = new long[8];
data[0]=289034119151618L;
data[1]=9223372035781001216L;
data[2]=-6L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7());
private static final long[] mk_tokenSet_8() {
long[] data = { 4810363371520L, 35888059799240704L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_8 = new BitSet(mk_tokenSet_8());
private static final long[] mk_tokenSet_9() {
long[] data = { 4810363371520L, 2341731069018177536L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_9 = new BitSet(mk_tokenSet_9());
private static final long[] mk_tokenSet_10() {
long[] data = { 4810363371520L, 35923175452901376L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_10 = new BitSet(mk_tokenSet_10());
private static final long[] mk_tokenSet_11() {
long[] data = { 4810363371520L, 2341766184681537536L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_11 = new BitSet(mk_tokenSet_11());
private static final long[] mk_tokenSet_12() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=4359378820130111488L;
data[2]=-2513008592071951442L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_12 = new BitSet(mk_tokenSet_12());
private static final long[] mk_tokenSet_13() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=324153554006147072L;
data[2]=-2513008592071951454L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_13 = new BitSet(mk_tokenSet_13());
private static final long[] mk_tokenSet_14() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=9187343234467069952L;
data[2]=-2305843009213693954L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_14 = new BitSet(mk_tokenSet_14());
private static final long[] mk_tokenSet_15() {
long[] data = new long[8];
data[1]=288265493971992576L;
data[2]=-2513008592072540158L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_15 = new BitSet(mk_tokenSet_15());
private static final long[] mk_tokenSet_16() {
long[] data = { 4810363371520L, 35888060034121728L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_16 = new BitSet(mk_tokenSet_16());
private static final long[] mk_tokenSet_17() {
long[] data = { 4810363371520L, 2341731069248864256L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_17 = new BitSet(mk_tokenSet_17());
private static final long[] mk_tokenSet_18() {
long[] data = new long[8];
data[0]=4810363371522L;
data[1]=8971064838561693696L;
data[2]=-2513008592071689246L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_18 = new BitSet(mk_tokenSet_18());
private static final long[] mk_tokenSet_19() {
long[] data = { 0L, 35115653660672L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_19 = new BitSet(mk_tokenSet_19());
private static final long[] mk_tokenSet_20() {
long[] data = { 0L, 15990784L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_20 = new BitSet(mk_tokenSet_20());
private static final long[] mk_tokenSet_21() {
long[] data = { 2L, 8718968882901024768L, 262208L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_21 = new BitSet(mk_tokenSet_21());
private static final long[] mk_tokenSet_22() {
long[] data = { 2L, 8718968882884247552L, 262208L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_22 = new BitSet(mk_tokenSet_22());
private static final long[] mk_tokenSet_23() {
long[] data = { 0L, -6917529027640033280L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_23 = new BitSet(mk_tokenSet_23());
private static final long[] mk_tokenSet_24() {
long[] data = { 2L, 8935141660703064064L, 262208L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_24 = new BitSet(mk_tokenSet_24());
private static final long[] mk_tokenSet_25() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=4359378820130111488L;
data[2]=-2513008592071951454L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_25 = new BitSet(mk_tokenSet_25());
private static final long[] mk_tokenSet_26() {
long[] data = { 0L, 13893632L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_26 = new BitSet(mk_tokenSet_26());
private static final long[] mk_tokenSet_27() {
long[] data = { 2L, 1261007899959230464L, 1040L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_27 = new BitSet(mk_tokenSet_27());
private static final long[] mk_tokenSet_28() {
long[] data = { 4810363371520L, 35923175467843584L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_28 = new BitSet(mk_tokenSet_28());
private static final long[] mk_tokenSet_29() {
long[] data = { 4810363371520L, 35923175459454976L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_29 = new BitSet(mk_tokenSet_29());
private static final long[] mk_tokenSet_30() {
long[] data = { 0L, 2305878125404225536L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_30 = new BitSet(mk_tokenSet_30());
private static final long[] mk_tokenSet_31() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=9223336852277100544L;
data[2]=-2512867854613805057L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_31 = new BitSet(mk_tokenSet_31());
private static final long[] mk_tokenSet_32() {
long[] data = { 0L, 288230376168751104L, 1152921504606846976L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_32 = new BitSet(mk_tokenSet_32());
private static final long[] mk_tokenSet_33() {
long[] data = new long[12];
data[0]=-16L;
data[1]=-900719925491662849L;
data[2]=-3458764513820540929L;
data[3]=67108863L;
return data;
}
public static final BitSet _tokenSet_33 = new BitSet(mk_tokenSet_33());
private static final long[] mk_tokenSet_34() {
long[] data = { 4810363371520L, 2341766184905670656L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_34 = new BitSet(mk_tokenSet_34());
private static final long[] mk_tokenSet_35() {
long[] data = { 0L, 35116161171456L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_35 = new BitSet(mk_tokenSet_35());
private static final long[] mk_tokenSet_36() {
long[] data = { 2L, 2305843009313570816L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_36 = new BitSet(mk_tokenSet_36());
private static final long[] mk_tokenSet_37() {
long[] data = { 4810363371520L, 35888059530674176L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_37 = new BitSet(mk_tokenSet_37());
private static final long[] mk_tokenSet_38() {
long[] data = new long[8];
data[1]=288265494240428032L;
data[2]=-2513008592072540158L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_38 = new BitSet(mk_tokenSet_38());
private static final long[] mk_tokenSet_39() {
long[] data = new long[8];
data[0]=7559142440960L;
data[1]=9151314437448105984L;
data[2]=-2305843146619355138L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_39 = new BitSet(mk_tokenSet_39());
private static final long[] mk_tokenSet_40() {
long[] data = { 0L, 4323455646588469248L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_40 = new BitSet(mk_tokenSet_40());
private static final long[] mk_tokenSet_41() {
long[] data = { 4810363371520L, 4359378817963458560L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_41 = new BitSet(mk_tokenSet_41());
private static final long[] mk_tokenSet_42() {
long[] data = new long[8];
data[0]=4810363371522L;
data[1]=8971064838570082304L;
data[2]=-2513008592071689246L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_42 = new BitSet(mk_tokenSet_42());
private static final long[] mk_tokenSet_43() {
long[] data = { 0L, 2594108566517317632L, 1L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_43 = new BitSet(mk_tokenSet_43());
private static final long[] mk_tokenSet_44() {
long[] data = { 4810363371520L, 4359378879181684736L, 1L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_44 = new BitSet(mk_tokenSet_44());
private static final long[] mk_tokenSet_45() {
long[] data = { 4810363371520L, 35888059800289280L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_45 = new BitSet(mk_tokenSet_45());
private static final long[] mk_tokenSet_46() {
long[] data = { 4810363371520L, 2341731069030760448L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_46 = new BitSet(mk_tokenSet_46());
private static final long[] mk_tokenSet_47() {
long[] data = { 0L, 4107282864473636864L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_47 = new BitSet(mk_tokenSet_47());
private static final long[] mk_tokenSet_48() {
long[] data = { 0L, 2305843009483177984L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_48 = new BitSet(mk_tokenSet_48());
private static final long[] mk_tokenSet_49() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=4359378824429273088L;
data[2]=-2513008592071951454L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_49 = new BitSet(mk_tokenSet_49());
private static final long[] mk_tokenSet_50() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=4359378820134305792L;
data[2]=-2513008592071951454L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_50 = new BitSet(mk_tokenSet_50());
private static final long[] mk_tokenSet_51() {
long[] data = { 0L, 2151677952L, 2L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_51 = new BitSet(mk_tokenSet_51());
private static final long[] mk_tokenSet_52() {
long[] data = { 0L, 2305878125421002752L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_52 = new BitSet(mk_tokenSet_52());
private static final long[] mk_tokenSet_53() {
long[] data = new long[8];
data[0]=7559142440960L;
data[1]=9187343234467069952L;
data[2]=-2305843009213956098L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_53 = new BitSet(mk_tokenSet_53());
private static final long[] mk_tokenSet_54() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=3782918067826688000L;
data[2]=-2513008592071951454L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_54 = new BitSet(mk_tokenSet_54());
private static final long[] mk_tokenSet_55() {
long[] data = { 0L, 13893632L, 4L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_55 = new BitSet(mk_tokenSet_55());
private static final long[] mk_tokenSet_56() {
long[] data = { 0L, 2413929404566601728L, 8L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_56 = new BitSet(mk_tokenSet_56());
private static final long[] mk_tokenSet_57() {
long[] data = { 137438953472L, 2305878125135921152L, 12L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_57 = new BitSet(mk_tokenSet_57());
private static final long[] mk_tokenSet_58() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=4431436418475589632L;
data[2]=-2513008592071951442L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_58 = new BitSet(mk_tokenSet_58());
private static final long[] mk_tokenSet_59() {
long[] data = new long[8];
data[0]=289034119151618L;
data[1]=9223372035781001216L;
data[2]=-2L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_59 = new BitSet(mk_tokenSet_59());
private static final long[] mk_tokenSet_60() {
long[] data = new long[8];
data[0]=2748779069440L;
data[1]=4900021881177309184L;
data[2]=-2513008592068868126L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_60 = new BitSet(mk_tokenSet_60());
private static final long[] mk_tokenSet_61() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=9187343238762037248L;
data[2]=-2305843009213693954L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_61 = new BitSet(mk_tokenSet_61());
private static final long[] mk_tokenSet_62() {
long[] data = new long[8];
data[0]=4810363371520L;
data[1]=324153553771233280L;
data[2]=-2513008592072476670L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_62 = new BitSet(mk_tokenSet_62());
private static final long[] mk_tokenSet_63() {
long[] data = { 4810363371520L, 2341766184679440384L, 1040L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_63 = new BitSet(mk_tokenSet_63());
private static final long[] mk_tokenSet_64() {
long[] data = { 4810363371520L, 2341766184679440384L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_64 = new BitSet(mk_tokenSet_64());
private static final long[] mk_tokenSet_65() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=9223372035781001216L;
data[2]=-2305843009213956098L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_65 = new BitSet(mk_tokenSet_65());
private static final long[] mk_tokenSet_66() {
long[] data = { 0L, 2594073385365405696L, 1048576L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_66 = new BitSet(mk_tokenSet_66());
private static final long[] mk_tokenSet_67() {
long[] data = { 2L, 8682940085865807872L, 262208L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_67 = new BitSet(mk_tokenSet_67());
private static final long[] mk_tokenSet_68() {
long[] data = { 0L, 51539607552L, 7881299347898368L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_68 = new BitSet(mk_tokenSet_68());
private static final long[] mk_tokenSet_69() {
long[] data = new long[8];
data[0]=-16L;
data[1]=-288230376151711745L;
data[2]=-1L;
data[3]=67108863L;
return data;
}
public static final BitSet _tokenSet_69 = new BitSet(mk_tokenSet_69());
private static final long[] mk_tokenSet_70() {
long[] data = new long[8];
data[0]=4810363371522L;
data[1]=324153553771233280L;
data[2]=-2513008592072476670L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_70 = new BitSet(mk_tokenSet_70());
private static final long[] mk_tokenSet_71() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=9187343238762037248L;
data[2]=-2305843009213956098L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_71 = new BitSet(mk_tokenSet_71());
private static final long[] mk_tokenSet_72() {
long[] data = new long[8];
data[0]=2748779069440L;
data[1]=4900021881177309184L;
data[2]=-3458764513816868894L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_72 = new BitSet(mk_tokenSet_72());
private static final long[] mk_tokenSet_73() {
long[] data = new long[8];
data[0]=7559142440960L;
data[1]=8971170391678484480L;
data[2]=-2513008592068804610L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_73 = new BitSet(mk_tokenSet_73());
private static final long[] mk_tokenSet_74() {
long[] data = { 2748779069440L, 4611791502857928704L, 3672032L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_74 = new BitSet(mk_tokenSet_74());
private static final long[] mk_tokenSet_75() {
long[] data = new long[8];
data[1]=288265493971992576L;
data[2]=-3458764513820540926L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_75 = new BitSet(mk_tokenSet_75());
private static final long[] mk_tokenSet_76() {
long[] data = { 0L, 2594073385390833664L, 29360128L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_76 = new BitSet(mk_tokenSet_76());
private static final long[] mk_tokenSet_77() {
long[] data = new long[8];
data[0]=7559142440960L;
data[1]=9007199188705837056L;
data[2]=-2513008592039444498L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_77 = new BitSet(mk_tokenSet_77());
private static final long[] mk_tokenSet_78() {
long[] data = { 0L, 8594128896L, 422212465067008L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_78 = new BitSet(mk_tokenSet_78());
private static final long[] mk_tokenSet_79() {
long[] data = new long[8];
data[1]=2594108503185686528L;
data[2]=-2513008592072540158L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_79 = new BitSet(mk_tokenSet_79());
private static final long[] mk_tokenSet_80() {
long[] data = { 0L, 2305878124867354624L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_80 = new BitSet(mk_tokenSet_80());
private static final long[] mk_tokenSet_81() {
long[] data = new long[8];
data[0]=2748779069442L;
data[1]=9187448731266383872L;
data[2]=-2512867854613805062L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_81 = new BitSet(mk_tokenSet_81());
private static final long[] mk_tokenSet_82() {
long[] data = new long[8];
data[0]=289034119151618L;
data[1]=-1073758208L;
data[2]=-2L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_82 = new BitSet(mk_tokenSet_82());
private static final long[] mk_tokenSet_83() {
long[] data = { 0L, 35184372088832L, 54043195528445952L, 0L, 0L, 0L};
return data;
}
public static final BitSet _tokenSet_83 = new BitSet(mk_tokenSet_83());
private static final long[] mk_tokenSet_84() {
long[] data = new long[8];
data[0]=7559142440962L;
data[1]=9223372035781001216L;
data[2]=-2305843009213693954L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_84 = new BitSet(mk_tokenSet_84());
private static final long[] mk_tokenSet_85() {
long[] data = new long[8];
data[0]=2748779069442L;
data[1]=9187483975772209152L;
data[2]=-2305843009243117574L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_85 = new BitSet(mk_tokenSet_85());
private static final long[] mk_tokenSet_86() {
long[] data = new long[8];
data[0]=2748779069442L;
data[1]=9187483975780597760L;
data[2]=-2305843009213757446L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_86 = new BitSet(mk_tokenSet_86());
private static final long[] mk_tokenSet_87() {
long[] data = new long[8];
data[0]=7559142440960L;
data[1]=4935945125348966400L;
data[2]=-2513008592068804638L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_87 = new BitSet(mk_tokenSet_87());
private static final long[] mk_tokenSet_88() {
long[] data = new long[8];
data[1]=288265493972516864L;
data[2]=-2513008592072540158L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_88 = new BitSet(mk_tokenSet_88());
private static final long[] mk_tokenSet_89() {
long[] data = new long[8];
data[0]=7559142440960L;
data[1]=9223372035781001216L;
data[2]=-2305843009213956098L;
data[3]=255L;
return data;
}
public static final BitSet _tokenSet_89 = new BitSet(mk_tokenSet_89());
}