/** * {@inheritDoc} */ public void setRootRule(GrammarRuleKey ruleKey) { rule(ruleKey); rootRuleKey = ruleKey; }
/** * {@inheritDoc} */ @Override public void setRootRule(GrammarRuleKey ruleKey) { rule(ruleKey); rootRuleKey = ruleKey; }
/** * Defines rule for string literal string. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void stringLiteralString(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(STRING_LITERAL_STRING).is( STRING ); }
/** * @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)); }
/** * @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); }
/** * 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) ); }
/** * 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)); }
/** * 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 the rule that defines the return type a method can have. * * @param grammarBuilder ApexGrammarBuilder parameter. */ private static void resultType(LexerfulGrammarBuilder grammarBuilder) { grammarBuilder.rule(RESULT_TYPE).is(grammarBuilder.firstOf(VOID, TYPE) ); }
/** * @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)); }
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)); }
/** * @see https://golang.org/ref/spec#Declarations_and_scope */ private static void createAllDeclaration() { constDeclaration(); createVarDeclaration(); b.rule(DECLARATION).is(VAR_DECLARATION); }
private static void createConversionFunctions(LexerfulGrammarBuilder b) { b.rule(CAST_EXPRESSION).is( CAST, LPARENTHESIS, b.firstOf(b.sequence(MULTISET, EXPRESSION), EXPRESSION), AS, DATATYPE, RPARENTHESIS); }
private static void basicConcepts(LexerfulGrammarBuilder b) { b.rule(COMPILATION_UNIT) .is(b.zeroOrMore(EXTERN_ALIAS_DIRECTIVE), b.zeroOrMore(USING_DIRECTIVE), b.optional(GLOBAL_ATTRIBUTES), b.zeroOrMore(NAMESPACE_MEMBER_DECLARATION), EOF); b.rule(NAMESPACE_NAME).is(NAMESPACE_OR_TYPE_NAME); b.rule(TYPE_NAME).is(NAMESPACE_OR_TYPE_NAME); b.rule(NAMESPACE_OR_TYPE_NAME).is( b.firstOf( QUALIFIED_ALIAS_MEMBER, b.sequence(IDENTIFIER, b.optional(TYPE_ARGUMENT_LIST))), b.zeroOrMore(DOT, IDENTIFIER, b.optional(TYPE_ARGUMENT_LIST))); }
/** * 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)) ); }
/** * https://golang.org/ref/spec#Constant_declarations */ private static void constDeclaration() { Object constSpec = b.sequence(IDENTIFIER_LIST, b.optional(b.sequence(b.optional(TYPE), GoLexer.Punctuators.EQ), EXPR_LIST)); Object manyConstSpec = b.sequence(GoLexer.Punctuators.PAREN_R, b.zeroOrMore(constSpec), GoLexer.Punctuators.PAREN_L); b.rule(CONST_DECLARATION).is(GoLexer.Keyword.CONST, b.firstOf(constSpec, manyConstSpec)); }
public static LexerfulGrammarBuilder create() { LexerfulGrammarBuilder b = LexerfulGrammarBuilder.create(); b.rule(FILE_INPUT).is(b.zeroOrMore(b.firstOf(NEWLINE, STATEMENT)), EOF); grammar(b); compoundStatements(b); simpleStatements(b); expressions(b); b.setRootRule(FILE_INPUT); b.buildWithMemoizationOfMatchesForAllRules(); return b; }
public static LexerfulGrammarBuilder create() { LexerfulGrammarBuilder b = LexerfulGrammarBuilder.create(); b.rule(FILE_INPUT).is(b.zeroOrMore(b.firstOf(NEWLINE, STATEMENT)), EOF); grammar(b); compoundStatements(b); simpleStatements(b); expressions(b); b.setRootRule(FILE_INPUT); b.buildWithMemoizationOfMatchesForAllRules(); return b; }