Grammar Documentation
Grammar Reference
grammarSpec
entry pointThe main entry point for parsing a v4 grammar.
Grammar definition
grammarSpec
: grammarDecl prequelConstruct* rules modeSpec* EOF
;Railroad diagram
References
grammarDecl
Grammar definition
grammarDecl
: grammarType identifier SEMI
;Railroad diagram
Referenced by
References
grammarType
Grammar definition
grammarType
: LEXER GRAMMAR
| PARSER GRAMMAR
| GRAMMAR
;Railroad diagram
Referenced by
prequelConstruct
Grammar definition
prequelConstruct
: optionsSpec
| delegateGrammars
| tokensSpec
| channelsSpec
| action_
;Railroad diagram
Referenced by
References
optionsSpec
Grammar definition
optionsSpec
: OPTIONS (option SEMI)* RBRACE
;Railroad diagram
Referenced by
References
option
Grammar definition
option
: identifier ASSIGN optionValue
;Railroad diagram
Referenced by
References
optionValue
Grammar definition
optionValue
: identifier (DOT identifier)*
| STRING_LITERAL
| actionBlock
| INT
;Railroad diagram
Referenced by
References
delegateGrammars
Grammar definition
delegateGrammars
: IMPORT delegateGrammar (COMMA delegateGrammar)* SEMI
;Railroad diagram
Referenced by
References
delegateGrammar
Grammar definition
delegateGrammar
: identifier ASSIGN identifier
| identifier
;Railroad diagram
Referenced by
References
tokensSpec
Grammar definition
tokensSpec
: TOKENS idList? RBRACE
;Railroad diagram
Referenced by
References
channelsSpec
Grammar definition
channelsSpec
: CHANNELS idList? RBRACE
;Railroad diagram
Referenced by
References
idList
Grammar definition
idList
: identifier (COMMA identifier)* COMMA?
;Railroad diagram
Referenced by
References
action_
Grammar definition
action_
: AT (actionScopeName COLONCOLON)? identifier actionBlock
;Railroad diagram
Referenced by
References
actionScopeName
Grammar definition
actionScopeName
: identifier
| LEXER
| PARSER
;Railroad diagram
Referenced by
References
actionBlock
Grammar definition
actionBlock
: ACTION
;Railroad diagram
Referenced by
argActionBlock
Grammar definition
argActionBlock
: BEGIN_ARGUMENT ARGUMENT_CONTENT*? END_ARGUMENT
;Railroad diagram
Referenced by
modeSpec
Grammar definition
modeSpec
: MODE identifier SEMI lexerRuleSpec*
;Railroad diagram
Referenced by
References
rules
Grammar definition
rules
: ruleSpec*
;Railroad diagram
Referenced by
References
ruleSpec
Grammar definition
ruleSpec
: parserRuleSpec
| lexerRuleSpec
;Railroad diagram
Referenced by
References
parserRuleSpec
Grammar definition
parserRuleSpec
: ruleModifiers? RULE_REF argActionBlock? ruleReturns? throwsSpec? localsSpec? rulePrequel* COLON ruleBlock SEMI
exceptionGroup
;Railroad diagram
Referenced by
References
exceptionGroup
Grammar definition
exceptionGroup
: exceptionHandler* finallyClause?
;Railroad diagram
Referenced by
References
exceptionHandler
Grammar definition
exceptionHandler
: CATCH argActionBlock actionBlock
;Railroad diagram
Referenced by
References
finallyClause
Grammar definition
finallyClause
: FINALLY actionBlock
;Railroad diagram
Referenced by
References
rulePrequel
Grammar definition
rulePrequel
: optionsSpec
| ruleAction
;Railroad diagram
Referenced by
References
ruleReturns
Grammar definition
ruleReturns
: RETURNS argActionBlock
;Railroad diagram
Referenced by
References
throwsSpec
-------------- Exception spec
Grammar definition
throwsSpec
: THROWS qualifiedIdentifier (COMMA qualifiedIdentifier)*
;Railroad diagram
Referenced by
References
localsSpec
Grammar definition
localsSpec
: LOCALS argActionBlock
;Railroad diagram
Referenced by
References
ruleAction
Grammar definition
ruleAction
: AT identifier actionBlock
;Railroad diagram
Referenced by
References
ruleModifiers
Grammar definition
ruleModifiers
: ruleModifier+
;Railroad diagram
Referenced by
References
ruleModifier
Grammar definition
ruleModifier
: PUBLIC
| PRIVATE
| PROTECTED
| FRAGMENT
;Railroad diagram
Referenced by
ruleBlock
Grammar definition
ruleBlock
: ruleAltList
;Railroad diagram
Referenced by
References
ruleAltList
Grammar definition
ruleAltList
: labeledAlt (OR labeledAlt)*
;Railroad diagram
Referenced by
References
labeledAlt
Grammar definition
labeledAlt
: alternative (POUND identifier)?
;Railroad diagram
Referenced by
References
lexerRuleSpec
Grammar definition
lexerRuleSpec
: FRAGMENT? TOKEN_REF optionsSpec? COLON lexerRuleBlock SEMI
;Railroad diagram
Referenced by
References
lexerRuleBlock
Grammar definition
lexerRuleBlock
: lexerAltList
;Railroad diagram
Referenced by
References
lexerAltList
Grammar definition
lexerAltList
: lexerAlt (OR lexerAlt)*
;Railroad diagram
Referenced by
References
lexerAlt
Grammar definition
lexerAlt
: lexerElements lexerCommands?
|
// explicitly allow empty alts
;Railroad diagram
Referenced by
References
lexerElements
Grammar definition
lexerElements
: lexerElement+
|
;Railroad diagram
Referenced by
References
lexerElement
Grammar definition
lexerElement
: lexerAtom ebnfSuffix?
| lexerBlock ebnfSuffix?
| actionBlock QUESTION?
;Railroad diagram
Referenced by
References
lexerBlock
Grammar definition
lexerBlock
: LPAREN lexerAltList RPAREN
;Railroad diagram
Referenced by
References
lexerCommands
Grammar definition
lexerCommands
: RARROW lexerCommand (COMMA lexerCommand)*
;Railroad diagram
Referenced by
References
lexerCommand
Grammar definition
lexerCommand
: lexerCommandName LPAREN lexerCommandExpr RPAREN
| lexerCommandName
;Railroad diagram
Referenced by
References
lexerCommandName
Grammar definition
lexerCommandName
: identifier
| MODE
;Railroad diagram
Referenced by
References
lexerCommandExpr
Grammar definition
lexerCommandExpr
: identifier
| INT
;Railroad diagram
Referenced by
References
altList
Grammar definition
altList
: alternative (OR alternative)*
;Railroad diagram
Referenced by
References
alternative
Grammar definition
alternative
: elementOptions? element+
|
// explicitly allow empty alts
;Railroad diagram
Referenced by
References
element
Grammar definition
element
: labeledElement (ebnfSuffix |)
| atom (ebnfSuffix |)
| ebnf
| actionBlock QUESTION? predicateOptions?
;Railroad diagram
Referenced by
References
predicateOptions
Grammar definition
predicateOptions
: LT predicateOption (COMMA predicateOption)* GT
;Railroad diagram
Referenced by
References
predicateOption
Grammar definition
predicateOption
: elementOption
| identifier ASSIGN (actionBlock | INT | STRING_LITERAL)
;Railroad diagram
Referenced by
References
labeledElement
Grammar definition
labeledElement
: identifier (ASSIGN | PLUS_ASSIGN) (atom | block)
;Railroad diagram
Referenced by
References
ebnf
Grammar definition
ebnf
: block blockSuffix?
;Railroad diagram
Referenced by
References
blockSuffix
Grammar definition
blockSuffix
: ebnfSuffix
;Railroad diagram
Referenced by
References
ebnfSuffix
Grammar definition
ebnfSuffix
: QUESTION QUESTION?
| STAR QUESTION?
| PLUS QUESTION?
;Railroad diagram
Referenced by
lexerAtom
Grammar definition
lexerAtom
: characterRange
| terminalDef
| notSet
| LEXER_CHAR_SET
| wildcard
;Railroad diagram
Referenced by
References
atom
Grammar definition
atom
: terminalDef
| ruleref
| notSet
| wildcard
;Railroad diagram
Referenced by
References
wildcard
Grammar definition
wildcard
: DOT elementOptions?
;Railroad diagram
Referenced by
References
notSet
-------------------- Inverted element set
Grammar definition
notSet
: NOT setElement
| NOT blockSet
;Railroad diagram
Referenced by
References
blockSet
Grammar definition
blockSet
: LPAREN setElement (OR setElement)* RPAREN
;Railroad diagram
Referenced by
References
setElement
Grammar definition
setElement
: TOKEN_REF elementOptions?
| STRING_LITERAL elementOptions?
| characterRange
| LEXER_CHAR_SET
;Railroad diagram
Referenced by
References
block
------------- Grammar Block
Grammar definition
block
: LPAREN (optionsSpec? ruleAction* COLON)? altList RPAREN
;Railroad diagram
Referenced by
References
ruleref
---------------- Parser rule ref
Grammar definition
ruleref
: RULE_REF argActionBlock? elementOptions?
;Railroad diagram
Referenced by
References
characterRange
--------------- Character Range
Grammar definition
characterRange
: STRING_LITERAL RANGE STRING_LITERAL
;Railroad diagram
Referenced by
terminalDef
Grammar definition
terminalDef
: TOKEN_REF elementOptions?
| STRING_LITERAL elementOptions?
;Railroad diagram
Referenced by
References
elementOptions
Terminals may be adorned with certain options when reference in the grammar: TOK<,,,>
Grammar definition
elementOptions
: LT elementOption (COMMA elementOption)* GT
;Railroad diagram
Referenced by
References
elementOption
Grammar definition
elementOption
: qualifiedIdentifier
| identifier ASSIGN (qualifiedIdentifier | STRING_LITERAL | INT)
;Railroad diagram
Referenced by
References
identifier
Grammar definition
identifier
: RULE_REF
| TOKEN_REF
;Railroad diagram
Referenced by
qualifiedIdentifier
Grammar definition
qualifiedIdentifier
: identifier (DOT identifier)*
;Railroad diagram
Referenced by
References