openpectus.lang.exec.pinterpreter
Attributes
Classes
Defines the context of program interpretation |
|
Module Contents
- openpectus.lang.exec.pinterpreter.logger
- openpectus.lang.exec.pinterpreter.term_uod = 'Unit Operation Definition file.'
- openpectus.lang.exec.pinterpreter.FFW_TICK_LIMIT = 1000
- class openpectus.lang.exec.pinterpreter.CallStack
- _records: list[openpectus.lang.model.ast.BlockNode | openpectus.lang.model.ast.ProgramNode] = []
- push(node)
- Parameters:
node (openpectus.lang.model.ast.BlockNode | openpectus.lang.model.ast.ProgramNode)
- pop()
- Return type:
- peek()
- __str__()
- __repr__()
- with_edited_program(program)
- Parameters:
program (openpectus.lang.model.ast.ProgramNode)
- Return type:
- class openpectus.lang.exec.pinterpreter.InterpreterContext
Defines the context of program interpretation
- property tags: openpectus.lang.exec.tags.TagCollection
- Abstractmethod:
- Return type:
- abstract schedule_execution(name, arguments='', exec_id=None)
- Parameters:
name (str)
arguments (str)
exec_id (uuid.UUID | None)
- property emitter: openpectus.lang.exec.events.EventEmitter
- Abstractmethod:
- Return type:
- property base_unit_provider: openpectus.lang.exec.base_unit.BaseUnitProvider
- Abstractmethod:
- Return type:
- class openpectus.lang.exec.pinterpreter.Interrupt(node, actions)
- Parameters:
actions (openpectus.lang.exec.visitor.NodeGenerator)
- node
- actions
- class openpectus.lang.exec.pinterpreter.PInterpreter(program, context)
Bases:
openpectus.lang.exec.visitor.NodeVisitor- Parameters:
program (openpectus.lang.model.ast.ProgramNode)
context (InterpreterContext)
- _program
- context
- start_time: float = 0
- _tick_time: float = 0
- _tick_number: int = -1
- _generator: openpectus.lang.exec.visitor.NodeGenerator | None = None
- _ffw = False
- _in_interrupt = False
- runtimeinfo: openpectus.lang.exec.runlog.RuntimeInfo
- ffw_tick_limit = 1000
instructions pending following a ffw run
- with_edited_program(new_program)
Returns a new interpreter instance with program modified and in the state it would have been in if the updated program had been run from the beginning for the same number of ticks.
Either succeeds and returns the updated interpreter instance or fails with EditError. The source interpreter and its entire state is unmodified, so the method edit is transactional.
- Parameters:
new_program (openpectus.lang.model.ast.ProgramNode)
- Return type:
- _run_ffw(target_node_id)
Fast-forward iteration over both the main generator and any interrupt generators without executing the nodes’ functionality, until the actions produced are no longer present in the nodes’ history.
The purpose is to prepare all the generators to the state just after the last action in their respective nodes’ history.
Notes: - active_node: The node that is currently being visited, both during normal and ffw processing - target_node: The node in the new program with the same id as active_node in the old program at the time
ffw starts. When ffw is complete, this should be the same as active_node in the new program (or possibly the following node, in case active node is completed)
- Parameters:
target_node_id (str)
- get_marks()
- Return type:
list[str]
- inject_node(program)
Inject the child nodes of program into the running program in the current scope to be executed as the next instruction.
- Parameters:
program (openpectus.lang.model.ast.ProgramNode)
- _register_interrupt(node)
- Parameters:
- _create_interrupt_handler(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- _unregister_interrupt(node)
- Parameters:
- tick(tick_time, tick_number)
- Parameters:
tick_time (float)
tick_number (int)
- stop()
- _is_awaiting_threshold(node)
- Parameters:
- _evaluate_condition(node)
- Parameters:
- Return type:
bool
- _visit_children(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_ProgramNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_BlankNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_MarkNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_BatchNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_MacroNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_CallMacroNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_BlockNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_EndBlockNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_EndBlocksNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_InterpreterCommandNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_NotifyNode(node)
- Parameters:
- visit_EngineCommandNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_SimulateNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_SimulateOffNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_UodCommandNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_WatchNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_AlarmNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_WatchOrAlarm(node)
- Parameters:
node (openpectus.lang.model.ast.WatchNode | openpectus.lang.model.ast.AlarmNode)
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_InjectedNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_CommentNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- visit_ErrorInstructionNode(node)
- Parameters:
- Return type:
openpectus.lang.exec.visitor.NodeGenerator
- _try_activate_node(node)
- Parameters:
- _abort_block_interrupts(block)
- Parameters:
- _add_record_state_awaiting_condition(node)
- Parameters:
- _add_record_state_awaiting_threshold(node)
- Parameters:
- _add_record_state_started(node)
- _add_record_state_failed(node)
- _add_record_state_complete(node)
- _add_record_state_cancelled(node)
- _add_record_state_forced(node)