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
{}
__init__() None[source]

Initialize the listener and the internal node mapping.

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 StateDefinition node.

Parameters:

ctx (GrammarParser.CompositeStateDefinitionContext) – Parse context for the composite state definition.

exitCondition(ctx: ConditionContext) None[source]

Build a Condition node 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 if statement node.

Parameters:

ctx (GrammarParser.If_statementContext) – Parse context for the if statement.

exitImportDefExactSelector(ctx: ImportDefExactSelectorContext) None[source]

Build an exact variable selector for an import def mapping.

Parameters:

ctx (GrammarParser.ImportDefExactSelectorContext) – Parse context for the exact selector.

exitImportDefFallbackSelector(ctx: ImportDefFallbackSelectorContext) None[source]

Build a fallback selector for an import def mapping.

Parameters:

ctx (GrammarParser.ImportDefFallbackSelectorContext) – Parse context for the fallback selector.

exitImportDefPatternSelector(ctx: ImportDefPatternSelectorContext) None[source]

Build a wildcard pattern selector for an import def mapping.

Parameters:

ctx (GrammarParser.ImportDefPatternSelectorContext) – Parse context for the pattern selector.

exitImportDefSetSelector(ctx: ImportDefSetSelectorContext) None[source]

Build a set selector for an import def mapping.

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 def mapping.

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 StateDefinition node.

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 Paren node.

Parameters:

ctx (GrammarParser.ParenExprCondContext) – Parse context for the parenthesized conditional expression.

exitParenExprInit(ctx: ParenExprInitContext) None[source]

Wrap an initialization expression in a Paren node.

Parameters:

ctx (GrammarParser.ParenExprInitContext) – Parse context for the parenthesized init expression.

exitParenExprNum(ctx: ParenExprNumContext) None[source]

Wrap a numeric expression in a Paren node.

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.

exitUnaryExprInit(ctx: UnaryExprInitContext) None[source]

Build a unary operation node in initialization expressions.

Parameters:

ctx (GrammarParser.UnaryExprInitContext) – Parse context for the unary init expression.

exitUnaryExprNum(ctx: UnaryExprNumContext) None[source]

Build a unary numeric expression node.

Parameters:

ctx (GrammarParser.UnaryExprNumContext) – Parse context for the unary numeric expression.