public StructuresParser(ParserGroup group) { this.actions = new StructuresActions(group.getSource()); this.group = group; }
public Rule annotation() { return Sequence( Ch('@'), group.basics.optWS(), group.types.plainReferenceType().label("annotationType"), Optional(Sequence( Ch('('), group.basics.optWS(), Optional(FirstOf( annotationElements(), Sequence(annotationElementValue(), set(actions.createAnnotationFromElement(lastValue()))))), Ch(')'), group.basics.optWS())).label("content"), set(actions.createAnnotation(value("annotationType"), value("content")))); }
Rule annotationElement() { return Sequence( group.basics.identifier().label("name"), Ch('='), group.basics.optWS(), annotationElementValue().label("value"), set(actions.createAnnotationElement(value("name"), value("value")))); }
public Rule annotationDeclaration() { return Sequence( typeDeclarationModifiers().label("modifiers"), Ch('@'), group.basics.optWS(), String("interface"), group.basics.testLexBreak(), group.basics.optWS(), group.basics.identifier().label("name"), Ch('{').label("typeOpen"), group.basics.optWS(), ZeroOrMore(annotationElementDeclaration().label("member")).label("members"), Ch('}').label("typeClose"), group.basics.optWS(), set(actions.createAnnotationDeclaration(value("modifiers"), value("name"), values("members/member"), node("typeOpen"), node("typeClose")))); }
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")))); } }
Rule annotationElements() { return Sequence( annotationElement().label("head"), ZeroOrMore(Sequence( Ch(','), group.basics.optWS(), annotationElement()).label("tail")), set(actions.createAnnotationFromElements(value("head"), values("ZeroOrMore/tail")))); }
public Rule annotationMethodDeclaration() { return Sequence( methodDeclarationModifiers().label("modifiers"), group.types.type().label("resultType"), group.basics.identifier().label("methodName"), Ch('('), group.basics.optWS(), Ch(')'), group.basics.optWS(), ZeroOrMore(Sequence(Ch('['), group.basics.optWS(), Ch(']'), group.basics.optWS()).label("dim")).label("dims"), Optional(Sequence( Sequence(String("default"), group.basics.testLexBreak(), group.basics.optWS()), annotationElementValue())).label("defaultValue"), Ch(';'), group.basics.optWS(), set(actions.createAnnotationMethodDeclaration(value("modifiers"), value("resultType"), value("methodName"), nodes("dims/dim"), value("defaultValue")))); }
Rule annotationElementValue() { return FirstOf( annotation(), Sequence( Ch('{'), group.basics.optWS(), Optional(Sequence( annotationElementValue().label("head"), ZeroOrMore(Sequence( Ch(','), group.basics.optWS(), annotationElementValue()).label("tail")), Optional(Sequence(Ch(','), group.basics.optWS())))), Ch('}'), group.basics.optWS(), set(actions.createAnnotationElementValueArrayInitializer(value("Optional/Sequence/head"), values("Optional/Sequence/ZeroOrMore/tail")))), group.expressions.inlineIfExpressionChaining()); }
public Rule constructorDeclaration() { return Sequence( methodDeclarationModifiers().label("modifiers"), group.types.typeVariables().label("typeParameters"), group.basics.identifier().label("typeName"), methodParameters().label("params"), Optional(Sequence( Sequence(String("throws"), group.basics.testLexBreak(), group.basics.optWS()), group.types.type().label("throwsHead"), ZeroOrMore(Sequence(Ch(','), group.basics.optWS(), group.types.type()).label("throwsTail")) )).label("throwsClause"), FirstOf( Sequence(Ch(';'), group.basics.optWS()), group.statements.blockStatement()).label("body"), set(actions.createConstructorDeclaration(value("modifiers"), value("typeParameters"), value("typeName"), value("params"), value("throwsClause/Sequence/throwsHead"), values("throwsClause/Sequence/ZeroOrMore/throwsTail"), value("body")))); }
public Rule annotation() { return Sequence( Ch('@'), group.basics.optWS(), group.types.plainReferenceType().label("annotationType"), Optional(Sequence( Ch('('), group.basics.optWS(), Optional(FirstOf( annotationElements(), Sequence(annotationElementValue(), set(actions.createAnnotationFromElement(lastValue()))))), Ch(')'), group.basics.optWS())).label("content"), set(actions.createAnnotation(value("annotationType"), value("content")))); }
Rule annotationElement() { return Sequence( group.basics.identifier().label("name"), Ch('='), group.basics.optWS(), annotationElementValue().label("value"), set(actions.createAnnotationElement(value("name"), value("value")))); }
public Rule annotationDeclaration() { return Sequence( typeDeclarationModifiers().label("modifiers"), Ch('@'), group.basics.optWS(), String("interface"), group.basics.testLexBreak(), group.basics.optWS(), group.basics.identifier().label("name"), Ch('{').label("typeOpen"), group.basics.optWS(), ZeroOrMore(annotationElementDeclaration().label("member")).label("members"), Ch('}').label("typeClose"), group.basics.optWS(), set(actions.createAnnotationDeclaration(value("modifiers"), value("name"), values("members/member"), node("typeOpen"), node("typeClose")))); }
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")))); } }
Rule annotationElements() { return Sequence( annotationElement().label("head"), ZeroOrMore(Sequence( Ch(','), group.basics.optWS(), annotationElement()).label("tail")), set(actions.createAnnotationFromElements(value("head"), values("ZeroOrMore/tail")))); }
public Rule annotationMethodDeclaration() { return Sequence( methodDeclarationModifiers().label("modifiers"), group.types.type().label("resultType"), group.basics.identifier().label("methodName"), Ch('('), group.basics.optWS(), Ch(')'), group.basics.optWS(), ZeroOrMore(Sequence(Ch('['), group.basics.optWS(), Ch(']'), group.basics.optWS()).label("dim")).label("dims"), Optional(Sequence( Sequence(String("default"), group.basics.testLexBreak(), group.basics.optWS()), annotationElementValue())).label("defaultValue"), Ch(';'), group.basics.optWS(), set(actions.createAnnotationMethodDeclaration(value("modifiers"), value("resultType"), value("methodName"), nodes("dims/dim"), value("defaultValue")))); }
Rule annotationElementValue() { return FirstOf( annotation(), Sequence( Ch('{'), group.basics.optWS(), Optional(Sequence( annotationElementValue().label("head"), ZeroOrMore(Sequence( Ch(','), group.basics.optWS(), annotationElementValue()).label("tail")), Optional(Sequence(Ch(','), group.basics.optWS())))), Ch('}'), group.basics.optWS(), set(actions.createAnnotationElementValueArrayInitializer(value("Optional/Sequence/head"), values("Optional/Sequence/ZeroOrMore/tail")))), group.expressions.inlineIfExpressionChaining()); }
public Rule constructorDeclaration() { return Sequence( methodDeclarationModifiers().label("modifiers"), group.types.typeVariables().label("typeParameters"), group.basics.identifier().label("typeName"), methodParameters().label("params"), Optional(Sequence( Sequence(String("throws"), group.basics.testLexBreak(), group.basics.optWS()), group.types.type().label("throwsHead"), ZeroOrMore(Sequence(Ch(','), group.basics.optWS(), group.types.type()).label("throwsTail")) )).label("throwsClause"), FirstOf( Sequence(Ch(';'), group.basics.optWS()), group.statements.blockStatement()).label("body"), set(actions.createConstructorDeclaration(value("modifiers"), value("typeParameters"), value("typeName"), value("params"), value("throwsClause/Sequence/throwsHead"), values("throwsClause/Sequence/ZeroOrMore/throwsTail"), value("body")))); }
public Rule annotation() { return Sequence( Ch('@'), group.basics.optWS(), group.types.plainReferenceType().label("annotationType"), Optional(Sequence( Ch('('), group.basics.optWS(), Optional(FirstOf( annotationElements(), Sequence(annotationElementValue(), set(actions.createAnnotationFromElement(lastValue()))))), Ch(')'), group.basics.optWS())).label("content"), set(actions.createAnnotation(value("annotationType"), value("content")))); }
Rule annotationElement() { return Sequence( group.basics.identifier().label("name"), Ch('='), group.basics.optWS(), annotationElementValue().label("value"), set(actions.createAnnotationElement(value("name"), value("value")))); }
public Rule annotationDeclaration() { return Sequence( typeDeclarationModifiers().label("modifiers"), Ch('@'), group.basics.optWS(), String("interface"), group.basics.testLexBreak(), group.basics.optWS(), group.basics.identifier().label("name"), Ch('{').label("typeOpen"), group.basics.optWS(), ZeroOrMore(annotationElementDeclaration().label("member")).label("members"), Ch('}').label("typeClose"), group.basics.optWS(), set(actions.createAnnotationDeclaration(value("modifiers"), value("name"), values("members/member"), node("typeOpen"), node("typeClose")))); }