Rule enumConstant() { return Sequence( ZeroOrMore(annotation().label("annotation")).label("annotations"), group.basics.identifier().label("name"), Optional(methodArguments()).label("arguments"), Optional(typeBody()).label("body"), set(actions.createEnumConstant(values("annotations/annotation"), value("name"), value("arguments"), value("body")))); }
Rule unqualifiedConstructorInvocation() { return Sequence( String("new"), group.basics.testLexBreak(), group.basics.optWS(), group.types.typeArguments().label("constructorTypeArgs"), group.types.type().label("type"), group.structures.methodArguments().label("args"), Optional(group.structures.typeBody()).label("classBody"), set(actions.createUnqualifiedConstructorInvocation(value("constructorTypeArgs"), value("type"), value("args"), value("classBody")))); }
Rule unqualifiedConstructorInvocation() { return Sequence( String("new"), group.basics.testLexBreak(), group.basics.optWS(), group.types.typeArguments().label("constructorTypeArgs"), group.types.type().label("type"), group.structures.methodArguments().label("args"), Optional(group.structures.typeBody()).label("classBody"), set(actions.createUnqualifiedConstructorInvocation(value("constructorTypeArgs"), value("type"), value("args"), value("classBody")))); }
Rule enumConstant() { return Sequence( ZeroOrMore(annotation().label("annotation")).label("annotations"), group.basics.identifier().label("name"), Optional(methodArguments()).label("arguments"), Optional(typeBody()).label("body"), set(actions.createEnumConstant(values("annotations/annotation"), value("name"), value("arguments"), value("body")))); }
Rule enumConstant() { return Sequence( ZeroOrMore(annotation().label("annotation")).label("annotations"), group.basics.identifier().label("name"), Optional(methodArguments()).label("arguments"), Optional(typeBody()).label("body"), set(actions.createEnumConstant(values("annotations/annotation"), value("name"), value("arguments"), value("body")))); }
Rule unqualifiedConstructorInvocation() { return Sequence( String("new"), group.basics.testLexBreak(), group.basics.optWS(), group.types.typeArguments().label("constructorTypeArgs"), group.types.type().label("type"), group.structures.methodArguments().label("args"), Optional(group.structures.typeBody()).label("classBody"), set(actions.createUnqualifiedConstructorInvocation(value("constructorTypeArgs"), value("type"), value("args"), value("classBody")))); }
public Rule classOrInterfaceDeclaration() { return Sequence( typeDeclarationModifiers().label("modifiers"), FirstOf(String("class"), String("interface")).label("kind"), group.basics.testLexBreak(), group.basics.optWS(), group.basics.identifier().label("typeName"), group.types.typeVariables().label("typeParameters"), ZeroOrMore(FirstOf( extendsClause(), implementsClause()).label("addon")).label("addons"), typeBody().label("body"), set(actions.createTypeDeclaration(text("kind"), value("modifiers"), value("typeName"), value("typeParameters"), value("body"), values("addons/addon")))); }
/** * P2'' * * This is the relational new operator; not just 'new', but new with context, so: "a.new InnerClass(params)". It is grouped with P2, but for some reason has higher precedence * in all java parsers, and so we give it its own little precedence group here. */ Rule dotNewExpressionChaining() { return Sequence( level1ExpressionChaining().label("head"), set(), ZeroOrMore(Sequence( Sequence( Ch('.'), group.basics.optWS(), String("new"), group.basics.testLexBreak(), group.basics.optWS()), group.types.typeArguments().label("constructorTypeArgs"), group.basics.identifier().label("innerClassName"), group.types.typeArguments().label("classTypeArgs"), group.structures.methodArguments().label("methodArguments"), Optional(group.structures.typeBody()).label("classBody"), set(actions.createQualifiedConstructorInvocation(value("constructorTypeArgs"), node("innerClassName"), node("classTypeArgs"), value("methodArguments"), value("classBody"))))), set(actions.createChainOfQualifiedConstructorInvocations(node("head"), nodes("ZeroOrMore/Sequence")))); }