本文整理汇总了Python中Helper.map_input_state方法的典型用法代码示例。如果您正苦于以下问题:Python Helper.map_input_state方法的具体用法?Python Helper.map_input_state怎么用?Python Helper.map_input_state使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Helper
的用法示例。
在下文中一共展示了Helper.map_input_state方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _process
# 需要导入模块: import Helper [as 别名]
# 或者: from Helper import map_input_state [as 别名]
def _process(process):
''' Generate the code for a complete process (AST Top level) '''
# In case model has nested states, flatten everything
Helper.flatten(process)
# Make an maping {input: {state: transition...}} in order to easily
# generate the lookup tables for the state machine runtime
mapping = Helper.map_input_state(process)
示例2: _process
# 需要导入模块: import Helper [as 别名]
# 或者: from Helper import map_input_state [as 别名]
def _process(process):
''' Generate LLVM IR code (incomplete) '''
process_name = process.processName
LOG.info('Generating LLVM IR code for process ' + str(process_name))
# In case model has nested states, flatten everything
Helper.flatten(process)
# Make an maping {input: {state: transition...}} in order to easily
# generate the lookup tables for the state machine runtime
mapping = Helper.map_input_state(process)
# Initialise LLVM global structure
LLVM['module'] = core.Module.new(str(process_name))
LLVM['pass_manager'] = passes.FunctionPassManager.new(LLVM['module'])
LLVM['executor'] = ee.ExecutionEngine.new(LLVM['module'])
# Set up the optimizer pipeline.
# Start with registering info about how the
# target lays out data structures.
# LLVM['pass_manager'].add(LLVM['executor'].target_data)
# # Do simple "peephole" optimizations and bit-twiddling optzns.
# LLVM['pass_manager'].add(passes.PASS_INSTRUCTION_COMBINING)
# # Reassociate expressions.
# LLVM['pass_manager'].add(passes.PASS_REASSOCIATE)
# # Eliminate Common SubExpressions.
# LLVM['pass_manager'].add(passes.PASS_GVN)
# # Simplify the control flow graph (deleting unreachable blocks, etc).
# LLVM['pass_manager'].add(passes.PASS_CFG_SIMPLIFICATION)
# LLVM['pass_manager'].initialize()
# Create the runTransition function
run_funct_name = 'run_transition'
run_funct_type = core.Type.function(core.Type.void(), [
core.Type.int()])
run_funct = core.Function.new(
LLVM['module'], run_funct_type, run_funct_name)
# Generate the code of the start transition:
# Clear scope
LLVM['named_values'].clear()
# Create the function name and type
funct_name = str(process_name) + '_startup'
funct_type = core.Type.function(core.Type.void(), [])
# Create a function object
function = core.Function.new(LLVM['module'], funct_type, funct_name)
# Create a new basic block to start insertion into.
block = function.append_basic_block('entry')
builder = core.Builder.new(block)
# Add the body of the function
builder.call(run_funct, (core.Constant.int(
core.Type.int(), 0),))
# Add terminator (mandatory)
builder.ret_void()
# Validate the generated code, checking for consistency.
function.verify()
# Optimize the function (not yet).
# LLVM['pass_manager'].run(function)
print function