/** * @see https://golang.org/ref/spec#Method_expressions * MethodName==Identifier */ private static void createMethodExpr() { b.rule(RECEIVER_TYPE) .is(b.firstOf(TYPE_NAME, b.sequence(GoLexer.Punctuators.PAREN_R, TYPE_NAME, GoLexer.Punctuators.PAREN_L), b.sequence(GoLexer.Punctuators.PAREN_R, RECEIVER_TYPE, GoLexer.Punctuators.PAREN_L))); b.rule(METHOD_EXPR).is(b.sequence(RECEIVER_TYPE, GoLexer.Punctuators.DOT, IDENTIFIER)); }
/** * @see https://golang.org/ref/spec#Import_declarations */ private static void createImport() { b.rule(IMPORT_SIMPLE).is(GoLexer.Keyword.IMPORT, GoLexer.Literals.STRING); b.rule(IMPORT_COMPLEX).is(GoLexer.Keyword.IMPORT, GoLexer.Punctuators.PAREN_L, b.oneOrMore(GoLexer.Literals.STRING), GoLexer.Punctuators.PAREN_R); b.rule(IMPORT_DEFINITION).is(b.firstOf(IMPORT_SIMPLE, IMPORT_COMPLEX)); }
private static void spacing(LexerlessGrammarBuilder b, String commentRegex) { b.rule(SPACING).is( b.skippedTrivia(b.regexp("(?<!\\\\)[\\s]*+")), b.zeroOrMore( b.commentTrivia(b.regexp(commentRegex)), b.skippedTrivia(b.regexp("(?<!\\\\)[\\s]*+")))); }
private static void arrays(LexerfulGrammarBuilder b) { b.rule(ARRAY_INITIALIZER).is( LCURLYBRACE, b.optional( b.firstOf( b.sequence(VARIABLE_INITIALIZER_LIST, COMMA), VARIABLE_INITIALIZER_LIST)), RCURLYBRACE); b.rule(VARIABLE_INITIALIZER_LIST).is(VARIABLE_INITIALIZER, b.zeroOrMore(COMMA, VARIABLE_INITIALIZER)); }
/** * It is responsible for managing the method name. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void methodName(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(METHOD_IDENTIFIER).is( grammarBuilder.firstOf( ALLOWED_KEYWORDS_AS_IDENTIFIER_FOR_METHODS, ALLOWED_KEYWORDS_AS_IDENTIFIER, SPECIAL_KEYWORDS_AS_IDENTIFIER)); }
/** * Grammar is created to implement another class or not. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void implementsList(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(IMPLEMENTS_LIST).is( IMPLEMENTS, CLASS_OR_INTERFACE_ERASURE_TYPE, grammarBuilder.zeroOrMore(COMMA, CLASS_OR_INTERFACE_ERASURE_TYPE) ); }
/** * @see https://golang.org/ref/spec#Struct_types */ private static void createStructDefinition() { b.rule(FIELD_DEFINITION_NORMAL).is(IDENTIFIER_LIST, TYPE); b.rule(FIELD_DEFINITION_ANOM).is(b.optional(GoLexer.Punctuators.MUL), TYPE_NAME); b.rule(FIELD_DEFINITION).is(b.firstOf(FIELD_DEFINITION_NORMAL, FIELD_DEFINITION_ANOM), b.optional(TAG)); b.rule(STRUCT_TYPE).is(GoLexer.Keyword.STRUCT, GoLexer.Punctuators.BRACE_L, b.zeroOrMore(FIELD_DEFINITION), GoLexer.Punctuators.BRACE_R); }
private static void createOthersType() { b.rule(QUALIFIED_IDENT).is(PACKAGE_NAME, GoLexer.Punctuators.DOT, IDENTIFIER); b.rule(TYPE_NAME).is(b.firstOf(IDENTIFIER, QUALIFIED_IDENT)); b.rule(POINTER_TYPE).is(GoLexer.Punctuators.MUL, TYPE); b.rule(TYPE_LIT).is(b.firstOf(ARRAY_TYPE, STRUCT_TYPE, POINTER_TYPE, FUNC_TYPE, INTERFACE_TYPE, SLICE_TYPE, MAP_TYPE, CHANNEL_TYPE)); b.rule(TYPE).is(b.firstOf(GO_TYPE, TYPE_LIT, TYPE_NAME, b.sequence(GoLexer.Punctuators.PAREN_R, TYPE, GoLexer.Punctuators.PAREN_L))); }
/** * Creates the rule for Property Declaration within a class. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void propertyDeclaration(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(PROPERTY_DECLARATION).is(TYPE, grammarBuilder.firstOf(ALLOWED_KEYWORDS_AS_IDENTIFIER, SPECIAL_KEYWORDS_AS_IDENTIFIER), LBRACE, ACCESSOR_DECLARATIONS, RBRACE); }
/** * Creates a grammar rule for arguments list. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void argumentsList(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(ARGUMENTS_LIST).is(grammarBuilder.firstOf(EXPRESSION, THIS), grammarBuilder.zeroOrMore(COMMA, grammarBuilder.firstOf(EXPRESSION, THIS)) ); }
/** * It is responsible for setting the rule for OR expression in where * sentence. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void orSOQLExpression(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(OR_SOQL_EXPRESSION).is( OR_SOQL, WHERE_SENTENCE_EXPRESSION); }
/** * It is responsible for setting the rule for from sentence. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void fromSentence(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(FROM_SENTENCE).is(FROM, grammarBuilder.firstOf( SOQL_NAME, GROUP) , grammarBuilder.optional(ALIASSTATEMENT)); }