/* *******************************************************************
* Copyright (c) 2002,2003 Palo Alto Research Center, Incorporated (PARC).
* 2004, contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Common Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* PARC initial implementation
* Adrian Colyer refactored for use in org.aspectj.org.eclipse.jdt.core package
* ******************************************************************/
package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.List;
import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Literal;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OperatorIds;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeParameter;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
// AspectJ Extension - this whole class is an AspectJ extension to the parser
public class Parser extends TheOriginalJDTParserClass {
private static final String ASPECTJ_DECLARATION_FACTORY = "org.aspectj.ajdt.internal.compiler.parser.DeclarationFactory";
private static IDeclarationFactory declarationFactory;
static {
try{
initTables(Parser.class);
declarationFactory = (IDeclarationFactory) Class.forName(ASPECTJ_DECLARATION_FACTORY).newInstance();
} catch(java.io.IOException ex){
throw new ExceptionInInitializerError(ex.getMessage());
} catch (InstantiationException ex) {
throw new ExceptionInInitializerError(ex.getMessage());
} catch (IllegalAccessException ex) {
throw new ExceptionInInitializerError(ex.getMessage());
} catch (ClassNotFoundException ex) {
System.err.println("Warning: AspectJ declaration factory class not found on classpath");
//throw new ExceptionInInitializerError(ex.getMessage());
}
}
public interface IDeclarationFactory {
MessageSend createProceed(MessageSend m);
TypeDeclaration createAspect(CompilationResult result);
void setPrivileged(TypeDeclaration aspectDecl, boolean isPrivileged);
void setPerClauseFrom(TypeDeclaration aspectDecl, ASTNode pseudoTokens, Parser parser);
void setDominatesPatternFrom(TypeDeclaration aspectDecl, ASTNode pseudoTokens, Parser parser);
ASTNode createPseudoTokensFrom(ASTNode[] tokens, CompilationResult result);
MethodDeclaration createMethodDeclaration(CompilationResult result);
ConstructorDeclaration createConstructorDeclaration(CompilationResult result);
MethodDeclaration createPointcutDeclaration(CompilationResult result);
MethodDeclaration createAroundAdviceDeclaration(CompilationResult result);
MethodDeclaration createAfterAdviceDeclaration(CompilationResult result);
MethodDeclaration createBeforeAdviceDeclaration(CompilationResult result);
ASTNode createPointcutDesignator(Parser parser, ASTNode pseudoTokens);
void setPointcutDesignatorOnAdvice(MethodDeclaration adviceDecl, ASTNode des);
void setPointcutDesignatorOnPointcut(MethodDeclaration adviceDecl, ASTNode des);
void setExtraArgument(MethodDeclaration adviceDeclaration, Argument arg);
boolean isAfterAdvice(MethodDeclaration adviceDecl);
void setAfterThrowingAdviceKind(MethodDeclaration adviceDecl);
void setAfterReturningAdviceKind(MethodDeclaration adviceDecl);
MethodDeclaration createDeclareDeclaration(CompilationResult result, ASTNode pseudoTokens, Parser parser);
MethodDeclaration createDeclareAnnotationDeclaration(CompilationResult result, ASTNode pseudoTokens, Annotation annotation, Parser parser,char kind);
MethodDeclaration createInterTypeFieldDeclaration(CompilationResult result, TypeReference onType);
MethodDeclaration createInterTypeMethodDeclaration(CompilationResult result);
MethodDeclaration createInterTypeConstructorDeclaration(CompilationResult result);
void setSelector(MethodDeclaration interTypeDecl, char[] selector);
void setDeclaredModifiers(MethodDeclaration interTypeDecl, int modifiers);
void setInitialization(MethodDeclaration itdFieldDecl, Expression initialization);
void setOnType(MethodDeclaration interTypeDecl, TypeReference onType);
ASTNode createPseudoToken(Parser parser, String value, boolean isIdentifier);
ASTNode createIfPseudoToken(Parser parser, Expression expr);
void setLiteralKind(ASTNode pseudoToken, String string);
boolean shouldTryToRecover(ASTNode node);
TypeDeclaration createIntertypeMemberClassDeclaration(CompilationResult compilationResult);
void setOnType(TypeDeclaration interTypeDecl, TypeReference onType);
}
// public final static void initAjTables(Class parserClass)
// throws java.io.IOException {
//
// final String prefix = FILEPREFIX;
// int i = 0;
// lhsStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
// char[] chars = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
// check_tableStatic = new short[chars.length];
// for (int c = chars.length; c-- > 0;) {
// check_tableStatic[c] = (short) (chars[c] - 32768);
// }
// asbStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
// asrStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
// symbol_indexStatic = readTable(parserClass, prefix + (++i) + ".rsc"); //$NON-NLS-1$
// actionStatic = lhsStatic;
// }
//positions , dimensions , .... (int stacks)
protected int aspectIntPtr;
protected int[] aspectIntStack;
/* (non-Javadoc)
* @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.TheOriginalJDTParserClass#initialize()
*/
public void initialize() {
super.initialize();
aspectIntPtr = -1;
aspectIntStack = new int[4];
}
public void initialize(boolean initializeNLS) {
super.initialize(initializeNLS);
aspectIntPtr = -1;
aspectIntStack = new int[4];
}
public void initializeScanner(){
this.scanner = new Scanner(
false /*comment*/,
false /*whitespace*/,
this.options.getSeverity(CompilerOptions.NonExternalizedString) != ProblemSeverities.Ignore /*nls*/,
this.options.sourceLevel /*sourceLevel*/,
this.options.taskTags/*taskTags*/,
this.options.taskPriorites/*taskPriorities*/,
this.options.isTaskCaseSensitive/*taskCaseSensitive*/);
}
//*************New display debugging method
private static final boolean AJ_DEBUG = false;
void println(Object o) {
if (AJ_DEBUG) System.out.println(o);
}
private void printStack(Object[] s, int p) {
List list = Arrays.asList(s);
System.out.println(" " + list.subList(0, p+1));
}
private void printStack(int[] s, int p) {
StringBuffer buf = new StringBuffer("[");
for (int i=0; i<p+1; i++) {
if (i > 0) buf.append(", ");
buf.append(Integer.toString(s[i]));
}
buf.append("]");
System.out.println(" " + buf);
}
private void printStack(long[] s, int p) {
StringBuffer buf = new StringBuffer("[");
for (int i=0; i<p+1; i++) {
if (i > 0) buf.append(", ");
buf.append(Long.toString(s[i]));
}
buf.append("]");
System.out.println(" " + buf);
}
private void printStack(char[][] s, int p) {
StringBuffer buf = new StringBuffer("[");
for (int i=0; i<p+1; i++) {
if (i > 0) buf.append(", ");
buf.append(new String(s[i]));
}
buf.append("]");
System.out.println(" " + buf);
}
public void display() {
if (!AJ_DEBUG) return;
System.out.print("astStack: ");
printStack(astStack, astPtr);
System.out.print("astLengthStack: ");
printStack(astLengthStack, astLengthPtr);
System.out.print("expressionStack: ");
printStack(expressionStack, expressionPtr);
System.out.print("expressionLengthStack: ");
printStack(expressionLengthStack, expressionLengthPtr);
System.out.print("identifierStack: ");
printStack(identifierStack, identifierPtr);
System.out.print("identifierLengthStack: ");
printStack(identifierLengthStack, identifierLengthPtr);
System.out.print("identifierPositionStack: ");
printStack(identifierPositionStack, identifierPtr);
System.out.print("intStack:");
printStack(intStack, intPtr);
System.out.println();
}
//************** Overriding behavior for standard Java rules
protected MethodDeclaration createMethodDeclaration(CompilationResult result) {
return declarationFactory.createMethodDeclaration(result);
}
protected ConstructorDeclaration createConstructorDeclaration(CompilationResult result) {
return declarationFactory.createConstructorDeclaration(result);
}
protected void consumeMethodInvocationName() {
super.consumeMethodInvocationName();
MessageSend m = (MessageSend)expressionStack[expressionPtr];
if (CharOperation.equals(m.selector, "proceed".toCharArray())) {
expressionStack[expressionPtr] = declarationFactory.createProceed(m);
}
}
protected void consumeToken(int type) {
currentTokenStart = scanner.startPosition;
super.consumeToken(type);
switch (type) {
case TokenNameaspect : // pseudo keyword
//aspectIntPtr = -1; //XXX If we ever see a bug with aspects nested in aspects,
// // this line is the culprit!
pushOnAspectIntStack(this.scanner.currentPosition - 1);
pushOnAspectIntStack(this.scanner.startPosition);
// deliberate fall through...
case TokenNameprivileged : // pseudo keyword
case TokenNamepointcut : // pseudo keyword
case TokenNamebefore : // pseudo keyword
case TokenNameafter : // pseudo keyword
case TokenNamearound : // pseudo keyword
case TokenNamedeclare : // pseudo keyword
pushIdentifier();
scanner.commentPtr = -1;
break;
}
}
//************New AspectJ rules
protected void consumeAspectDeclaration() {
// AspectDeclaration ::= AspectHeader AspectBody
consumeClassDeclaration();
//??? post parsing step here
}
protected void consumeAspectHeader() {
// AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt AspectHeaderRest
consumeClassHeader();
}
protected void consumeAspectHeaderName(boolean isPrivileged) {
// (isPrivileged == false) -> AspectHeaderName ::= Modifiersopt 'aspect' 'Identifier'
// (isPrivileged == true) -> AspectHeaderName ::= Modifiersopt 'privileged' Modifiersopt 'aspect' 'Identifier'
TypeDeclaration aspectDecl = declarationFactory.createAspect(this.compilationUnit.compilationResult);
if (this.nestedMethod[this.nestedType] == 0) {
if (this.nestedType != 0) {
aspectDecl.bits |= ASTNode.IsMemberType;
}
} else {
// Record that the block has a declaration for local types
aspectDecl.bits |= ASTNode.IsLocalType;
markEnclosingMemberWithLocalType();
blockReal();
}
println("aspect header name: ");
this.display();
//highlight the name of the type
long pos = identifierPositionStack[identifierPtr];
aspectDecl.sourceEnd = (int) pos;
aspectDecl.sourceStart = (int) (pos >>> 32);
aspectDecl.name = identifierStack[identifierPtr--];
identifierLengthPtr--;
//compute the declaration source too
// 'class' and 'interface' push two int positions: the beginning of the class token and its end.
// we want to keep the beginning position but get rid of the end position
// it is only used for the ClassLiteralAccess positions.
aspectDecl.declarationSourceStart = this.aspectIntStack[this.aspectIntPtr--];
this.aspectIntPtr--; // remove the end position of the class token
// pop the aspect pseudo-token
eatIdentifier();
// handle modifiers, only without privileged for now
if (isPrivileged) {
pos = eatIdentifier(); // eat the privileged
// int end = (int) pos;
// int start = (int) (pos >>> 32);
declarationFactory.setPrivileged(aspectDecl,true);
//problemReporter().signalError(start, end, "privileged is unimplemented in 1.1alpha1");
}
aspectDecl.modifiersSourceStart = intStack[intPtr--];
aspectDecl.modifiers = intStack[intPtr--];
if (isPrivileged) {
aspectDecl.modifiersSourceStart = intStack[intPtr--];
aspectDecl.modifiers |= intStack[intPtr--];
}
if (aspectDecl.modifiersSourceStart >= 0) {
aspectDecl.declarationSourceStart = aspectDecl.modifiersSourceStart;
}
println("modifiers: " + aspectDecl.modifiers);
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
aspectDecl.annotations = new Annotation[length],
0,
length);
}
aspectDecl.bodyStart = aspectDecl.sourceEnd + 1;
pushOnAstStack(aspectDecl);
listLength = 0; // will be updated when reading super-interfaces
// recovery
if (currentElement != null) {
lastCheckPoint = aspectDecl.bodyStart;
currentElement = currentElement.add(aspectDecl, 0);
lastIgnoredToken = -1;
}
// Grab the javadoc
aspectDecl.javadoc = this.javadoc;
this.javadoc = null;
this.display();
}
protected void consumeAspectHeaderNameWithTypeParameters(boolean isPriviliged) {
TypeDeclaration typeDecl = (TypeDeclaration)this.astStack[this.astPtr];
// consume type parameters
int length = this.genericsLengthStack[this.genericsLengthPtr--];
this.genericsPtr -= length;
System.arraycopy(this.genericsStack, this.genericsPtr + 1, typeDecl.typeParameters = new TypeParameter[length], 0, length);
typeDecl.bodyStart = typeDecl.typeParameters[length-1].declarationSourceEnd + 1;
this.listTypeParameterLength = 0;
if (this.currentElement != null) { // is recovering
this.lastCheckPoint = typeDecl.bodyStart;
}
}
private long eatIdentifier() {
long pos = identifierPositionStack[identifierPtr];
identifierPtr--;
identifierLengthPtr--;
return pos;
}
protected void consumeAspectHeaderRest() {
//--[dominates TypePattern] [persingleton() | percflow(PCD) | perthis(PCD) | pertarget(PCD)]
//AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens
concatNodeLists();
this.display();
ASTNode pseudoTokens = popPseudoTokens("{");
println("pseudo: " + pseudoTokens);
TypeDeclaration aspectDecl = (TypeDeclaration) astStack[astPtr];
declarationFactory.setDominatesPatternFrom(aspectDecl,pseudoTokens,this);
declarationFactory.setPerClauseFrom(aspectDecl,pseudoTokens,this);
// XXX handle dominates
}
protected void consumePointcutDeclaration() {
consumePointcutDesignatorOnDeclaration();
}
// AspectJ extension - accessor method for the currentTokenStart
public int getCurrentTokenStart() {
return currentTokenStart;
}
// End AspectJ extension
protected void consumeEmptyPointcutDeclaration() {
// AspectJ extension - set up some positions, required by AST support
MethodDeclaration pcutDecl = (MethodDeclaration)astStack[astPtr];
pcutDecl.bodyEnd = endStatementPosition;
// End Aspectj Extension
//??? set pcd to non-null
}
protected void consumePointcutHeader() {
//PointcutDeclaration ::= Modifiersopt 'pointcut' JavaIdentifier '('
MethodDeclaration ret = declarationFactory.createPointcutDeclaration(compilationUnit.compilationResult);
//the name
long pos = identifierPositionStack[identifierPtr];
// int sourceEnd = (int) pos;
ret.sourceStart = (int) (pos >>> 32);
ret.selector = identifierStack[identifierPtr--];
identifierLengthPtr--;
// Grab the javadoc
ret.javadoc = this.javadoc;
this.javadoc = null;
// pop the 'pointcut' keyword
eatIdentifier();
// modifiers
ret.declarationSourceStart = intStack[intPtr--];
ret.modifiers = intStack[intPtr--];
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
ret.annotations = new Annotation[length],
0,
length);
}
pushOnAstStack(ret);
}
protected void consumeAroundDeclaration() {
// AroundDeclaration ::= AroundHeader MethodBody
consumeMethodDeclaration(true);
}
protected void consumeAroundHeader() {
consumePointcutDesignatorOnAdvice();
resetModifiers(); // forget any modifiers encountered in the pointcut 263666
consumeMethodHeader();
}
protected void consumeAroundHeaderName() {
// AroundHeaderName ::= Modifiersopt Type 'around' '('
MethodDeclaration adviceDecl = declarationFactory.createAroundAdviceDeclaration(compilationUnit.compilationResult);
// skip the name of the advice
long pos = eatIdentifier();
adviceDecl.sourceStart = (int) (pos >>> 32);
// but put in a placeholder name
adviceDecl.selector = new char[] {'a','j','c','$','a','d','v','i','c','e'};
TypeReference returnType = getTypeReference(intStack[intPtr--]);
//modifiers
adviceDecl.declarationSourceStart = intStack[intPtr--];
adviceDecl.modifiers = intStack[intPtr--];
adviceDecl.returnType = returnType;
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
adviceDecl.annotations = new Annotation[length],
0,
length);
}
// Grab the javadoc
adviceDecl.javadoc = this.javadoc;
this.javadoc = null;
//XXX get some locations right
pushOnAstStack(adviceDecl);
}
protected void consumePointcutDesignatorOnAdvice() {
ASTNode des = popPointcutDesignator("{");
MethodDeclaration adviceDecl = (MethodDeclaration)astStack[astPtr];
declarationFactory.setPointcutDesignatorOnAdvice(adviceDecl,des);
adviceDecl.sourceEnd = des.sourceEnd;
adviceDecl.bodyStart = des.sourceEnd+1;
}
protected void consumePointcutDesignatorOnDeclaration() {
ASTNode des = popPointcutDesignator(";");
MethodDeclaration pcutDecl = (MethodDeclaration)astStack[astPtr];
declarationFactory.setPointcutDesignatorOnPointcut(pcutDecl,des);
pcutDecl.sourceEnd = des.sourceEnd;
pcutDecl.bodyStart = des.sourceEnd+1;
pcutDecl.bodyEnd = endPosition;
pcutDecl.declarationSourceEnd = flushCommentsDefinedPriorTo(endStatementPosition);
}
protected void consumeBasicAdviceDeclaration() {
// BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody
consumeMethodDeclaration(true);
}
protected void consumeBasicAdviceHeader() {
// BasicAdviceHeader ::= BasicAdviceHeaderName MethodHeaderParameters ExtraParamopt MethodHeaderThrowsClauseopt ':' PseudoTokens
consumePointcutDesignatorOnAdvice();
resetModifiers(); // forget any modifiers encountered in the pointcut 263666
consumeMethodHeader();
}
protected void consumeBasicAdviceHeaderName(boolean isAfter) {
// BasicAdviceHeaderName ::= 'before'|'after '('
MethodDeclaration adviceDecl =
(isAfter ? declarationFactory.createAfterAdviceDeclaration(compilationUnit.compilationResult) :
declarationFactory.createBeforeAdviceDeclaration(compilationUnit.compilationResult));
// skip the name of the advice
long pos = eatIdentifier();
// but give a placeholder selector name
adviceDecl.selector = new char[] {'a','j','c','$','a','d','v','i','c','e'};
adviceDecl.sourceStart = (int) (pos >>> 32);
//modifiers
adviceDecl.declarationSourceStart = intStack[intPtr--];
adviceDecl.modifiers = intStack[intPtr--];
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
adviceDecl.annotations = new Annotation[length],
0,
length);
}
// Grab the javadoc
adviceDecl.javadoc = this.javadoc;
this.javadoc = null;
//??? get more locations right
pushOnAstStack(adviceDecl);
}
protected void consumeExtraParameterWithFormal() {
Argument arg = (Argument)astStack[astPtr--];
astLengthPtr--;
declarationFactory.setExtraArgument((MethodDeclaration)astStack[astPtr],arg);
consumeExtraParameterNoFormal();
}
protected void consumeExtraParameterNoFormal() {
long pos = identifierPositionStack[identifierPtr];
int end = (int) pos;
int start = (int) (pos >>> 32);
char[] name = identifierStack[identifierPtr--];
identifierLengthPtr--;
//System.out.println("extra parameter: " + new String(name));
MethodDeclaration adviceDecl = (MethodDeclaration)astStack[astPtr];
if (declarationFactory.isAfterAdvice(adviceDecl)) {
//XXX error, extra param makes no sense here
}
if (CharOperation.equals(name, "throwing".toCharArray())) {
declarationFactory.setAfterThrowingAdviceKind(adviceDecl);
} else if (CharOperation.equals(name, "returning".toCharArray())) {
declarationFactory.setAfterReturningAdviceKind(adviceDecl);
} else {
problemReporter().parseError(
start,
end,
currentToken,
name,
String.valueOf(name),
new String[] {"throwing", "returning", ":"});
}
}
protected void consumeClassBodyDeclarationInAspect() { }
protected void consumeDeclareDeclaration() {
concatNodeLists();
ASTNode tokens = popPseudoTokens(";");
MethodDeclaration declareDecl = declarationFactory.createDeclareDeclaration(this.compilationUnit.compilationResult,tokens,this);
// println("parsed declare: " + declare);
display();
pushOnAstStack(declareDecl);
}
protected void consumeDeclareAnnotation(char kind) {
concatNodeLists();
ASTNode tokens = popPseudoTokens(";");
int length;
Annotation[] annotations = new Annotation[1]; // there should only ever be one for us...
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
annotations = new Annotation[length],
0,
length);
}
MethodDeclaration declareDecl = declarationFactory.createDeclareAnnotationDeclaration(this.compilationUnit.compilationResult,tokens,annotations[0],this,kind);
pushOnAstStack(declareDecl);
}
protected void consumeDeclareAnnotationHeader() {
consumePseudoTokenIdentifier(); // name
consumePseudoTokenIdentifier(); // declare
swapAstStack();
consumePseudoTokens();
consumePseudoToken("@",0,false);
swapAstStack();
consumePseudoTokens();
consumePseudoToken(":", 0, false);
consumePseudoTokens();
display();
}
protected void consumeDeclareHeader() {
consumePseudoTokenIdentifier(); // name
consumePseudoTokenIdentifier(); // declare
swapAstStack();
consumePseudoTokens();
consumePseudoToken(":", 0, false);
consumePseudoTokens();
// println(">>>>>>>>>>>>>>>>>>>>>>>declare header");
display();
}
protected void consumeInterTypeFieldHeader(boolean hasTypeParameters) {
// println("about to consume field");
this.display();
long pos = identifierPositionStack[identifierPtr];
int end = (int) pos;
int start = (int) (pos >>> 32);
char[] identifierName = identifierStack[identifierPtr--];
// int extendedDimension = this.intStack[this.intPtr--]; // XXXX see consumeEnterVariable for what to do with this
identifierLengthPtr--;
if (hasTypeParameters) {
pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
} else {
consumeClassOrInterfaceName();
}
TypeReference onType = getTypeReference(0);
TypeReference returnType = getTypeReference(intStack[intPtr--]);
this.display();
int decSourceStart = intStack[intPtr--];
int fieldModifiers = intStack[intPtr--];
MethodDeclaration dec = declarationFactory.createInterTypeFieldDeclaration(
this.compilationUnit.compilationResult,
onType);
dec.returnType = returnType;
dec.sourceStart = start;
dec.sourceEnd = end;
declarationFactory.setSelector(dec,identifierName);
dec.declarationSourceStart = decSourceStart;
declarationFactory.setDeclaredModifiers(dec,fieldModifiers);
// declarationFactory.setInitialization(dec,initialization);
dec.bodyEnd = endPosition;
// dec.declarationSourceEnd = flushCommentsDefinedPriorTo(endStatementPosition);
// Grab the javadoc
dec.javadoc = this.javadoc;
this.javadoc = null;
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
dec.annotations = new Annotation[length],
0,
length);
}
pushOnAstStack(dec);
println("consumed field: " + dec);
this.display();
}
protected void consumeExitITDVariableWithoutInitializer() {
MethodDeclaration itdDecl = (MethodDeclaration) this.astStack[this.astPtr];
declarationFactory.setInitialization(itdDecl,null);
}
protected void consumeExitITDVariableWithInitializer() {
this.expressionLengthPtr--;
MethodDeclaration itdDecl = (MethodDeclaration) this.astStack[this.astPtr];
Expression initialization = this.expressionStack[this.expressionPtr--];
declarationFactory.setInitialization(itdDecl,initialization);
// we need to update the declarationSourceEnd of the local variable declaration to the
// source end position of the initialization expression
itdDecl.declarationSourceEnd = initialization.sourceEnd;
}
protected void consumeInterTypeFieldDeclaration() {
MethodDeclaration dec = (MethodDeclaration) this.astStack[this.astPtr];
dec.bodyEnd = endPosition;
dec.declarationSourceEnd = flushCommentsDefinedPriorTo(endStatementPosition);
}
protected void consumeInterTypeMethodDeclaration(boolean isNotAbstract) {
consumeMethodDeclaration(isNotAbstract);
}
protected void consumeInterTypeMethodHeader() {
consumeMethodHeader();
}
protected void consumeInterTypeConstructorDeclaration() {
consumeMethodDeclaration(true);
}
protected void consumeInterTypeConstructorHeader() {
consumeMethodHeader();
}
protected void consumeInterTypeMethodHeaderName(boolean hasMethodTypeParameters, boolean hasGenericTypeParameters) {
//InterTypeMethodHeaderName ::= Modifiersopt Type OnType '.' JavaIdentifier '('
this.display();
MethodDeclaration md = declarationFactory.createInterTypeMethodDeclaration(
this.compilationUnit.compilationResult);
//identifier
char[] name = identifierStack[identifierPtr];
long selectorSource = identifierPositionStack[identifierPtr--];
identifierLengthPtr--;
//onType
if (hasGenericTypeParameters) {
pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
//consumeClassOrInterfaceName();
} else {
consumeClassOrInterfaceName();
}
TypeReference onType = getTypeReference(0);
//type
md.returnType = getTypeReference(intStack[intPtr--]);
// consume method type parameters
if (hasMethodTypeParameters) {
int tp_length = this.genericsLengthStack[this.genericsLengthPtr--];
this.genericsPtr -= tp_length;
System.arraycopy(this.genericsStack, this.genericsPtr + 1, md.typeParameters = new TypeParameter[tp_length], 0, tp_length);
}
declarationFactory.setOnType(md,onType);
//modifiers
md.declarationSourceStart = intStack[intPtr--];
declarationFactory.setDeclaredModifiers(md,intStack[intPtr--]);
//highlight starts at selector start
md.sourceStart = (int) (selectorSource >>> 32);
pushOnAstStack(md);
md.sourceEnd = lParenPos;
md.bodyStart = lParenPos + 1;
declarationFactory.setSelector(md,name);
listLength = 0;
// initialize listLength before reading parameters/throws
// Grab the javadoc
md.javadoc = this.javadoc;
this.javadoc = null;
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
md.annotations = new Annotation[length],
0,
length);
}
// recovery
if (currentElement != null) {
if (currentElement instanceof RecoveredType
//|| md.modifiers != 0
|| (scanner.getLineNumber(md.returnType.sourceStart)
== scanner.getLineNumber(md.sourceStart))) {
lastCheckPoint = md.bodyStart;
currentElement = currentElement.add(md, 0);
lastIgnoredToken = -1;
} else {
lastCheckPoint = md.sourceStart;
restartRecovery = true;
}
}
}
protected void consumeInterTypeConstructorHeaderName(boolean hasConstructorTypeParameters, boolean hasTargetTypeParameters) {
//InterTypeConstructorHeaderName ::= Modifiersopt Name '.' 'new' '('
this.display();
MethodDeclaration md = declarationFactory.createInterTypeConstructorDeclaration(
this.compilationUnit.compilationResult);
//identifier
// md.selector = identifierStack[identifierPtr];
// long selectorSource = identifierPositionStack[identifierPtr--];
//// identifierLengthPtr--;
//onType
if (!hasTargetTypeParameters) {
consumeClassOrInterfaceName();
}
TypeReference onType = getTypeReference(0);
declarationFactory.setOnType(md,onType);
println("got onType: " + onType);
this.display();
intPtr--; // pop new info
//type
md.returnType = TypeReference.baseTypeReference(T_void, 0); //getTypeReference(intStack[intPtr--]);
if (hasConstructorTypeParameters) {
// consume type parameters
int tp_length = this.genericsLengthStack[this.genericsLengthPtr--];
this.genericsPtr -= tp_length;
System.arraycopy(this.genericsStack, this.genericsPtr + 1, md.typeParameters = new TypeParameter[tp_length], 0, tp_length);
}
//modifiers
md.declarationSourceStart = intStack[intPtr--];
declarationFactory.setDeclaredModifiers(md,intStack[intPtr--]);
//md.modifiers = intStack[intPtr--];
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
md.annotations = new Annotation[length],
0,
length);
}
//highlight starts at selector start
//md.sourceStart = (int) (selectorSource >>> 32);
md.sourceStart = onType.sourceStart;
pushOnAstStack(md);
md.sourceEnd = lParenPos;
md.bodyStart = lParenPos + 1;
listLength = 0;
// initialize listLength before reading parameters/throws
declarationFactory.setSelector(md,
(new String(CharOperation.concatWith(onType.getTypeName(), '_')) + "_new").toCharArray());
// recovery
if (currentElement != null) {
if (currentElement instanceof RecoveredType
//|| md.modifiers != 0
//|| (scanner.getLineNumber(md.returnType.sourceStart)
// == scanner.getLineNumber(md.sourceStart))
) {
//lastCheckPoint = md.bodyStart;
currentElement = currentElement.add(md, 0);
lastIgnoredToken = -1;
} else {
lastCheckPoint = md.sourceStart;
restartRecovery = true;
}
}
}
//*********************************************************
protected void consumePseudoToken(String value) {
consumePseudoToken(value, 0, false);
}
protected void consumePseudoToken(
String value,
int popFromIntStack,
boolean isIdentifier) {
intPtr -= popFromIntStack;
int start = currentTokenStart;
int end = start + value.length() - 1;
ASTNode tok = declarationFactory.createPseudoToken(this, value, isIdentifier);
tok.sourceStart = start;
tok.sourceEnd = end;
pushOnAstStack(tok);
}
protected void consumePseudoTokenIdentifier() {
long pos = identifierPositionStack[identifierPtr];
int end = (int) pos;
int start = (int) (pos >>> 32);
char[] name = identifierStack[identifierPtr--];
identifierLengthPtr--;
ASTNode tok = declarationFactory.createPseudoToken(this, new String(name), true);
tok.sourceStart = start;
tok.sourceEnd = end;
pushOnAstStack(tok);
}
protected void consumePseudoTokenIf() {
//this.display();
Expression expr = (Expression) expressionStack[expressionPtr--];
expressionLengthPtr--;
println("expr: " + expr);
int start = intStack[intPtr--];
ASTNode tok = declarationFactory.createIfPseudoToken(this, expr);
tok.sourceStart = start;
tok.sourceEnd = this.rParenPos;
pushOnAstStack(tok);
}
protected void consumePseudoTokenLiteral() {
Literal literal = (Literal) expressionStack[expressionPtr--];
expressionLengthPtr--;
//System.out.println("literal: " + new String(literal.source()));
ASTNode tok = declarationFactory.createPseudoToken(this, new String(literal.source()), false);
declarationFactory.setLiteralKind(tok,"string");
tok.sourceStart = literal.sourceStart;
tok.sourceEnd = literal.sourceEnd;
pushOnAstStack(tok);
}
protected void consumePseudoTokenModifier() {
//int modifier = modifiers;
consumePseudoToken(Modifier.toString(modifiers), 0, true);
modifiers = ClassFileConstants.AccDefault;
}
protected void consumePseudoTokenPrimitiveType() {
TypeReference type = getTypeReference(0);
ASTNode tok = declarationFactory.createPseudoToken(this, type.toString(), true);
tok.sourceStart = type.sourceStart;
tok.sourceEnd = type.sourceEnd;
pushOnAstStack(tok);
}
protected void consumePseudoTokens() {
optimizedConcatNodeLists();
}
// This method is part of an automatic generation : do NOT edit-modify
protected void consumeRule(int act) {
switch ( act ) {
case 34 : if (DEBUG) { System.out.println("Type ::= PrimitiveType"); } //$NON-NLS-1$
consumePrimitiveType();
break;
case 48 : if (DEBUG) { System.out.println("ReferenceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$
consumeReferenceType();
break;
case 52 : if (DEBUG) { System.out.println("ClassOrInterface ::= Name"); } //$NON-NLS-1$
consumeClassOrInterfaceName();
break;
case 53 : if (DEBUG) { System.out.println("ClassOrInterface ::= GenericType DOT Name"); } //$NON-NLS-1$
consumeClassOrInterface();
break;
case 54 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface TypeArguments"); } //$NON-NLS-1$
consumeGenericType();
break;
case 55 : if (DEBUG) { System.out.println("ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name"); } //$NON-NLS-1$
consumeArrayTypeWithTypeArgumentsName();
break;
case 56 : if (DEBUG) { System.out.println("ArrayType ::= PrimitiveType Dims"); } //$NON-NLS-1$
consumePrimitiveArrayType();
break;
case 57 : if (DEBUG) { System.out.println("ArrayType ::= Name Dims"); } //$NON-NLS-1$
consumeNameArrayType();
break;
case 58 : if (DEBUG) { System.out.println("ArrayType ::= ArrayTypeWithTypeArgumentsName Dims"); } //$NON-NLS-1$
consumeGenericTypeNameArrayType();
break;
case 59 : if (DEBUG) { System.out.println("ArrayType ::= GenericType Dims"); } //$NON-NLS-1$
consumeGenericTypeArrayType();
break;
case 75 : if (DEBUG) { System.out.println("AjQualifiedName ::= AjName DOT SimpleNameOrAj"); } //$NON-NLS-1$
consumeQualifiedName();
break;
case 79 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT JavaIdentifier"); } //$NON-NLS-1$
consumeQualifiedName();
break;
case 80 : if (DEBUG) { System.out.println("CompilationUnit ::= EnterCompilationUnit..."); } //$NON-NLS-1$
consumeCompilationUnit();
break;
case 81 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration"); } //$NON-NLS-1$
consumeInternalCompilationUnit();
break;
case 82 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$
consumeInternalCompilationUnit();
break;
case 83 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$
consumeInternalCompilationUnitWithTypes();
break;
case 84 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$
consumeInternalCompilationUnitWithTypes();
break;
case 85 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$
consumeInternalCompilationUnit();
break;
case 86 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= TypeDeclarations"); } //$NON-NLS-1$
consumeInternalCompilationUnitWithTypes();
break;
case 87 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$
consumeInternalCompilationUnitWithTypes();
break;
case 88 : if (DEBUG) { System.out.println("InternalCompilationUnit ::="); } //$NON-NLS-1$
consumeEmptyInternalCompilationUnit();
break;
case 89 : if (DEBUG) { System.out.println("ReduceImports ::="); } //$NON-NLS-1$
consumeReduceImports();
break;
case 90 : if (DEBUG) { System.out.println("EnterCompilationUnit ::="); } //$NON-NLS-1$
consumeEnterCompilationUnit();
break;
case 106 : if (DEBUG) { System.out.println("CatchHeader ::= catch LPAREN FormalParameter RPAREN..."); } //$NON-NLS-1$
consumeCatchHeader();
break;
case 108 : if (DEBUG) { System.out.println("ImportDeclarations ::= ImportDeclarations..."); } //$NON-NLS-1$
consumeImportDeclarations();
break;
case 110 : if (DEBUG) { System.out.println("TypeDeclarations ::= TypeDeclarations TypeDeclaration"); } //$NON-NLS-1$
consumeTypeDeclarations();
break;
case 111 : if (DEBUG) { System.out.println("PackageDeclaration ::= PackageDeclarationName SEMICOLON"); } //$NON-NLS-1$
consumePackageDeclaration();
break;
case 112 : if (DEBUG) { System.out.println("PackageDeclarationName ::= Modifiers package..."); } //$NON-NLS-1$
consumePackageDeclarationNameWithModifiers();
break;
case 113 : if (DEBUG) { System.out.println("PackageDeclarationName ::= PackageComment package Name"); } //$NON-NLS-1$
consumePackageDeclarationName();
break;
case 114 : if (DEBUG) { System.out.println("PackageComment ::="); } //$NON-NLS-1$
consumePackageComment();
break;
case 119 : if (DEBUG) { System.out.println("SingleTypeImportDeclaration ::=..."); } //$NON-NLS-1$
consumeImportDeclaration();
break;
case 120 : if (DEBUG) { System.out.println("SingleTypeImportDeclarationName ::= import Name"); } //$NON-NLS-1$
consumeSingleTypeImportDeclarationName();
break;
case 121 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$
consumeImportDeclaration();
break;
case 122 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclarationName ::= import Name DOT"); } //$NON-NLS-1$
consumeTypeImportOnDemandDeclarationName();
break;
case 125 : if (DEBUG) { System.out.println("TypeDeclaration ::= SEMICOLON"); } //$NON-NLS-1$
consumeEmptyTypeDeclaration();
break;
case 129 : if (DEBUG) { System.out.println("Modifiers ::= Modifiers Modifier"); } //$NON-NLS-1$
consumeModifiers2();
break;
case 142 : if (DEBUG) { System.out.println("Modifier ::= Annotation"); } //$NON-NLS-1$
consumeAnnotationAsModifier();
break;
case 155 : if (DEBUG) { System.out.println("AspectDeclaration ::= AspectHeader AspectBody"); } //$NON-NLS-1$
consumeAspectDeclaration();
break;
case 156 : if (DEBUG) { System.out.println("AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt"); } //$NON-NLS-1$
consumeAspectHeader();
break;
case 159 : if (DEBUG) { System.out.println("AspectHeaderName ::= AspectHeaderName1 TypeParameters"); } //$NON-NLS-1$
consumeAspectHeaderNameWithTypeParameters(false);
break;
case 160 : if (DEBUG) { System.out.println("AspectHeaderName ::= AspectHeaderName2 TypeParameters"); } //$NON-NLS-1$
consumeAspectHeaderNameWithTypeParameters(true);
break;
case 161 : if (DEBUG) { System.out.println("AspectHeaderName1 ::= Modifiersopt aspect Identifier"); } //$NON-NLS-1$
consumeAspectHeaderName(false);
break;
case 162 : if (DEBUG) { System.out.println("AspectHeaderName2 ::= Modifiersopt privileged..."); } //$NON-NLS-1$
consumeAspectHeaderName(true);
break;
case 164 : if (DEBUG) { System.out.println("AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens"); } //$NON-NLS-1$
consumeAspectHeaderRest();
break;
case 165 : if (DEBUG) { System.out.println("AspectHeaderRestStart ::= Identifier"); } //$NON-NLS-1$
consumePseudoTokenIdentifier();
break;
case 168 : if (DEBUG) { System.out.println("AspectBodyDeclarations ::= AspectBodyDeclarations..."); } //$NON-NLS-1$
consumeClassBodyDeclarations();
break;
case 169 : if (DEBUG) { System.out.println("AspectBodyDeclarationsopt ::="); } //$NON-NLS-1$
consumeEmptyClassBodyDeclarationsopt();
break;
case 170 : if (DEBUG) { System.out.println("AspectBodyDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$
consumeClassBodyDeclarationsopt();
break;
case 171 : if (DEBUG) { System.out.println("AspectBodyDeclaration ::=..."); } //$NON-NLS-1$
consumeClassBodyDeclarationInAspect();
break;
case 175 : if (DEBUG) { System.out.println("ClassBodyDeclarationNoAroundMethod ::= Diet..."); } //$NON-NLS-1$
consumeClassBodyDeclaration();
break;
case 185 : if (DEBUG) { System.out.println("ClassMemberDeclarationNoAroundMethod ::= SEMICOLON"); } //$NON-NLS-1$
consumeEmptyTypeDeclaration();
break;
case 187 : if (DEBUG) { System.out.println("MethodDeclarationNoAround ::= MethodHeaderNoAround..."); } //$NON-NLS-1$
// set to true to consume a method with a body
consumeMethodDeclaration(true);
break;
case 188 : if (DEBUG) { System.out.println("AbstractMethodDeclarationNoAround ::=..."); } //$NON-NLS-1$
// set to false to consume a method without body
consumeMethodDeclaration(false);
break;
case 189 : if (DEBUG) { System.out.println("MethodHeaderNoAround ::= MethodHeaderNameNoAround..."); } //$NON-NLS-1$
consumeMethodHeader();
break;
case 190 : if (DEBUG) { System.out.println("MethodHeaderNameNoAround ::= Modifiersopt..."); } //$NON-NLS-1$
consumeMethodHeaderNameWithTypeParameters(false);
break;
case 191 : if (DEBUG) { System.out.println("MethodHeaderNameNoAround ::= Modifiersopt Type..."); } //$NON-NLS-1$
consumeMethodHeaderName(false);
break;
case 192 : if (DEBUG) { System.out.println("PointcutDeclaration ::= PointcutHeader..."); } //$NON-NLS-1$
consumeEmptyPointcutDeclaration();
break;
case 193 : if (DEBUG) { System.out.println("PointcutDeclaration ::= PointcutHeader..."); } //$NON-NLS-1$
consumePointcutDeclaration();
break;
case 194 : if (DEBUG) { System.out.println("PointcutHeader ::= Modifiersopt pointcut JavaIdentifier"); } //$NON-NLS-1$
consumePointcutHeader();
break;
case 197 : if (DEBUG) { System.out.println("AroundDeclaration ::= AroundHeader MethodBody"); } //$NON-NLS-1$
consumeAroundDeclaration();
break;
case 198 : if (DEBUG) { System.out.println("AroundHeader ::= AroundHeaderName..."); } //$NON-NLS-1$
consumeAroundHeader();
break;
case 199 : if (DEBUG) { System.out.println("AroundHeaderName ::= Modifiersopt Type around LPAREN"); } //$NON-NLS-1$
consumeAroundHeaderName();
break;
case 200 : if (DEBUG) { System.out.println("AroundHeaderName ::= Modifiersopt around LPAREN"); } //$NON-NLS-1$
consumeAroundHeaderNameMissingReturnType();
break;
case 201 : if (DEBUG) { System.out.println("BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody"); } //$NON-NLS-1$
consumeBasicAdviceDeclaration();
break;
case 204 : if (DEBUG) { System.out.println("BeforeAdviceHeader ::= BeforeAdviceHeaderName..."); } //$NON-NLS-1$
consumeBasicAdviceHeader();
break;
case 205 : if (DEBUG) { System.out.println("AfterAdviceHeader ::= AfterAdviceHeaderName..."); } //$NON-NLS-1$
consumeBasicAdviceHeader();
break;
case 206 : if (DEBUG) { System.out.println("BeforeAdviceHeaderName ::= Modifiersopt before LPAREN"); } //$NON-NLS-1$
consumeBasicAdviceHeaderName(false);
break;
case 207 : if (DEBUG) { System.out.println("AfterAdviceHeaderName ::= Modifiersopt after LPAREN"); } //$NON-NLS-1$
consumeBasicAdviceHeaderName(true);
break;
case 208 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier LPAREN FormalParameter..."); } //$NON-NLS-1$
consumeExtraParameterWithFormal();
break;
case 209 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier LPAREN RPAREN"); } //$NON-NLS-1$
consumeExtraParameterNoFormal();
break;
case 210 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier"); } //$NON-NLS-1$
consumeExtraParameterNoFormal();
break;
case 213 : if (DEBUG) { System.out.println("OnType ::= OnType DOT JavaIdentifier"); } //$NON-NLS-1$
consumeQualifiedName();
break;
case 218 : if (DEBUG) { System.out.println("InterTypeMethodDeclaration ::= InterTypeMethodHeader..."); } //$NON-NLS-1$
// set to true to consume a method with a body
consumeInterTypeMethodDeclaration(true);
break;
case 219 : if (DEBUG) { System.out.println("InterTypeMethodHeader ::= InterTypeMethodHeaderName..."); } //$NON-NLS-1$
consumeInterTypeMethodHeader();
break;
case 220 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); } //$NON-NLS-1$
consumeInterTypeMethodHeaderName(false,false);
break;
case 221 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); } //$NON-NLS-1$
consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("*");
break;
case 222 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); } //$NON-NLS-1$
consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("+");
break;
case 223 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); } //$NON-NLS-1$
consumeInterTypeMethodHeaderName(false,true);
break;
case 224 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$
consumeInterTypeMethodHeaderName(true,false);
break;
case 225 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$
consumeInterTypeMethodHeaderName(true,true);
break;
case 226 : if (DEBUG) { System.out.println("AbstractInterTypeMethodDeclaration ::=..."); } //$NON-NLS-1$
// set to false to consume a method without body
consumeInterTypeMethodDeclaration(false);
break;
case 227 : if (DEBUG) { System.out.println("TypeParametersAsReference ::= TypeParameters"); } //$NON-NLS-1$
convertTypeParametersToSingleTypeReferences();
break;
case 228 : if (DEBUG) { System.out.println("InterTypeConstructorDeclaration ::=..."); } //$NON-NLS-1$
// set to true to consume a method with a body
consumeInterTypeConstructorDeclaration();
break;
case 229 : if (DEBUG) { System.out.println("InterTypeConstructorHeader ::=..."); } //$NON-NLS-1$
consumeInterTypeConstructorHeader();
break;
case 230 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); } //$NON-NLS-1$
consumeInterTypeConstructorHeaderName(false,false);
break;
case 231 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); } //$NON-NLS-1$
consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("*");
break;
case 232 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); } //$NON-NLS-1$
consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("+");
break;
case 233 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$
consumeInterTypeConstructorHeaderName(true,false);
break;
case 234 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$
consumeInterTypeConstructorHeaderName(false,true);
break;
case 235 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$
consumeInterTypeConstructorHeaderName(true,true);
break;
case 236 : if (DEBUG) { System.out.println("InterTypeFieldDeclaration ::= InterTypeFieldHeader..."); } //$NON-NLS-1$
consumeInterTypeFieldDeclaration();
break;
case 237 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT"); } //$NON-NLS-1$
consumeInterTypeFieldHeader(false);
break;
case 238 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT"); } //$NON-NLS-1$
consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("*");
break;
case 239 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS"); } //$NON-NLS-1$
consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("+");
break;
case 240 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType..."); } //$NON-NLS-1$
consumeInterTypeFieldHeader(true);
break;
case 241 : if (DEBUG) { System.out.println("InterTypeFieldBody ::="); } //$NON-NLS-1$
consumeExitITDVariableWithoutInitializer();
break;
case 242 : if (DEBUG) { System.out.println("InterTypeFieldBody ::= EQUAL ForceNoDiet..."); } //$NON-NLS-1$
consumeExitITDVariableWithInitializer();
break;
case 244 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareHeader PseudoTokens..."); } //$NON-NLS-1$
consumeDeclareDeclaration();
break;
case 245 : if (DEBUG) { System.out.println("DeclareHeader ::= declare Identifier COLON"); } //$NON-NLS-1$
consumeDeclareHeader();
break;
case 246 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); } //$NON-NLS-1$
consumeDeclareAnnotation(' ');
break;
case 247 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); } //$NON-NLS-1$
consumeDeclareAnnotation('+');
break;
case 248 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); } //$NON-NLS-1$
consumeDeclareAnnotation('-');
break;
case 251 : if (DEBUG) { System.out.println("DeclareAnnotationHeader ::= declare AT Identifier COLON"); } //$NON-NLS-1$
consumeDeclareAnnotationHeader();
break;
case 254 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens ColonPseudoToken"); } //$NON-NLS-1$
consumePseudoTokens();
break;
case 255 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens PseudoToken"); } //$NON-NLS-1$
consumePseudoTokens();
break;
case 257 : if (DEBUG) { System.out.println("PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken"); } //$NON-NLS-1$
consumePseudoTokens();
break;
case 258 : if (DEBUG) { System.out.println("ColonPseudoToken ::= COLON"); } //$NON-NLS-1$
consumePseudoToken(":");
break;
case 259 : if (DEBUG) { System.out.println("PseudoToken ::= JavaIdentifier"); } //$NON-NLS-1$
consumePseudoTokenIdentifier();
break;
case 260 : if (DEBUG) { System.out.println("PseudoToken ::= LPAREN"); } //$NON-NLS-1$
consumePseudoToken("(");
break;
case 261 : if (DEBUG) { System.out.println("PseudoToken ::= RPAREN"); } //$NON-NLS-1$
consumePseudoToken(")");
break;
case 262 : if (DEBUG) { System.out.println("PseudoToken ::= DOT"); } //$NON-NLS-1$
consumePseudoToken(".");
break;
case 263 : if (DEBUG) { System.out.println("PseudoToken ::= MULTIPLY"); } //$NON-NLS-1$
consumePseudoToken("*");
break;
case 264 : if (DEBUG) { System.out.println("PseudoToken ::= PLUS"); } //$NON-NLS-1$
consumePseudoToken("+");
break;
case 265 : if (DEBUG) { System.out.println("PseudoToken ::= EQUAL"); } //$NON-NLS-1$
consumePseudoToken("=");
break;
case 266 : if (DEBUG) { System.out.println("PseudoToken ::= AND_AND"); } //$NON-NLS-1$
consumePseudoToken("&&");
break;
case 267 : if (DEBUG) { System.out.println("PseudoToken ::= OR_OR"); } //$NON-NLS-1$
consumePseudoToken("||");
break;
case 268 : if (DEBUG) { System.out.println("PseudoToken ::= NOT"); } //$NON-NLS-1$
consumePseudoToken("!");
break;
case 269 : if (DEBUG) { System.out.println("PseudoToken ::= COMMA"); } //$NON-NLS-1$
consumePseudoToken(",");
break;
case 270 : if (DEBUG) { System.out.println("PseudoToken ::= LBRACKET"); } //$NON-NLS-1$
consumePseudoToken("[");
break;
case 271 : if (DEBUG) { System.out.println("PseudoToken ::= RBRACKET"); } //$NON-NLS-1$
consumePseudoToken("]");
break;
case 272 : if (DEBUG) { System.out.println("PseudoToken ::= AT"); } //$NON-NLS-1$
consumePseudoToken("@");
break;
case 273 : if (DEBUG) { System.out.println("PseudoToken ::= ELLIPSIS"); } //$NON-NLS-1$
consumePseudoToken("...");
break;
case 274 : if (DEBUG) { System.out.println("PseudoToken ::= QUESTION"); } //$NON-NLS-1$
consumePseudoToken("?");
break;
case 275 : if (DEBUG) { System.out.println("PseudoToken ::= LESS"); } //$NON-NLS-1$
consumePseudoToken("<");
break;
case 276 : if (DEBUG) { System.out.println("PseudoToken ::= GREATER"); } //$NON-NLS-1$
consumePseudoToken(">");
break;
case 277 : if (DEBUG) { System.out.println("PseudoToken ::= RIGHT_SHIFT"); } //$NON-NLS-1$
consumePseudoToken(">>");
break;
case 278 : if (DEBUG) { System.out.println("PseudoToken ::= UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$
consumePseudoToken(">>>");
break;
case 279 : if (DEBUG) { System.out.println("PseudoToken ::= AND"); } //$NON-NLS-1$
consumePseudoToken("&");
break;
case 280 : if (DEBUG) { System.out.println("PseudoToken ::= PrimitiveType"); } //$NON-NLS-1$
consumePseudoTokenPrimitiveType();
break;
case 281 : if (DEBUG) { System.out.println("PseudoToken ::= SimpleModifier"); } //$NON-NLS-1$
consumePseudoTokenModifier();
break;
case 282 : if (DEBUG) { System.out.println("PseudoToken ::= Literal"); } //$NON-NLS-1$
consumePseudoTokenLiteral();
break;
case 283 : if (DEBUG) { System.out.println("PseudoToken ::= this"); } //$NON-NLS-1$
consumePseudoToken("this", 1, true);
break;
case 284 : if (DEBUG) { System.out.println("PseudoToken ::= super"); } //$NON-NLS-1$
consumePseudoToken("super", 1, true);
break;
case 285 : if (DEBUG) { System.out.println("PseudoToken ::= if LPAREN Expression RPAREN"); } //$NON-NLS-1$
consumePseudoTokenIf();
break;
case 286 : if (DEBUG) { System.out.println("PseudoToken ::= assert"); } //$NON-NLS-1$
consumePseudoToken("assert", 1, true);
break;
case 287 : if (DEBUG) { System.out.println("PseudoToken ::= import"); } //$NON-NLS-1$
consumePseudoToken("import", 1, true);
break;
case 288 : if (DEBUG) { System.out.println("PseudoToken ::= package"); } //$NON-NLS-1$
consumePseudoToken("package", 1, true);
break;
case 289 : if (DEBUG) { System.out.println("PseudoToken ::= throw"); } //$NON-NLS-1$
consumePseudoToken("throw", 1, true);
break;
case 290 : if (DEBUG) { System.out.println("PseudoToken ::= new"); } //$NON-NLS-1$
consumePseudoToken("new", 1, true);
break;
case 291 : if (DEBUG) { System.out.println("PseudoToken ::= do"); } //$NON-NLS-1$
consumePseudoToken("do", 1, true);
break;
case 292 : if (DEBUG) { System.out.println("PseudoToken ::= for"); } //$NON-NLS-1$
consumePseudoToken("for", 1, true);
break;
case 293 : if (DEBUG) { System.out.println("PseudoToken ::= switch"); } //$NON-NLS-1$
consumePseudoToken("switch", 1, true);
break;
case 294 : if (DEBUG) { System.out.println("PseudoToken ::= try"); } //$NON-NLS-1$
consumePseudoToken("try", 1, true);
break;
case 295 : if (DEBUG) { System.out.println("PseudoToken ::= while"); } //$NON-NLS-1$
consumePseudoToken("while", 1, true);
break;
case 296 : if (DEBUG) { System.out.println("PseudoToken ::= break"); } //$NON-NLS-1$
consumePseudoToken("break", 1, true);
break;
case 297 : if (DEBUG) { System.out.println("PseudoToken ::= continue"); } //$NON-NLS-1$
consumePseudoToken("continue", 1, true);
break;
case 298 : if (DEBUG) { System.out.println("PseudoToken ::= return"); } //$NON-NLS-1$
consumePseudoToken("return", 1, true);
break;
case 299 : if (DEBUG) { System.out.println("PseudoToken ::= case"); } //$NON-NLS-1$
consumePseudoToken("case", 1, true);
break;
case 300 : if (DEBUG) { System.out.println("PseudoToken ::= catch"); } //$NON-NLS-1$
consumePseudoToken("catch", 0, true);
break;
case 301 : if (DEBUG) { System.out.println("PseudoToken ::= instanceof"); } //$NON-NLS-1$
consumePseudoToken("instanceof", 0, true);
break;
case 302 : if (DEBUG) { System.out.println("PseudoToken ::= else"); } //$NON-NLS-1$
consumePseudoToken("else", 0, true);
break;
case 303 : if (DEBUG) { System.out.println("PseudoToken ::= extends"); } //$NON-NLS-1$
consumePseudoToken("extends", 0, true);
break;
case 304 : if (DEBUG) { System.out.println("PseudoToken ::= finally"); } //$NON-NLS-1$
consumePseudoToken("finally", 0, true);
break;
case 305 : if (DEBUG) { System.out.println("PseudoToken ::= implements"); } //$NON-NLS-1$
consumePseudoToken("implements", 0, true);
break;
case 306 : if (DEBUG) { System.out.println("PseudoToken ::= throws"); } //$NON-NLS-1$
consumePseudoToken("throws", 0, true);
break;
case 307 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); } //$NON-NLS-1$
consumeClassDeclaration();
break;
case 308 : if (DEBUG) { System.out.println("IntertypeClassDeclaration ::= IntertypeClassHeader..."); } //$NON-NLS-1$
consumeIntertypeClassDeclaration();
break;
case 309 : if (DEBUG) { System.out.println("IntertypeClassHeader ::= IntertypeClassHeaderName..."); } //$NON-NLS-1$
consumeIntertypeClassHeader();
break;
case 310 : if (DEBUG) { System.out.println("IntertypeClassHeaderName ::= IntertypeClassHeaderName1"); } //$NON-NLS-1$
consumeIntertypeTypeHeaderNameWithTypeParameters();
break;
case 312 : if (DEBUG) { System.out.println("IntertypeClassHeaderName1 ::= Modifiersopt class OnType"); } //$NON-NLS-1$
consumeIntertypeClassHeaderName(false);
break;
case 313 : if (DEBUG) { System.out.println("InterTypeClassHeaderName1 ::= Modifiersopt class OnType"); } //$NON-NLS-1$
consumeIntertypeClassHeaderName(true);
break;
case 314 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt"); } //$NON-NLS-1$
consumeClassHeader();
break;
case 315 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); } //$NON-NLS-1$
consumeTypeHeaderNameWithTypeParameters();
break;
case 317 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class JavaIdentifier"); } //$NON-NLS-1$
consumeClassHeaderName1();
break;
case 318 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); } //$NON-NLS-1$
consumeClassHeaderExtends();
break;
case 319 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); } //$NON-NLS-1$
consumeClassHeaderImplements();
break;
case 321 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); } //$NON-NLS-1$
consumeInterfaceTypeList();
break;
case 322 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$
consumeInterfaceType();
break;
case 325 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); } //$NON-NLS-1$
consumeClassBodyDeclarations();
break;
case 329 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod Block"); } //$NON-NLS-1$
consumeClassBodyDeclaration();
break;
case 330 : if (DEBUG) { System.out.println("Diet ::="); } //$NON-NLS-1$
consumeDiet();
break;
case 331 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod Block"); } //$NON-NLS-1$
consumeClassBodyDeclaration();
break;
case 338 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$
consumeEmptyTypeDeclaration();
break;
case 341 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); } //$NON-NLS-1$
consumeFieldDeclaration();
break;
case 343 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); } //$NON-NLS-1$
consumeVariableDeclarators();
break;
case 346 : if (DEBUG) { System.out.println("EnterVariable ::="); } //$NON-NLS-1$
consumeEnterVariable();
break;
case 347 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); } //$NON-NLS-1$
consumeExitVariableWithInitialization();
break;
case 348 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); } //$NON-NLS-1$
consumeExitVariableWithoutInitialization();
break;
case 349 : if (DEBUG) { System.out.println("ForceNoDiet ::="); } //$NON-NLS-1$
consumeForceNoDiet();
break;
case 350 : if (DEBUG) { System.out.println("RestoreDiet ::="); } //$NON-NLS-1$
consumeRestoreDiet();
break;
case 355 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$
// set to true to consume a method with a body
consumeMethodDeclaration(true);
break;
case 356 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); } //$NON-NLS-1$
// set to false to consume a method without body
consumeMethodDeclaration(false);
break;
case 357 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName..."); } //$NON-NLS-1$
consumeMethodHeader();
break;
case 358 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type"); } //$NON-NLS-1$
consumeMethodHeaderNameWithTypeParameters(false);
break;
case 359 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type JavaIdentifier"); } //$NON-NLS-1$
consumeMethodHeaderName(false);
break;
case 360 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$
consumeMethodHeaderRightParen();
break;
case 361 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); } //$NON-NLS-1$
consumeMethodHeaderExtendedDims();
break;
case 362 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); } //$NON-NLS-1$
consumeMethodHeaderThrowsClause();
break;
case 363 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); } //$NON-NLS-1$
consumeConstructorHeader();
break;
case 364 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters"); } //$NON-NLS-1$
consumeConstructorHeaderNameWithTypeParameters();
break;
case 365 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier..."); } //$NON-NLS-1$
consumeConstructorHeaderName();
break;
case 366 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt aspect LPAREN"); } //$NON-NLS-1$
consumeConstructorHeaderName();
break;
case 368 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); } //$NON-NLS-1$
consumeFormalParameterList();
break;
case 369 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$
consumeFormalParameter(false);
break;
case 370 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type ELLIPSIS..."); } //$NON-NLS-1$
consumeFormalParameter(true);
break;
case 372 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); } //$NON-NLS-1$
consumeClassTypeList();
break;
case 373 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); } //$NON-NLS-1$
consumeClassTypeElt();
break;
case 374 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt"); } //$NON-NLS-1$
consumeMethodBody();
break;
case 375 : if (DEBUG) { System.out.println("NestedMethod ::="); } //$NON-NLS-1$
consumeNestedMethod();
break;
case 376 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); } //$NON-NLS-1$
consumeStaticInitializer();
break;
case 377 : if (DEBUG) { System.out.println("StaticOnly ::= static"); } //$NON-NLS-1$
consumeStaticOnly();
break;
case 378 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); } //$NON-NLS-1$
consumeConstructorDeclaration() ;
break;
case 379 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); } //$NON-NLS-1$
consumeInvalidConstructorDeclaration() ;
break;
case 380 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocation(0, THIS_CALL);
break;
case 381 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL);
break;
case 382 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocation(0,SUPER_CALL);
break;
case 383 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL);
break;
case 384 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocation(1, SUPER_CALL);
break;
case 385 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL);
break;
case 386 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); } //$NON-NLS-1$
consumeExplicitConstructorInvocation(2, SUPER_CALL);
break;
case 387 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL);
break;
case 388 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocation(1, THIS_CALL);
break;
case 389 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL);
break;
case 390 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); } //$NON-NLS-1$
consumeExplicitConstructorInvocation(2, THIS_CALL);
break;
case 391 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$
consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL);
break;
case 392 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); } //$NON-NLS-1$
consumeInterfaceDeclaration();
break;
case 393 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); } //$NON-NLS-1$
consumeInterfaceHeader();
break;
case 394 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); } //$NON-NLS-1$
consumeTypeHeaderNameWithTypeParameters();
break;
case 396 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); } //$NON-NLS-1$
consumeInterfaceHeaderName1();
break;
case 397 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); } //$NON-NLS-1$
consumeInterfaceHeaderExtends();
break;
case 400 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); } //$NON-NLS-1$
consumeInterfaceMemberDeclarations();
break;
case 401 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$
consumeEmptyTypeDeclaration();
break;
case 403 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$
consumeInvalidMethodDeclaration();
break;
case 404 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$
consumeInvalidConstructorDeclaration(true);
break;
case 405 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$
consumeInvalidConstructorDeclaration(false);
break;
case 413 : if (DEBUG) { System.out.println("PushLeftBrace ::="); } //$NON-NLS-1$
consumePushLeftBrace();
break;
case 414 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); } //$NON-NLS-1$
consumeEmptyArrayInitializer();
break;
case 415 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$
consumeArrayInitializer();
break;
case 416 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$
consumeArrayInitializer();
break;
case 418 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); } //$NON-NLS-1$
consumeVariableInitializers();
break;
case 419 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); } //$NON-NLS-1$
consumeBlock();
break;
case 420 : if (DEBUG) { System.out.println("OpenBlock ::="); } //$NON-NLS-1$
consumeOpenBlock() ;
break;
case 422 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); } //$NON-NLS-1$
consumeBlockStatements() ;
break;
case 426 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); } //$NON-NLS-1$
consumeInvalidInterfaceDeclaration();
break;
case 427 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); } //$NON-NLS-1$
consumeInvalidAnnotationTypeDeclaration();
break;
case 428 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); } //$NON-NLS-1$
consumeInvalidEnumDeclaration();
break;
case 429 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); } //$NON-NLS-1$
consumeLocalVariableDeclarationStatement();
break;
case 430 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); } //$NON-NLS-1$
consumeLocalVariableDeclaration();
break;
case 431 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); } //$NON-NLS-1$
consumeLocalVariableDeclaration();
break;
case 432 : if (DEBUG) { System.out.println("PushModifiers ::="); } //$NON-NLS-1$
consumePushModifiers();
break;
case 433 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); } //$NON-NLS-1$
consumePushModifiersForHeader();
break;
case 434 : if (DEBUG) { System.out.println("PushRealModifiers ::="); } //$NON-NLS-1$
consumePushRealModifiers();
break;
case 460 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); } //$NON-NLS-1$
consumeEmptyStatement();
break;
case 461 : if (DEBUG) { System.out.println("LabeledStatement ::= Label COLON Statement"); } //$NON-NLS-1$
consumeStatementLabel() ;
break;
case 462 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= Label COLON..."); } //$NON-NLS-1$
consumeStatementLabel() ;
break;
case 463 : if (DEBUG) { System.out.println("Label ::= JavaIdentifier"); } //$NON-NLS-1$
consumeLabel() ;
break;
case 464 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); } //$NON-NLS-1$
consumeExpressionStatement();
break;
case 473 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$
consumeStatementIfNoElse();
break;
case 474 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$
consumeStatementIfWithElse();
break;
case 475 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression"); } //$NON-NLS-1$
consumeStatementIfWithElse();
break;
case 476 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$
consumeStatementSwitch() ;
break;
case 477 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); } //$NON-NLS-1$
consumeEmptySwitchBlock() ;
break;
case 480 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); } //$NON-NLS-1$
consumeSwitchBlock() ;
break;
case 482 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); } //$NON-NLS-1$
consumeSwitchBlockStatements() ;
break;
case 483 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); } //$NON-NLS-1$
consumeSwitchBlockStatement() ;
break;
case 485 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); } //$NON-NLS-1$
consumeSwitchLabels() ;
break;
case 486 : if (DEBUG) { System.out.println("SwitchLabel ::= case ConstantExpression COLON"); } //$NON-NLS-1$
consumeCaseLabel();
break;
case 487 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); } //$NON-NLS-1$
consumeDefaultLabel();
break;
case 488 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); } //$NON-NLS-1$
consumeStatementWhile() ;
break;
case 489 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); } //$NON-NLS-1$
consumeStatementWhile() ;
break;
case 490 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); } //$NON-NLS-1$
consumeStatementDo() ;
break;
case 491 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); } //$NON-NLS-1$
consumeStatementFor() ;
break;
case 492 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); } //$NON-NLS-1$
consumeStatementFor() ;
break;
case 493 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); } //$NON-NLS-1$
consumeForInit() ;
break;
case 497 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); } //$NON-NLS-1$
consumeStatementExpressionList() ;
break;
case 498 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); } //$NON-NLS-1$
consumeSimpleAssertStatement() ;
break;
case 499 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); } //$NON-NLS-1$
consumeAssertStatement() ;
break;
case 500 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); } //$NON-NLS-1$
consumeStatementBreak() ;
break;
case 501 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); } //$NON-NLS-1$
consumeStatementBreakWithLabel() ;
break;
case 502 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); } //$NON-NLS-1$
consumeStatementContinue() ;
break;
case 503 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); } //$NON-NLS-1$
consumeStatementContinueWithLabel() ;
break;
case 504 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); } //$NON-NLS-1$
consumeStatementReturn() ;
break;
case 505 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); } //$NON-NLS-1$
consumeStatementThrow();
break;
case 506 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); } //$NON-NLS-1$
consumeStatementSynchronized();
break;
case 507 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); } //$NON-NLS-1$
consumeOnlySynchronized();
break;
case 508 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); } //$NON-NLS-1$
consumeStatementTry(false);
break;
case 509 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); } //$NON-NLS-1$
consumeStatementTry(true);
break;
case 511 : if (DEBUG) { System.out.println("ExitTryBlock ::="); } //$NON-NLS-1$
consumeExitTryBlock();
break;
case 513 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); } //$NON-NLS-1$
consumeCatches();
break;
case 514 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN FormalParameter RPAREN..."); } //$NON-NLS-1$
consumeStatementCatch() ;
break;
case 516 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); } //$NON-NLS-1$
consumeLeftParen();
break;
case 517 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); } //$NON-NLS-1$
consumeRightParen();
break;
case 522 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); } //$NON-NLS-1$
consumePrimaryNoNewArrayThis();
break;
case 523 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); } //$NON-NLS-1$
consumePrimaryNoNewArray();
break;
case 524 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); } //$NON-NLS-1$
consumePrimaryNoNewArrayWithName();
break;
case 527 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); } //$NON-NLS-1$
consumePrimaryNoNewArrayNameThis();
break;
case 528 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT super"); } //$NON-NLS-1$
consumePrimaryNoNewArrayNameSuper();
break;
case 529 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); } //$NON-NLS-1$
consumePrimaryNoNewArrayName();
break;
case 530 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); } //$NON-NLS-1$
consumePrimaryNoNewArrayArrayType();
break;
case 531 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); } //$NON-NLS-1$
consumePrimaryNoNewArrayPrimitiveArrayType();
break;
case 532 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); } //$NON-NLS-1$
consumePrimaryNoNewArrayPrimitiveType();
break;
case 535 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); } //$NON-NLS-1$
consumeAllocationHeader();
break;
case 536 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); } //$NON-NLS-1$
consumeClassInstanceCreationExpressionWithTypeArguments();
break;
case 537 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType..."); } //$NON-NLS-1$
consumeClassInstanceCreationExpression();
break;
case 538 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$
consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ;
break;
case 539 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$
consumeClassInstanceCreationExpressionQualified() ;
break;
case 540 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$
consumeClassInstanceCreationExpressionQualified() ;
break;
case 541 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$
consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ;
break;
case 542 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT"); } //$NON-NLS-1$
consumeClassInstanceCreationExpressionName() ;
break;
case 543 : if (DEBUG) { System.out.println("ClassBodyopt ::="); } //$NON-NLS-1$
consumeClassBodyopt();
break;
case 545 : if (DEBUG) { System.out.println("EnterAnonymousClassBody ::="); } //$NON-NLS-1$
consumeEnterAnonymousClassBody();
break;
case 547 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); } //$NON-NLS-1$
consumeArgumentList();
break;
case 548 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); } //$NON-NLS-1$
consumeArrayCreationHeader();
break;
case 549 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); } //$NON-NLS-1$
consumeArrayCreationHeader();
break;
case 550 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$
consumeArrayCreationExpressionWithoutInitializer();
break;
case 551 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); } //$NON-NLS-1$
consumeArrayCreationExpressionWithInitializer();
break;
case 552 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$
consumeArrayCreationExpressionWithoutInitializer();
break;
case 553 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); } //$NON-NLS-1$
consumeArrayCreationExpressionWithInitializer();
break;
case 555 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); } //$NON-NLS-1$
consumeDimWithOrWithOutExprs();
break;
case 557 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= LBRACKET RBRACKET"); } //$NON-NLS-1$
consumeDimWithOrWithOutExpr();
break;
case 558 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); } //$NON-NLS-1$
consumeDims();
break;
case 561 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); } //$NON-NLS-1$
consumeOneDimLoop();
break;
case 562 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT JavaIdentifier"); } //$NON-NLS-1$
consumeFieldAccess(false);
break;
case 563 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT JavaIdentifier"); } //$NON-NLS-1$
consumeFieldAccess(true);
break;
case 564 : if (DEBUG) { System.out.println("MethodInvocation ::= NameOrAj LPAREN ArgumentListopt..."); } //$NON-NLS-1$
consumeMethodInvocationName();
break;
case 565 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); } //$NON-NLS-1$
consumeMethodInvocationNameWithTypeArguments();
break;
case 566 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); } //$NON-NLS-1$
consumeMethodInvocationPrimaryWithTypeArguments();
break;
case 567 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT JavaIdentifier LPAREN"); } //$NON-NLS-1$
consumeMethodInvocationPrimary();
break;
case 568 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); } //$NON-NLS-1$
consumeMethodInvocationSuperWithTypeArguments();
break;
case 569 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT JavaIdentifier LPAREN..."); } //$NON-NLS-1$
consumeMethodInvocationSuper();
break;
case 570 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); } //$NON-NLS-1$
consumeArrayAccess(true);
break;
case 571 : if (DEBUG) { System.out.println("ArrayAccess ::= AjName LBRACKET Expression RBRACKET"); } //$NON-NLS-1$
consumeArrayAccess(true);
break;
case 572 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression"); } //$NON-NLS-1$
consumeArrayAccess(false);
break;
case 573 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); } //$NON-NLS-1$
consumeArrayAccess(false);
break;
case 575 : if (DEBUG) { System.out.println("PostfixExpression ::= NameOrAj"); } //$NON-NLS-1$
consumePostfixExpression();
break;
case 578 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.PLUS,true);
break;
case 579 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.MINUS,true);
break;
case 580 : if (DEBUG) { System.out.println("PushPosition ::="); } //$NON-NLS-1$
consumePushPosition();
break;
case 583 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.PLUS);
break;
case 584 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.MINUS);
break;
case 586 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.PLUS,false);
break;
case 587 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.MINUS,false);
break;
case 589 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.TWIDDLE);
break;
case 590 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.NOT);
break;
case 592 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); } //$NON-NLS-1$
consumeCastExpressionWithPrimitiveType();
break;
case 593 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$
consumeCastExpressionWithGenericsArray();
break;
case 594 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$
consumeCastExpressionWithQualifiedGenericsArray();
break;
case 595 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); } //$NON-NLS-1$
consumeCastExpressionLL1();
break;
case 596 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims PushRPAREN..."); } //$NON-NLS-1$
consumeCastExpressionWithNameArray();
break;
case 597 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::=..."); } //$NON-NLS-1$
consumeOnlyTypeArgumentsForCastExpression();
break;
case 598 : if (DEBUG) { System.out.println("InsideCastExpression ::="); } //$NON-NLS-1$
consumeInsideCastExpression();
break;
case 599 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); } //$NON-NLS-1$
consumeInsideCastExpressionLL1();
break;
case 600 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); } //$NON-NLS-1$
consumeInsideCastExpressionWithQualifiedGenerics();
break;
case 602 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression"); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.MULTIPLY);
break;
case 603 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression"); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.DIVIDE);
break;
case 604 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression"); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.REMAINDER);
break;
case 606 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.PLUS);
break;
case 607 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.MINUS);
break;
case 609 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.LEFT_SHIFT);
break;
case 610 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.RIGHT_SHIFT);
break;
case 611 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT);
break;
case 613 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.LESS);
break;
case 614 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER"); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.GREATER);
break;
case 615 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.LESS_EQUAL);
break;
case 616 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.GREATER_EQUAL);
break;
case 618 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression..."); } //$NON-NLS-1$
consumeInstanceOfExpression();
break;
case 620 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL"); } //$NON-NLS-1$
consumeEqualityExpression(OperatorIds.EQUAL_EQUAL);
break;
case 621 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); } //$NON-NLS-1$
consumeEqualityExpression(OperatorIds.NOT_EQUAL);
break;
case 623 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.AND);
break;
case 625 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.XOR);
break;
case 627 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.OR);
break;
case 629 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression"); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.AND_AND);
break;
case 631 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.OR_OR);
break;
case 633 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$
consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ;
break;
case 636 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); } //$NON-NLS-1$
consumeAssignment();
break;
case 638 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); } //$NON-NLS-1$
ignoreExpressionAssignment();
break;
case 639 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(EQUAL);
break;
case 640 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(MULTIPLY);
break;
case 641 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(DIVIDE);
break;
case 642 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(REMAINDER);
break;
case 643 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(PLUS);
break;
case 644 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(MINUS);
break;
case 645 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(LEFT_SHIFT);
break;
case 646 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(RIGHT_SHIFT);
break;
case 647 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT);
break;
case 648 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(AND);
break;
case 649 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(XOR);
break;
case 650 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); } //$NON-NLS-1$
consumeAssignmentOperator(OR);
break;
case 654 : if (DEBUG) { System.out.println("Expressionopt ::="); } //$NON-NLS-1$
consumeEmptyExpression();
break;
case 659 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); } //$NON-NLS-1$
consumeEmptyClassBodyDeclarationsopt();
break;
case 660 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$
consumeClassBodyDeclarationsopt();
break;
case 661 : if (DEBUG) { System.out.println("Modifiersopt ::="); } //$NON-NLS-1$
consumeDefaultModifiers();
break;
case 662 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); } //$NON-NLS-1$
consumeModifiers();
break;
case 663 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); } //$NON-NLS-1$
consumeEmptyBlockStatementsopt();
break;
case 665 : if (DEBUG) { System.out.println("Dimsopt ::="); } //$NON-NLS-1$
consumeEmptyDimsopt();
break;
case 667 : if (DEBUG) { System.out.println("ArgumentListopt ::="); } //$NON-NLS-1$
consumeEmptyArgumentListopt();
break;
case 671 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); } //$NON-NLS-1$
consumeFormalParameterListopt();
break;
case 675 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); } //$NON-NLS-1$
consumeEmptyInterfaceMemberDeclarationsopt();
break;
case 676 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$
consumeInterfaceMemberDeclarationsopt();
break;
case 677 : if (DEBUG) { System.out.println("NestedType ::="); } //$NON-NLS-1$
consumeNestedType();
break;
case 678 : if (DEBUG) { System.out.println("ForInitopt ::="); } //$NON-NLS-1$
consumeEmptyForInitopt();
break;
case 680 : if (DEBUG) { System.out.println("ForUpdateopt ::="); } //$NON-NLS-1$
consumeEmptyForUpdateopt();
break;
case 684 : if (DEBUG) { System.out.println("Catchesopt ::="); } //$NON-NLS-1$
consumeEmptyCatchesopt();
break;
case 686 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); } //$NON-NLS-1$
consumeEnumDeclaration();
break;
case 687 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); } //$NON-NLS-1$
consumeEnumHeader();
break;
case 688 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier"); } //$NON-NLS-1$
consumeEnumHeaderName();
break;
case 689 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); } //$NON-NLS-1$
consumeEnumBodyNoConstants();
break;
case 690 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); } //$NON-NLS-1$
consumeEnumBodyNoConstants();
break;
case 691 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); } //$NON-NLS-1$
consumeEnumBodyWithConstants();
break;
case 692 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); } //$NON-NLS-1$
consumeEnumBodyWithConstants();
break;
case 694 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); } //$NON-NLS-1$
consumeEnumConstants();
break;
case 695 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$
consumeEnumConstantHeaderName();
break;
case 696 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); } //$NON-NLS-1$
consumeEnumConstantHeader();
break;
case 697 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); } //$NON-NLS-1$
consumeEnumConstantWithClassBody();
break;
case 698 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); } //$NON-NLS-1$
consumeEnumConstantNoClassBody();
break;
case 699 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$
consumeArguments();
break;
case 700 : if (DEBUG) { System.out.println("Argumentsopt ::="); } //$NON-NLS-1$
consumeEmptyArguments();
break;
case 702 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); } //$NON-NLS-1$
consumeEnumDeclarations();
break;
case 703 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); } //$NON-NLS-1$
consumeEmptyEnumDeclarations();
break;
case 705 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); } //$NON-NLS-1$
consumeEnhancedForStatement();
break;
case 706 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); } //$NON-NLS-1$
consumeEnhancedForStatement();
break;
case 707 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); } //$NON-NLS-1$
consumeEnhancedForStatementHeaderInit(false);
break;
case 708 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); } //$NON-NLS-1$
consumeEnhancedForStatementHeaderInit(true);
break;
case 709 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::=..."); } //$NON-NLS-1$
consumeEnhancedForStatementHeader();
break;
case 710 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); } //$NON-NLS-1$
consumeImportDeclaration();
break;
case 711 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static..."); } //$NON-NLS-1$
consumeSingleStaticImportDeclarationName();
break;
case 712 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$
consumeImportDeclaration();
break;
case 713 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static"); } //$NON-NLS-1$
consumeStaticImportOnDemandDeclarationName();
break;
case 714 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$
consumeTypeArguments();
break;
case 715 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$
consumeOnlyTypeArguments();
break;
case 717 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$
consumeTypeArgumentList1();
break;
case 719 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$
consumeTypeArgumentList();
break;
case 720 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); } //$NON-NLS-1$
consumeTypeArgument();
break;
case 724 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); } //$NON-NLS-1$
consumeReferenceType1();
break;
case 725 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$
consumeTypeArgumentReferenceType1();
break;
case 727 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$
consumeTypeArgumentList2();
break;
case 730 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); } //$NON-NLS-1$
consumeReferenceType2();
break;
case 731 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$
consumeTypeArgumentReferenceType2();
break;
case 733 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$
consumeTypeArgumentList3();
break;
case 736 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$
consumeReferenceType3();
break;
case 737 : if (DEBUG) { System.out.println("Wildcard ::= QUESTION"); } //$NON-NLS-1$
consumeWildcard();
break;
case 738 : if (DEBUG) { System.out.println("Wildcard ::= QUESTION WildcardBounds"); } //$NON-NLS-1$
consumeWildcardWithBounds();
break;
case 739 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); } //$NON-NLS-1$
consumeWildcardBoundsExtends();
break;
case 740 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); } //$NON-NLS-1$
consumeWildcardBoundsSuper();
break;
case 741 : if (DEBUG) { System.out.println("Wildcard1 ::= QUESTION GREATER"); } //$NON-NLS-1$
consumeWildcard1();
break;
case 742 : if (DEBUG) { System.out.println("Wildcard1 ::= QUESTION WildcardBounds1"); } //$NON-NLS-1$
consumeWildcard1WithBounds();
break;
case 743 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); } //$NON-NLS-1$
consumeWildcardBounds1Extends();
break;
case 744 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); } //$NON-NLS-1$
consumeWildcardBounds1Super();
break;
case 745 : if (DEBUG) { System.out.println("Wildcard2 ::= QUESTION RIGHT_SHIFT"); } //$NON-NLS-1$
consumeWildcard2();
break;
case 746 : if (DEBUG) { System.out.println("Wildcard2 ::= QUESTION WildcardBounds2"); } //$NON-NLS-1$
consumeWildcard2WithBounds();
break;
case 747 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); } //$NON-NLS-1$
consumeWildcardBounds2Extends();
break;
case 748 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); } //$NON-NLS-1$
consumeWildcardBounds2Super();
break;
case 749 : if (DEBUG) { System.out.println("Wildcard3 ::= QUESTION UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$
consumeWildcard3();
break;
case 750 : if (DEBUG) { System.out.println("Wildcard3 ::= QUESTION WildcardBounds3"); } //$NON-NLS-1$
consumeWildcard3WithBounds();
break;
case 751 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); } //$NON-NLS-1$
consumeWildcardBounds3Extends();
break;
case 752 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); } //$NON-NLS-1$
consumeWildcardBounds3Super();
break;
case 753 : if (DEBUG) { System.out.println("TypeParameterHeader ::= JavaIdentifier"); } //$NON-NLS-1$
consumeTypeParameterHeader();
break;
case 754 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); } //$NON-NLS-1$
consumeTypeParameters();
break;
case 756 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); } //$NON-NLS-1$
consumeTypeParameterList();
break;
case 758 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$
consumeTypeParameterWithExtends();
break;
case 759 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$
consumeTypeParameterWithExtendsAndBounds();
break;
case 761 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); } //$NON-NLS-1$
consumeAdditionalBoundList();
break;
case 762 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); } //$NON-NLS-1$
consumeAdditionalBound();
break;
case 764 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); } //$NON-NLS-1$
consumeTypeParameterList1();
break;
case 765 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); } //$NON-NLS-1$
consumeTypeParameter1();
break;
case 766 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$
consumeTypeParameter1WithExtends();
break;
case 767 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$
consumeTypeParameter1WithExtendsAndBounds();
break;
case 769 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); } //$NON-NLS-1$
consumeAdditionalBoundList1();
break;
case 770 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); } //$NON-NLS-1$
consumeAdditionalBound1();
break;
case 776 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.PLUS);
break;
case 777 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.MINUS);
break;
case 780 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.TWIDDLE);
break;
case 781 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT..."); } //$NON-NLS-1$
consumeUnaryExpression(OperatorIds.NOT);
break;
case 784 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.MULTIPLY);
break;
case 785 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY"); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.MULTIPLY);
break;
case 786 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.DIVIDE);
break;
case 787 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj DIVIDE..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.DIVIDE);
break;
case 788 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.REMAINDER);
break;
case 789 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj REMAINDER"); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.REMAINDER);
break;
case 791 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.PLUS);
break;
case 792 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= NameOrAj PLUS..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.PLUS);
break;
case 793 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.MINUS);
break;
case 794 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= NameOrAj MINUS..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.MINUS);
break;
case 796 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.LEFT_SHIFT);
break;
case 797 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT);
break;
case 798 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.RIGHT_SHIFT);
break;
case 799 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT);
break;
case 800 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT);
break;
case 801 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT);
break;
case 803 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.LESS);
break;
case 804 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.LESS);
break;
case 805 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.GREATER);
break;
case 806 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj GREATER..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.GREATER);
break;
case 807 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.LESS_EQUAL);
break;
case 808 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj LESS_EQUAL..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL);
break;
case 809 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.GREATER_EQUAL);
break;
case 810 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL"); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL);
break;
case 812 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= NameOrAj instanceof..."); } //$NON-NLS-1$
consumeInstanceOfExpressionWithName();
break;
case 813 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); } //$NON-NLS-1$
consumeInstanceOfExpression();
break;
case 815 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$
consumeEqualityExpression(OperatorIds.EQUAL_EQUAL);
break;
case 816 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL..."); } //$NON-NLS-1$
consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL);
break;
case 817 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$
consumeEqualityExpression(OperatorIds.NOT_EQUAL);
break;
case 818 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= NameOrAj NOT_EQUAL..."); } //$NON-NLS-1$
consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL);
break;
case 820 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.AND);
break;
case 821 : if (DEBUG) { System.out.println("AndExpression_NotName ::= NameOrAj AND..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.AND);
break;
case 823 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.XOR);
break;
case 824 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= NameOrAj XOR..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.XOR);
break;
case 826 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.OR);
break;
case 827 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= NameOrAj OR..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.OR);
break;
case 829 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.AND_AND);
break;
case 830 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= NameOrAj AND_AND"); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.AND_AND);
break;
case 832 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); } //$NON-NLS-1$
consumeBinaryExpression(OperatorIds.OR_OR);
break;
case 833 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= NameOrAj OR_OR..."); } //$NON-NLS-1$
consumeBinaryExpressionWithName(OperatorIds.OR_OR);
break;
case 835 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); } //$NON-NLS-1$
consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ;
break;
case 836 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= NameOrAj QUESTION..."); } //$NON-NLS-1$
consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ;
break;
case 840 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$
consumeAnnotationTypeDeclarationHeaderName() ;
break;
case 841 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$
consumeAnnotationTypeDeclarationHeaderName() ;
break;
case 842 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); } //$NON-NLS-1$
consumeAnnotationTypeDeclarationHeader() ;
break;
case 843 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); } //$NON-NLS-1$
consumeAnnotationTypeDeclaration() ;
break;
case 845 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); } //$NON-NLS-1$
consumeEmptyAnnotationTypeMemberDeclarationsopt() ;
break;
case 846 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$
consumeAnnotationTypeMemberDeclarationsopt() ;
break;
case 848 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); } //$NON-NLS-1$
consumeAnnotationTypeMemberDeclarations() ;
break;
case 849 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$
consumeMethodHeaderNameWithTypeParameters(true);
break;
case 850 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$
consumeMethodHeaderName(true);
break;
case 851 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); } //$NON-NLS-1$
consumeEmptyMethodHeaderDefaultValue() ;
break;
case 852 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); } //$NON-NLS-1$
consumeMethodHeaderDefaultValue();
break;
case 853 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName"); } //$NON-NLS-1$
consumeMethodHeader();
break;
case 854 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); } //$NON-NLS-1$
consumeAnnotationTypeMemberDeclaration() ;
break;
case 862 : if (DEBUG) { System.out.println("AnnotationName ::= AT NameOrAj"); } //$NON-NLS-1$
consumeAnnotationName() ;
break;
case 863 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$
consumeNormalAnnotation() ;
break;
case 864 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); } //$NON-NLS-1$
consumeEmptyMemberValuePairsopt() ;
break;
case 867 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); } //$NON-NLS-1$
consumeMemberValuePairs() ;
break;
case 868 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleNameOrAj EQUAL..."); } //$NON-NLS-1$
consumeMemberValuePair() ;
break;
case 869 : if (DEBUG) { System.out.println("EnterMemberValue ::="); } //$NON-NLS-1$
consumeEnterMemberValue() ;
break;
case 870 : if (DEBUG) { System.out.println("ExitMemberValue ::="); } //$NON-NLS-1$
consumeExitMemberValue() ;
break;
case 872 : if (DEBUG) { System.out.println("MemberValue ::= NameOrAj"); } //$NON-NLS-1$
consumeMemberValueAsName() ;
break;
case 875 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$
consumeMemberValueArrayInitializer() ;
break;
case 876 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$
consumeMemberValueArrayInitializer() ;
break;
case 877 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$
consumeEmptyMemberValueArrayInitializer() ;
break;
case 878 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$
consumeEmptyMemberValueArrayInitializer() ;
break;
case 879 : if (DEBUG) { System.out.println("EnterMemberValueArrayInitializer ::="); } //$NON-NLS-1$
consumeEnterMemberValueArrayInitializer() ;
break;
case 881 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); } //$NON-NLS-1$
consumeMemberValues() ;
break;
case 882 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); } //$NON-NLS-1$
consumeMarkerAnnotation() ;
break;
case 883 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$
consumeSingleMemberAnnotation() ;
break;
case 884 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$
consumeRecoveryMethodHeaderNameWithTypeParameters();
break;
case 885 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$
consumeRecoveryMethodHeaderName();
break;
case 886 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$
consumeMethodHeader();
break;
case 887 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$
consumeMethodHeader();
break;
}
}
// Helpers
private void consumeIntertypeClassHeader() {
TypeDeclaration typeDecl = (TypeDeclaration) this.astStack[this.astPtr];
if (this.currentToken == TokenNameLBRACE) {
typeDecl.bodyStart = this.scanner.currentPosition;
}
if (this.currentElement != null) {
this.restartRecovery = true; // used to avoid branching back into the regular automaton
}
// flush the comments related to the class header
this.scanner.commentPtr = -1;
}
private void consumeIntertypeClassDeclaration() {
int length;
if ((length = this.astLengthStack[this.astLengthPtr--]) != 0) {
//there are length declarations
//dispatch according to the type of the declarations
dispatchDeclarationInto(length);
}
TypeDeclaration typeDecl = (TypeDeclaration) this.astStack[this.astPtr];
// mark initializers with local type mark if needed
markInitializersWithLocalType(typeDecl);
//convert constructor that do not have the type's name into methods
boolean hasConstructor = typeDecl.checkConstructors((Parser)this);
//add the default constructor when needed (interface don't have it)
if (!hasConstructor) {
switch(TypeDeclaration.kind(typeDecl.modifiers)) {
case TypeDeclaration.CLASS_DECL :
case TypeDeclaration.ENUM_DECL :
boolean insideFieldInitializer = false;
if (this.diet) {
for (int i = this.nestedType; i > 0; i--){
if (this.variablesCounter[i] > 0) {
insideFieldInitializer = true;
break;
}
}
}
typeDecl.createDefaultConstructor(!this.diet || insideFieldInitializer, true);
}
}
//always add <clinit> (will be remove at code gen time if empty)
if (this.scanner.containsAssertKeyword) {
typeDecl.bits |= ASTNode.ContainsAssertion;
}
typeDecl.addClinit();
typeDecl.bodyEnd = this.endStatementPosition;
if (length == 0 && !containsComment(typeDecl.bodyStart, typeDecl.bodyEnd)) {
typeDecl.bits |= ASTNode.UndocumentedEmptyBlock;
}
typeDecl.declarationSourceEnd = flushCommentsDefinedPriorTo(this.endStatementPosition);
}
private void consumeIntertypeTypeHeaderNameWithTypeParameters() {
TypeDeclaration typeDecl = (TypeDeclaration)this.astStack[this.astPtr];
// consume type parameters
int length = this.genericsLengthStack[this.genericsLengthPtr--];
this.genericsPtr -= length;
System.arraycopy(this.genericsStack, this.genericsPtr + 1, typeDecl.typeParameters = new TypeParameter[length], 0, length);
typeDecl.bodyStart = typeDecl.typeParameters[length-1].declarationSourceEnd + 1;
this.listTypeParameterLength = 0;
if (this.currentElement != null) { // is recovering
RecoveredType recoveredType = (RecoveredType) this.currentElement;
recoveredType.pendingTypeParameters = null;
this.lastCheckPoint = typeDecl.bodyStart;
}
}
private void consumeIntertypeClassHeaderName(boolean b) {
TypeDeclaration typeDecl = declarationFactory.createIntertypeMemberClassDeclaration(this.compilationUnit.compilationResult);
if (this.nestedMethod[this.nestedType] == 0) {
if (this.nestedType != 0) {
typeDecl.bits |= ASTNode.IsMemberType;
}
} else {
// Record that the block has a declaration for local types
typeDecl.bits |= ASTNode.IsLocalType;
markEnclosingMemberWithLocalType();
blockReal();
}
this.display();
//highlight the name of the type
long pos = this.identifierPositionStack[this.identifierPtr];
typeDecl.sourceEnd = (int) pos;
typeDecl.sourceStart = (int) (pos >>> 32);
typeDecl.name = this.identifierStack[this.identifierPtr--];
this.identifierLengthPtr--;
//onType
if (b) {
pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
//consumeClassOrInterfaceName();
} else {
consumeClassOrInterfaceName();
}
TypeReference onType = getTypeReference(0);
declarationFactory.setOnType(typeDecl,onType);
//compute the declaration source too
// 'class' and 'interface' push two int positions: the beginning of the class token and its end.
// we want to keep the beginning position but get rid of the end position
// it is only used for the ClassLiteralAccess positions.
typeDecl.declarationSourceStart = this.intStack[this.intPtr--];
this.intPtr--; // remove the end position of the class token
typeDecl.modifiersSourceStart = this.intStack[this.intPtr--];
typeDecl.modifiers = this.intStack[this.intPtr--];
if (typeDecl.modifiersSourceStart >= 0) {
typeDecl.declarationSourceStart = typeDecl.modifiersSourceStart;
}
// Store secondary info
if ((typeDecl.bits & ASTNode.IsMemberType) == 0 && (typeDecl.bits & ASTNode.IsLocalType) == 0) {
if (this.compilationUnit != null && !CharOperation.equals(typeDecl.name, this.compilationUnit.getMainTypeName())) {
typeDecl.bits |= ASTNode.IsSecondaryType;
}
}
// consume annotations
int length;
if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
System.arraycopy(
this.expressionStack,
(this.expressionPtr -= length) + 1,
typeDecl.annotations = new Annotation[length],
0,
length);
}
typeDecl.bodyStart = typeDecl.sourceEnd + 1;
pushOnAstStack(typeDecl);
this.listLength = 0; // will be updated when reading super-interfaces
// recovery
if (this.currentElement != null){
this.lastCheckPoint = typeDecl.bodyStart;
this.currentElement = this.currentElement.add(typeDecl, 0);
this.lastIgnoredToken = -1;
}
// javadoc
typeDecl.javadoc = this.javadoc;
this.javadoc = null;
this.display();
}
protected ASTNode popPointcutDesignator(String terminator) {
ASTNode tokens = popPseudoTokens(terminator);
return declarationFactory.createPointcutDesignator(this, tokens);
}
protected ASTNode popPseudoTokens(String terminator) {
consumePseudoToken(terminator);
consumePseudoTokens();
//System.out.println("next token is: " + new String(scanner.getCurrentTokenSource()));
int length = astLengthStack[astLengthPtr--];
astPtr -= length;
//arguments
ASTNode[] tokens = new ASTNode[length];
System.arraycopy(astStack, astPtr + 1, tokens, 0, length);
//md.bodyStart = rParenPos+1;
listLength = 0; // reset listLength after having read all parameters
return declarationFactory.createPseudoTokensFrom(tokens,this.compilationUnit.compilationResult());
// new PseudoTokens(tokens, makeSourceContext(this.compilationUnit.compilationResult()));
}
// private ISourceContext makeSourceContext(CompilationResult compilationResult) {
// return new EclipseSourceContext(compilationResult);
// }
private void swapAstStack() {
ASTNode top = astStack[astPtr];
ASTNode next = astStack[astPtr-1];
astStack[astPtr] = next;
astStack[astPtr-1] = top;
}
/**
* Recovery rule for when someone tries to use * or + in an ITD
*/
private void consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern(String badToken) {
consumeInterTypeFieldHeader(false); // make the best of what we did get
MethodDeclaration errorNode = (MethodDeclaration) astStack[astPtr];
problemReporter().parseErrorDeleteToken(errorNode.sourceStart -2, // '+.'
errorNode.sourceStart,
TokenNameIdentifier,
badToken.toCharArray(),
badToken);
}
/**
* Recovery rule for when someone tries to use * or + in an ITD
*/
private void consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern(String badToken) {
consumeInterTypeConstructorHeaderName(false,false); // make the best of what we did get
MethodDeclaration errorNode = (MethodDeclaration) astStack[astPtr];
problemReporter().parseErrorDeleteToken(errorNode.sourceStart -2, // '+.'
errorNode.sourceStart,
TokenNameIdentifier,
badToken.toCharArray(),
badToken);
}
/**
* Recovery rule for when someone tries to use * or + in an ITD
*/
private void consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern(String badToken) {
consumeInterTypeMethodHeaderName(false,false); // make the best of what we did get
MethodDeclaration errorNode = (MethodDeclaration) astStack[astPtr];
problemReporter().parseErrorDeleteToken(errorNode.sourceStart -2, // '+.'
errorNode.sourceStart,
TokenNameIdentifier,
badToken.toCharArray(),
badToken);
}
/**
* Recovery rule for when around advice is specified without a return type
*/
private void consumeAroundHeaderNameMissingReturnType() {
problemReporter().parseErrorInsertToComplete(scanner.startPosition, scanner.currentPosition, "return type","around advice declaration");
this.restartRecovery = true;
}
/**
* Recovery rule for a screwed up declaration
*/
private void consumeBadHeader() {
// we read... modifiersopt QualifiedName LPAREN FormalParameterListopt RPAREN
problemReporter().parseErrorReplaceTokens(scanner.startPosition, scanner.currentPosition, "valid member declaration");
this.restartRecovery = true;
}
protected void consumeSimpleAssertStatement() {
super.consumeSimpleAssertStatement();
}
/**
* this method is called by the parser when processing inter-type declarations. We have
* just finished parsing the type parameters following the OnType of the ITD. Unfortunatey
* we parsed them as TypeParameter(s) whereas we're going to create a type reference for the
* on type (and type references can't have type parameters, only type declarations can). Therefore
* we replace the TypeParameter(s) with SingleTypeReference(s) so that everything will go
* smoothly down the line.
*/
private void convertTypeParametersToSingleTypeReferences() {
for(int typeParameterIndex = 0; typeParameterIndex < genericsLengthStack[genericsLengthPtr]; typeParameterIndex++) {
TypeParameter tp = (TypeParameter) genericsStack[genericsPtr - typeParameterIndex];
SingleTypeReference str = new SingleTypeReference(tp.name,tp.declarationSourceStart);
genericsStack[genericsPtr - typeParameterIndex] = str;
}
}
public Parser(
ProblemReporter problemReporter,
boolean optimizeStringLiterals) {
super(problemReporter, optimizeStringLiterals);
}
// don't try to recover if we're parsing AspectJ constructs
protected boolean shouldTryToRecover() {
int index = 0;
ASTNode node;
while (index < astStack.length && (node = astStack[index++]) != null) {
if (!declarationFactory.shouldTryToRecover(node)) {
return false;
}
}
return true;
}
protected void pushOnAspectIntStack(int pos) {
int stackLength = this.aspectIntStack.length;
if (++this.aspectIntPtr >= stackLength) {
System.arraycopy(
this.aspectIntStack, 0,
this.aspectIntStack = new int[stackLength + StackIncrement], 0,
stackLength);
}
this.aspectIntStack[this.aspectIntPtr] = pos;
}
}