pyfcstm.dsl.listener
Parse tree listener for the pyfcstm domain-specific language (DSL).
This module defines GrammarParseListener, a concrete ANTLR4 parse tree
listener that converts DSL parse contexts into an abstract syntax tree (AST)
made of node classes from pyfcstm.dsl.node. The listener reacts to
exit* events emitted by pyfcstm.dsl.grammar.GrammarParser and stores
constructed nodes in an internal mapping keyed by parse contexts.
The module is intended to be used with the ANTLR4-generated parser and lexer to build higher-level representations of:
Numeric and conditional expressions
Preamble and operational assignments
State machine definitions, transitions, and events
Import statements and import mapping rules
Entry/exit/during operation blocks and function references
Example:
>>> from antlr4 import CommonTokenStream, InputStream
>>> from pyfcstm.dsl.grammar.GrammarLexer import GrammarLexer
>>> from pyfcstm.dsl.grammar.GrammarParser import GrammarParser
>>> from pyfcstm.dsl.listener import GrammarParseListener
>>> from antlr4 import ParseTreeWalker
>>>
>>> code = "def int x = 1; state S;"
>>> lexer = GrammarLexer(InputStream(code))
>>> parser = GrammarParser(CommonTokenStream(lexer))
>>> tree = parser.state_machine_dsl()
>>> listener = GrammarParseListener()
>>> ParseTreeWalker().walk(listener, tree)
>>> program_node = listener.nodes[tree]
GrammarParseListener
- class pyfcstm.dsl.listener.GrammarParseListener[source]
Parse tree listener that builds AST nodes for the pyfcstm DSL.
The listener maintains a mapping from parse contexts to node instances. Each
exit*method constructs the appropriate node for a grammar rule, linking previously created nodes for child expressions and statements.- Variables:
nodes (dict[object, Any]) – Mapping of parse contexts to constructed AST nodes.
Example:
>>> listener = GrammarParseListener() >>> listener.nodes {}
- exitBinaryExprCond(ctx: BinaryExprCondContext) None[source]
Build a binary conditional expression node.
- Parameters:
ctx (GrammarParser.BinaryExprCondContext) – Parse context for the binary conditional expression.
- exitBinaryExprFromCondCond(ctx: BinaryExprFromCondCondContext) None[source]
Build a binary conditional expression node.
- Parameters:
ctx (GrammarParser.BinaryExprFromCondCondContext) – Parse context for the binary condition-to-condition expression.
- exitBinaryExprFromNumCond(ctx: BinaryExprFromNumCondContext) None[source]
Build a conditional expression node that compares numeric expressions.
- Parameters:
ctx (GrammarParser.BinaryExprFromNumCondContext) – Parse context for the binary numeric-to-condition expression.
- exitBinaryExprInit(ctx: BinaryExprInitContext) None[source]
Build a binary operation node in initialization expressions.
- Parameters:
ctx (GrammarParser.BinaryExprInitContext) – Parse context for the binary init expression.
- exitBinaryExprNum(ctx: BinaryExprNumContext) None[source]
Build a binary numeric expression node.
- Parameters:
ctx (GrammarParser.BinaryExprNumContext) – Parse context for the binary numeric expression.
- exitBool_literal(ctx: Bool_literalContext) None[source]
Build a boolean literal node.
- Parameters:
ctx (GrammarParser.Bool_literalContext) – Parse context for the boolean literal.
- exitChain_id(ctx: Chain_idContext) None[source]
Build a chain identifier node.
- Parameters:
ctx (GrammarParser.Chain_idContext) – Parse context for the chain identifier.
- exitCompositeStateDefinition(ctx: CompositeStateDefinitionContext) None[source]
Build a composite
StateDefinitionnode.- Parameters:
ctx (GrammarParser.CompositeStateDefinitionContext) – Parse context for the composite state definition.
- exitCondition(ctx: ConditionContext) None[source]
Build a
Conditionnode from a conditional expression.- Parameters:
ctx (GrammarParser.ConditionContext) – Parse context for the condition rule.
- exitConditionalCStyleCondNum(ctx: ConditionalCStyleCondNumContext) None[source]
Build a C-style conditional operator node for conditional expressions.
- Parameters:
ctx (GrammarParser.ConditionalCStyleCondNumContext) – Parse context for the conditional conditional expression.
- exitConditionalCStyleExprNum(ctx: ConditionalCStyleExprNumContext) None[source]
Build a C-style conditional operator node for numeric expressions.
- Parameters:
ctx (GrammarParser.ConditionalCStyleExprNumContext) – Parse context for the conditional numeric expression.
- exitConstant_definition(ctx: Constant_definitionContext) None[source]
Build a constant definition node.
- Parameters:
ctx (GrammarParser.Constant_definitionContext) – Parse context for the constant definition.
- exitDef_assignment(ctx: Def_assignmentContext) None[source]
Build a definition assignment node.
- Parameters:
ctx (GrammarParser.Def_assignmentContext) – Parse context for the definition assignment.
- exitDuringAbstractFunc(ctx: DuringAbstractFuncContext) None[source]
Build a during abstract function node.
- Parameters:
ctx (GrammarParser.DuringAbstractFuncContext) – Parse context for the during abstract function.
- exitDuringAspectAbstractFunc(ctx: DuringAspectAbstractFuncContext) None[source]
Build a during-aspect abstract function node.
- Parameters:
ctx (GrammarParser.DuringAspectAbstractFuncContext) – Parse context for the during aspect abstract function.
- exitDuringAspectOperations(ctx: DuringAspectOperationsContext) None[source]
Build a during-aspect operations node.
- Parameters:
ctx (GrammarParser.DuringAspectOperationsContext) – Parse context for the during aspect operations.
- exitDuringAspectRefFunc(ctx: DuringAspectRefFuncContext) None[source]
Build a during-aspect reference function node.
- Parameters:
ctx (GrammarParser.DuringAspectRefFuncContext) – Parse context for the during aspect reference function.
- exitDuringOperations(ctx: DuringOperationsContext) None[source]
Build a during-operations node.
- Parameters:
ctx (GrammarParser.DuringOperationsContext) – Parse context for the during operations.
- exitDuringRefFunc(ctx: DuringRefFuncContext) None[source]
Build a during reference function node.
- Parameters:
ctx (GrammarParser.DuringRefFuncContext) – Parse context for the during reference function.
- exitEnterAbstractFunc(ctx: EnterAbstractFuncContext) None[source]
Build an enter abstract function node.
- Parameters:
ctx (GrammarParser.EnterAbstractFuncContext) – Parse context for the enter abstract function.
- exitEnterOperations(ctx: EnterOperationsContext) None[source]
Build an enter-operations node.
- Parameters:
ctx (GrammarParser.EnterOperationsContext) – Parse context for the enter operations.
- exitEnterRefFunc(ctx: EnterRefFuncContext) None[source]
Build an enter reference function node.
- Parameters:
ctx (GrammarParser.EnterRefFuncContext) – Parse context for the enter reference function.
- exitEntryTransitionDefinition(ctx: EntryTransitionDefinitionContext) None[source]
Build an entry transition definition node.
- Parameters:
ctx (GrammarParser.EntryTransitionDefinitionContext) – Parse context for the entry transition definition.
- exitEvent_definition(ctx: Event_definitionContext) None[source]
Build an event definition node.
- Parameters:
ctx (GrammarParser.Event_definitionContext) – Parse context for the event definition.
- exitExitAbstractFunc(ctx: ExitAbstractFuncContext) None[source]
Build an exit abstract function node.
- Parameters:
ctx (GrammarParser.ExitAbstractFuncContext) – Parse context for the exit abstract function.
- exitExitAllForceTransitionDefinition(ctx: ExitAllForceTransitionDefinitionContext) None[source]
Build an all-state exit force transition definition.
- Parameters:
ctx (GrammarParser.ExitAllForceTransitionDefinitionContext) – Parse context for the exit all-force transition definition.
- exitExitForceTransitionDefinition(ctx: ExitForceTransitionDefinitionContext) None[source]
Build an exit force transition definition node.
- Parameters:
ctx (GrammarParser.ExitForceTransitionDefinitionContext) – Parse context for the exit force transition definition.
- exitExitOperations(ctx: ExitOperationsContext) None[source]
Build an exit-operations node.
- Parameters:
ctx (GrammarParser.ExitOperationsContext) – Parse context for the exit operations.
- exitExitRefFunc(ctx: ExitRefFuncContext) None[source]
Build an exit reference function node.
- Parameters:
ctx (GrammarParser.ExitRefFuncContext) – Parse context for the exit reference function.
- exitExitTransitionDefinition(ctx: ExitTransitionDefinitionContext) None[source]
Build an exit transition definition node.
- Parameters:
ctx (GrammarParser.ExitTransitionDefinitionContext) – Parse context for the exit transition definition.
- exitFuncExprInit(ctx: FuncExprInitContext) None[source]
Build a function call node in initialization expressions.
- Parameters:
ctx (GrammarParser.FuncExprInitContext) – Parse context for the function init expression.
- exitFuncExprNum(ctx: FuncExprNumContext) None[source]
Build a unary function call numeric expression node.
- Parameters:
ctx (GrammarParser.FuncExprNumContext) – Parse context for the numeric function expression.
- exitGeneric_expression(ctx: Generic_expressionContext) None[source]
Bind a generic expression to either a numeric or conditional node.
- Parameters:
ctx (GrammarParser.Generic_expressionContext) – Parse context for the generic expression.
- exitIdExprNum(ctx: IdExprNumContext) None[source]
Build a numeric name reference node.
- Parameters:
ctx (GrammarParser.IdExprNumContext) – Parse context for the identifier numeric expression.
- exitIf_statement(ctx: If_statementContext) None[source]
Build an operation-block
ifstatement node.- Parameters:
ctx (GrammarParser.If_statementContext) – Parse context for the
ifstatement.
- exitImportDefExactSelector(ctx: ImportDefExactSelectorContext) None[source]
Build an exact variable selector for an import
defmapping.- Parameters:
ctx (GrammarParser.ImportDefExactSelectorContext) – Parse context for the exact selector.
- exitImportDefFallbackSelector(ctx: ImportDefFallbackSelectorContext) None[source]
Build a fallback selector for an import
defmapping.- Parameters:
ctx (GrammarParser.ImportDefFallbackSelectorContext) – Parse context for the fallback selector.
- exitImportDefPatternSelector(ctx: ImportDefPatternSelectorContext) None[source]
Build a wildcard pattern selector for an import
defmapping.- Parameters:
ctx (GrammarParser.ImportDefPatternSelectorContext) – Parse context for the pattern selector.
- exitImportDefSetSelector(ctx: ImportDefSetSelectorContext) None[source]
Build a set selector for an import
defmapping.- Parameters:
ctx (GrammarParser.ImportDefSetSelectorContext) – Parse context for the set selector.
- exitImport_def_mapping(ctx: Import_def_mappingContext) None[source]
Build a variable mapping rule inside an import block.
- Parameters:
ctx (GrammarParser.Import_def_mappingContext) – Parse context for the import
defmapping.
- exitImport_event_mapping(ctx: Import_event_mappingContext) None[source]
Build an event mapping rule inside an import block.
- Parameters:
ctx (GrammarParser.Import_event_mappingContext) – Parse context for the import event mapping.
- exitImport_mapping_statement(ctx: Import_mapping_statementContext) None[source]
Bind an import mapping statement to its specific node.
- Parameters:
ctx (GrammarParser.Import_mapping_statementContext) – Parse context for the import mapping statement.
- exitImport_statement(ctx: Import_statementContext) None[source]
Build an import statement node.
- Parameters:
ctx (GrammarParser.Import_statementContext) – Parse context for the import statement.
- exitInitial_assignment(ctx: Initial_assignmentContext) None[source]
Build an initial assignment node.
- Parameters:
ctx (GrammarParser.Initial_assignmentContext) – Parse context for the initial assignment.
- exitLeafStateDefinition(ctx: LeafStateDefinitionContext) None[source]
Build a leaf
StateDefinitionnode.- Parameters:
ctx (GrammarParser.LeafStateDefinitionContext) – Parse context for the leaf state definition.
- exitLiteralExprCond(ctx: LiteralExprCondContext) None[source]
Bind a boolean literal node to a conditional expression.
- Parameters:
ctx (GrammarParser.LiteralExprCondContext) – Parse context for the boolean literal conditional expression.
- exitLiteralExprInit(ctx: LiteralExprInitContext) None[source]
Bind a numeric literal to an initialization expression.
- Parameters:
ctx (GrammarParser.LiteralExprInitContext) – Parse context for the literal init expression.
- exitLiteralExprNum(ctx: LiteralExprNumContext) None[source]
Bind a numeric literal node to a numeric expression context.
- Parameters:
ctx (GrammarParser.LiteralExprNumContext) – Parse context for the numeric literal expression.
- exitMathConstExprInit(ctx: MathConstExprInitContext) None[source]
Bind a math constant to an initialization expression.
- Parameters:
ctx (GrammarParser.MathConstExprInitContext) – Parse context for the math constant init expression.
- exitMathConstExprNum(ctx: MathConstExprNumContext) None[source]
Bind a math constant node to a numeric expression context.
- Parameters:
ctx (GrammarParser.MathConstExprNumContext) – Parse context for the math constant numeric expression.
- exitMath_const(ctx: Math_constContext) None[source]
Build a math constant node.
- Parameters:
ctx (GrammarParser.Math_constContext) – Parse context for the math constant.
- exitNormalAllForceTransitionDefinition(ctx: NormalAllForceTransitionDefinitionContext) None[source]
Build a force transition definition that applies to all states.
- Parameters:
ctx (GrammarParser.NormalAllForceTransitionDefinitionContext) – Parse context for the normal all-force transition definition.
- exitNormalForceTransitionDefinition(ctx: NormalForceTransitionDefinitionContext) None[source]
Build a normal force transition definition node.
- Parameters:
ctx (GrammarParser.NormalForceTransitionDefinitionContext) – Parse context for the normal force transition definition.
- exitNormalTransitionDefinition(ctx: NormalTransitionDefinitionContext) None[source]
Build a normal transition definition node.
- Parameters:
ctx (GrammarParser.NormalTransitionDefinitionContext) – Parse context for the normal transition definition.
- exitNum_literal(ctx: Num_literalContext) None[source]
Build a numeric literal node (integer, float, or hex integer).
- Parameters:
ctx (GrammarParser.Num_literalContext) – Parse context for the numeric literal.
- exitOperation_assignment(ctx: Operation_assignmentContext) None[source]
Build an operation assignment node.
- Parameters:
ctx (GrammarParser.Operation_assignmentContext) – Parse context for the operation assignment.
- exitOperation_block(ctx: Operation_blockContext) None[source]
Bind an operation block to its statement list.
- Parameters:
ctx (GrammarParser.Operation_blockContext) – Parse context for the operation block.
- exitOperation_program(ctx: Operation_programContext) None[source]
Build an operation program node from operational assignments.
- Parameters:
ctx (GrammarParser.Operation_programContext) – Parse context for the operation program.
- exitOperational_assignment(ctx: Operational_assignmentContext) None[source]
Build an operational (deprecated) assignment node.
- Parameters:
ctx (GrammarParser.Operational_assignmentContext) – Parse context for the operational assignment.
- exitOperational_statement(ctx: Operational_statementContext) None[source]
Bind an operational statement to its concrete statement node.
- Parameters:
ctx (GrammarParser.Operational_statementContext) – Parse context for the operational statement.
- exitOperational_statement_set(ctx: Operational_statement_setContext) None[source]
Build a list of operational statements from the statement set.
- Parameters:
ctx (GrammarParser.Operational_statement_setContext) – Parse context for the operational statement set.
- exitParenExprCond(ctx: ParenExprCondContext) None[source]
Wrap a conditional expression in a
Parennode.- Parameters:
ctx (GrammarParser.ParenExprCondContext) – Parse context for the parenthesized conditional expression.
- exitParenExprInit(ctx: ParenExprInitContext) None[source]
Wrap an initialization expression in a
Parennode.- Parameters:
ctx (GrammarParser.ParenExprInitContext) – Parse context for the parenthesized init expression.
- exitParenExprNum(ctx: ParenExprNumContext) None[source]
Wrap a numeric expression in a
Parennode.- Parameters:
ctx (GrammarParser.ParenExprNumContext) – Parse context for the parenthesized numeric expression.
- exitPreamble_program(ctx: Preamble_programContext) None[source]
Build a preamble program node from preamble statements.
- Parameters:
ctx (GrammarParser.Preamble_programContext) – Parse context for the preamble program.
- exitPreamble_statement(ctx: Preamble_statementContext) None[source]
Bind a preamble statement to its specific node.
- Parameters:
ctx (GrammarParser.Preamble_statementContext) – Parse context for the preamble statement.
- exitState_inner_statement(ctx: State_inner_statementContext) None[source]
Bind a state inner statement to its specific node.
- Parameters:
ctx (GrammarParser.State_inner_statementContext) – Parse context for the state inner statement.
- exitState_machine_dsl(ctx: State_machine_dslContext) None[source]
Build the root program node for a state machine DSL document.
- Parameters:
ctx (GrammarParser.State_machine_dslContext) – Parse context for the state machine DSL program.
- exitUnaryExprCond(ctx: UnaryExprCondContext) None[source]
Build a unary conditional expression node.
- Parameters:
ctx (GrammarParser.UnaryExprCondContext) – Parse context for the unary conditional expression.