public Rule compilationUnit() { return Sequence( group.basics.optWS(), Optional(packageDeclaration()).label("package"), ZeroOrMore(importDeclaration().label("import")).label("imports"), ZeroOrMore(anyTypeDeclaration().label("type")).label("types"), set(actions.createCompilationUnit(value("package"), values("imports/import"), values("types/type")))); } }
/** * P1 */ Rule level1ExpressionChaining() { return Sequence( primaryExpression().label("head"), set(), ZeroOrMore(FirstOf( arrayAccessOperation().label("arrayAccess"), methodInvocationWithTypeArgsOperation().label("methodInvocation"), select().label("select"))), set(actions.createLevel1Expression(node("head"), nodes("ZeroOrMore/FirstOf")))); }
/** * Eats up any whitespace and comments at the current position. */ public Rule optWS() { return ZeroOrMore(FirstOf(comment(), whitespaceChar())).label("ws"); }
public Rule packageDeclaration() { return Sequence( Sequence( ZeroOrMore(annotation().label("annotation")).label("annotations"), String("package"), group.basics.testLexBreak(), group.basics.optWS()), group.basics.identifier().label("head"), ZeroOrMore(group.basics.dotIdentifier().label("tail")), Ch(';'), group.basics.optWS(), set(actions.createPackageDeclaration(values("Sequence/annotations/annotation"), value("head"), values("ZeroOrMore/tail")))); }
Rule prefixIncrementExpression() { return Sequence( OneOrMore(Sequence( FirstOf(String("++"), String("--")).label("operator"), group.basics.optWS()).label("operatorCt")), postfixIncrementExpressionChaining().label("operand"), set(), set(actions.createUnaryPrefixExpressions(node("operand"), nodes("OneOrMore/operatorCt/operator"), texts("OneOrMore/operatorCt/operator")))); }
public Rule explicitSuperConstructorInvocation() { return Sequence( Optional(Sequence(group.expressions.allPrimaryExpressions(), Ch('.').label("dot"), group.basics.optWS())).label("qualifier"), group.types.typeArguments().label("typeArgs"), String("super"), group.basics.testLexBreak(), group.basics.optWS(), group.structures.methodArguments().label("arguments"), Ch(';'), group.basics.optWS(), set(actions.createSuperConstructorInvocation(node("qualifier/Sequence/dot"), value("qualifier"), value("typeArgs"), value("arguments")))); }
Rule variableDefinitionPart() { return Sequence( group.basics.identifier().label("varName"), ZeroOrMore(Sequence(Ch('['), group.basics.optWS(), Ch(']'), group.basics.optWS()).label("dim")).label("dims"), Optional(Sequence( Ch('='), group.basics.optWS(), FirstOf( group.expressions.arrayInitializer(), group.expressions.anyExpression()))).label("initializer"), set(actions.createVariableDefinitionPart(value("varName"), texts("dims/dim"), value("initializer")))); }
public Rule importDeclaration() { return Sequence( Sequence(String("import"), group.basics.testLexBreak(), group.basics.optWS()), Optional(Sequence(String("static"), group.basics.testLexBreak(), group.basics.optWS())).label("static"), group.basics.identifier().label("head"), ZeroOrMore(group.basics.dotIdentifier().label("tail")), Optional(Sequence( Ch('.'), group.basics.optWS(), Ch('*'), group.basics.optWS())).label("dotStar"), Ch(';'), group.basics.optWS(), set(actions.createImportDeclaration(text("static"), value("head"), values("ZeroOrMore/tail"), text("dotStar")))); }
public Rule localVariableDeclaration() { return Sequence( variableDefinition().label("definition"), Ch(';'), group.basics.optWS(), set(actions.createVariableDeclaration(value("definition")))); }
Rule extendsClause() { return Sequence( Sequence(String("extends"), group.basics.testLexBreak(), group.basics.optWS()), group.types.type().label("head"), ZeroOrMore(Sequence( Ch(','), group.basics.optWS(), group.types.type()).label("tail")), set(actions.createExtendsClause(value("head"), values("ZeroOrMore/tail")))); }
Rule implementsClause() { return Sequence( Sequence(String("implements"), group.basics.testLexBreak(), group.basics.optWS()), group.types.type().label("head"), ZeroOrMore(Sequence( Ch(','), group.basics.optWS(), group.types.type()).label("tail")), set(actions.createImplementsClause(value("head"), values("ZeroOrMore/tail")))); }
public Rule fieldDeclarationModifiers() { return Sequence( TestNot(Ch('}')), ZeroOrMore(anyModifier().label("modifier")), set(actions.createModifiers(values("ZeroOrMore/modifier")))); }
public Rule variableDefinitionModifiers() { return Sequence( TestNot(Ch('}')), ZeroOrMore(anyModifier().label("modifier")), set(actions.createModifiers(values("ZeroOrMore/modifier")))); }
Rule methodParameters() { return Sequence( Ch('('), group.basics.optWS(), Optional(Sequence( methodParameter().label("head"), ZeroOrMore(Sequence( Ch(','), group.basics.optWS(), methodParameter().label("tail"))))), Ch(')'), group.basics.optWS(), set(actions.createMethodParameters(value("Optional/Sequence/head"), values("Optional/Sequence/ZeroOrMore/Sequence/tail")))); }
/** * @see <a href="http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.2">JLS section 14.2</a> */ public Rule blockStatement() { return Sequence( Ch('{'), group.basics.optWS(), ZeroOrMore(anyStatement().label("statement")), Ch('}'), group.basics.optWS(), set(actions.createBlock(values("ZeroOrMore/statement")))); }
/** * @see <a href="http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.4">JLS section 14.4</a> */ public Rule variableDefinition() { return Sequence( group.structures.variableDefinitionModifiers().label("modifiers"), group.structures.variableDefinition(), set(), set(actions.posify(value())), set(actions.addLocalVariableModifiers(value(), value("modifiers")))); }
/** * @see <a href="http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.15">JLS section 14.15</a> */ public Rule breakStatement() { return Sequence( String("break"), group.basics.testLexBreak(), group.basics.optWS(), Optional(group.basics.identifier()).label("identifier"), Ch(';'), group.basics.optWS(), set(actions.createBreak(value("identifier")))); }
public Rule fieldDeclaration() { return Sequence( fieldDeclarationModifiers().label("modifiers"), variableDefinition(), set(), set(actions.posify(value())), Ch(';'), group.basics.optWS(), set(actions.createFieldDeclaration(value(), value("modifiers")))); }
/** * @see <a href="http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.12">JLS section 14.12</a> */ public Rule whileStatement() { return Sequence( String("while"), group.basics.testLexBreak(), group.basics.optWS(), Ch('('), group.basics.optWS(), group.expressions.anyExpression().label("condition"), Ch(')'), group.basics.optWS(), anyStatement(), set(), set(actions.createWhileStatement(value("condition"), value()))); }