Repository URL to install this package:
|
Version:
2023.12.1 ▾
|
parser grammar StateMachineParser;
options { tokenVocab=StateMachineLexer; }
// Parser rules
stateMachines : stateMachineDeclaration+ EOF;
stateMachineDeclaration
: KW_STATEMACHINE IDENTIFIER LBRACE stateMachineBody RBRACE;
stateMachineBody
: parametersSection? variablesSection? entryPointSection tasksSection* transitionsSection*;
parametersSection
: KW_PARAMETERS LBRACE parameterDeclaration* RBRACE;
parameterDeclaration
: dataType IDENTIFIER SEMI;
variablesSection
: KW_VARIABLES LBRACE variableDeclaration* RBRACE;
variableDeclaration
: dataType IDENTIFIER (COMMA IDENTIFIER)* SEMI;
entryPointSection
: KW_ENTRYPOINT IDENTIFIER SEMI;
tasksSection
: taskDeclaration | subStateMachineTaskDeclaration | passTaskDeclaration | errorTaskDeclaration | waitTaskDeclaration;
transitionsSection
: transitionDeclaration;
dataType
: INT | FLOAT | STRING | BOOL | ARRAY | MAP;
parameterList
: parameter (COMMA parameter)*;
parameter
: dataType IDENTIFIER;
taskDeclaration
: KW_TASK IDENTIFIER LPAREN parameterList? RPAREN LBRACE taskBody RBRACE;
subStateMachineTaskDeclaration
: KW_SUBSTATEMACHINETASK IDENTIFIER LBRACE subStateMachineTaskBody RBRACE;
passTaskDeclaration
: KW_PASSTASK IDENTIFIER SEMI;
errorTaskDeclaration
: KW_ERRORTASK IDENTIFIER LPAREN parameterList? RPAREN SEMI;
waitTaskDeclaration
: KW_WAITTASK IDENTIFIER LBRACE waitTaskBody RBRACE;
subStateMachineTaskBody
: (inParametersSection | outParametersSection | usingStateMachineSection)*;
taskBody
: (eventDeclarationSection | scriptSection | rawScriptSection)*;
waitTaskBody
: (eventDeclarationSection)*;
eventDeclarationSection
: KW_EVENT IDENTIFIER LPAREN parameterList? RPAREN SEMI;
inParametersSection
: KW_IN LPAREN inParameterMapping (COMMA inParameterMapping)* RPAREN SEMI;
inParameterMapping
: IDENTIFIER DARROW IDENTIFIER;
outParametersSection
: KW_OUT LPAREN outParameterMapping (COMMA outParameterMapping)* RPAREN SEMI;
outParameterMapping
: IDENTIFIER ARROW IDENTIFIER;
usingStateMachineSection
: KW_USING IDENTIFIER SEMI;
scriptSection
: KW_SCRIPT GRN;
rawScriptSection
: KW_PAYLOAD_LBRACE rawScriptBody+ RAW_SCRIPT_RBRACE;
rawScriptBody
: RAW_SCRIPT_LBRACE | RAW_SCRIPT_TEXT | RAW_SCRIPT_RBRACE;
transitionDeclaration
: KW_TRANSITION IDENTIFIER KW_HANDLING IDENTIFIER ARROW IDENTIFIER SEMI;