def setup(EntryN, StateOperation): sm = StateMachine() examiner = Examiner(sm, RecipeAcceptance) si = 1111L setup_state_operation(sm, StateOperation, si) operation = sm.states[si].single_entry examiner.linear_db[sm.init_state_index] = LinearStateInfo() predecessor0_recipe = RecipeAcceptance( [SeAccept(0)], { E_IncidenceIDs.CONTEXT_FREE_MATCH: 0, 10L: -1, # same for both / no restore 11L: -2, # unequal for both 12L: E_Values.RESTORE, # same for both / restore same 13L: E_Values.RESTORE, # same for both / restore differs 21L: 0, # no present in other }, { (E_R.PositionRegister, 12L): 0, (E_R.PositionRegister, 13L): 0 })
acceptance_scheme_0 = [ RecipeAcceptance.RestoreAcceptance ] acceptance_scheme_1 = [ SeAccept(1111L, None, False) ] acceptance_scheme_2 = [ SeAccept(2222L, None, True) ] acceptance_scheme_3 = [ SeAccept(3333L, 33L, True), SeAccept(4444L, 44L, True), SeAccept(5555L, None, True) ] examiner = Examiner(DFA(), RecipeAcceptance) # For the test, only 'examiner.mouth_db' and 'examiner.recipe_type' # are important. examiner.mouth_db[1L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_0, ip_offset_scheme_0) examiner.mouth_db[2L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_1, ip_offset_scheme_1) examiner.mouth_db[3L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_2, ip_offset_scheme_2) examiner.mouth_db[4L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_3, ip_offset_scheme_3) examiner._interference(set([1L, 2L, 3L, 4L])) print_interference_result(examiner.mouth_db)
acceptance_scheme_0 = [ RecipeAcceptance.RestoreAcceptance ] acceptance_scheme_1 = [ SeAccept(1111L, E_PreContextIDs.NONE, False) ] acceptance_scheme_2 = [ SeAccept(2222L, E_PreContextIDs.NONE, True) ] acceptance_scheme_3 = [ SeAccept(3333L, 33L, True), SeAccept(4444L, 44L, True), SeAccept(5555L, E_PreContextIDs.NONE, True) ] examiner = Examiner(StateMachine(), RecipeAcceptance) # For the test, only 'examiner.mouth_db' and 'examiner.recipe_type' # are important. examiner.mouth_db[1L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_0, ip_offset_scheme_0) examiner.mouth_db[2L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_1, ip_offset_scheme_1) examiner.mouth_db[3L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_2, ip_offset_scheme_2) examiner.mouth_db[4L] = get_MouthStateInfoSnapshotMap(entry_n, acceptance_scheme_3, ip_offset_scheme_3) examiner._interference(set([1L, 2L, 3L, 4L])) print_interference_result(examiner.mouth_db)
#! /usr/bin/env python import os import sys sys.path.insert(0, os.environ["QUEX_PATH"]) from quex.engine.state_machine.core import StateMachine from quex.engine.state_machine.TEST.helper_state_machine_shapes import * from quex.engine.analyzer.examine.acceptance import RecipeAcceptance from quex.engine.analyzer.examine.core import Examiner if "--hwut-info" in sys.argv: print "Categorize into Linear and Mouth States" print "CHOICES: %s;" % get_sm_shape_names() sys.exit() sm, state_n, pic = get_sm_shape_by_name(sys.argv[1]) examiner = Examiner(sm, RecipeAcceptance) examiner.categorize() if "pic" in sys.argv: print pic print "Linear States:", examiner.linear_db.keys() print "Mouth States:", examiner.mouth_db.keys()
from quex.engine.analyzer.examine.core import Examiner from quex.blackboard import E_IncidenceIDs if "--hwut-info" in sys.argv: print "Accumulation;" print "CHOICES: %s;" % get_sm_shape_names() sys.exit() sm, state_n, pic = get_sm_shape_by_name(sys.argv[1]) print pic sm.get_init_state().single_entry.add(SeAccept(4711L, 33L)) # sm.get_init_state().single_entry.add(SeAccept(E_IncidenceIDs.MATCH_FAILURE)) examiner = Examiner(sm, RecipeAcceptance) examiner.categorize() springs = examiner.setup_initial_springs() mouth_ready_set = examiner._accumulate(springs) print "Mouths ready for interference:" print " %s" % sorted(list(mouth_ready_set)) print print "Linear States:" for si, info in sorted(examiner.linear_db.iteritems()): print_recipe(si, info.recipe) print "Mouth States:" for si, info in sorted(examiner.mouth_db.iteritems()): print_recipe(si, info.recipe) for predecessor_si, entry_recipe in info.entry_recipe_db.iteritems():
print "CHOICES: 2-entries, 3-entries;" print "SAME;" sys.exit() choice = sys.argv[1].split("-") entry_n = int(choice[0]) scheme_restore = [RecipeAcceptance.RestoreAcceptance] scheme_simple = [SeAccept(1111L, E_PreContextIDs.NONE, False)] scheme_simple2 = [SeAccept(2222L, E_PreContextIDs.NONE, True)] scheme_list = [ SeAccept(3333L, 33L, True), SeAccept(4444L, 44L, True), SeAccept(5555L, E_PreContextIDs.NONE, True) ] examiner = Examiner(StateMachine(), RecipeAcceptance) examiner.categorize() examiner.setup_initial_springs() # For the test, only 'examiner.mouth_db' and 'examiner.recipe_type' # are important. examiner.mouth_db[1L] = get_MouthStateInfoAcceptance(entry_n, scheme_restore) examiner.mouth_db[2L] = get_MouthStateInfoAcceptance(entry_n, scheme_simple) examiner.mouth_db[3L] = get_MouthStateInfoAcceptance(entry_n, scheme_simple2) examiner.mouth_db[4L] = get_MouthStateInfoAcceptance(entry_n, scheme_list) examiner._interference(set([1L, 2L, 3L, 4L])) print_interference_result(examiner.mouth_db)
from copy import deepcopy if "--hwut-info" in sys.argv: print "Interference: Homogeneous IpOffset;" print "CHOICES: 2-entries, 3-entries;" print "SAME;" sys.exit() choice = sys.argv[1].split("-") entry_n = int(choice[0]) scheme_0 = {} scheme_1 = { 0: -1 } scheme_2 = { 0: -1, 1: -2 } scheme_3 = { 0: -1, 1: -2, 2: -3 } examiner = Examiner(StateMachine(), RecipeAcceptance) # For the test, only 'examiner.mouth_db' and 'examiner.recipe_type' # are important. examiner.mouth_db[1L] = get_MouthStateInfoIpOffset(entry_n, scheme_0) examiner.mouth_db[2L] = get_MouthStateInfoIpOffset(entry_n, scheme_1) examiner.mouth_db[3L] = get_MouthStateInfoIpOffset(entry_n, scheme_2) examiner.mouth_db[4L] = get_MouthStateInfoIpOffset(entry_n, scheme_3) examiner._interference(set([1L, 2L, 3L, 4L])) print_interference_result(examiner.mouth_db)
choice = sys.argv[1].split("-") entry_n = int(choice[0]) scheme_restore = [ RecipeAcceptance.RestoreAcceptance ] scheme_simple = [ get_SeAccept(1111L, E_PreContextIDs.NONE, False) ] scheme_simple2 = [ get_SeAccept(2222L, 22L, True) ] scheme_list = [ get_SeAccept(3333L, 33L, True), get_SeAccept(4444L, 44L, True), get_SeAccept(5555L, E_PreContextIDs.NONE, True) ] examiner = Examiner(StateMachine(), RecipeAcceptance) # For the test, only 'examiner.mouth_db' and 'examiner.recipe_type' # are important. examiner.mouth_db[1L] = get_MouthStateInfoAcceptance(entry_n, scheme_restore, False) examiner.mouth_db[2L] = get_MouthStateInfoAcceptance(entry_n, scheme_simple, False) examiner.mouth_db[3L] = get_MouthStateInfoAcceptance(entry_n, scheme_simple2, False) examiner.mouth_db[4L] = get_MouthStateInfoAcceptance(entry_n, scheme_list, False) examiner._interference(set([1L, 2L, 3L, 4L])) print_interference_result(examiner.mouth_db)
from quex.engine.state_machine.core import StateMachine from quex.engine.operations.se_operations import SeAccept from quex.engine.state_machine.TEST.helper_state_machine_shapes import * from quex.engine.analyzer.examine.acceptance import RecipeAcceptance from quex.engine.analyzer.examine.core import Examiner if "--hwut-info" in sys.argv: print "Setup Initial Spring States;" print "CHOICES: linear, long_loop;" sys.exit() sm, state_n, pic = get_sm_shape_by_name(sys.argv[1]) sm.get_init_state().single_entry.add(SeAccept()) # Accept Failure examiner = Examiner(sm, RecipeAcceptance) examiner.categorize() for si in examiner.setup_initial_springs(): print "Spring: %i;" % si print "Recipe: {\n%s\n}" % str(examiner.get_state_info(si).recipe) print "Linear States:" for si, info in examiner.linear_db.iteritems(): print " %02i: determined: %s" % (si, info.recipe is not None) print "Mouth States:" for si, info in examiner.mouth_db.iteritems(): print " %02i: determined: %s" % (si, info.recipe is not None)
name = sys.argv[1] sm, state_n, pic = get_sm_shape_by_name(name) print pic # add_SeAccept(sm, sm.init_state_index, E_IncidenceIDs.MATCH_FAILURE) add_SeStoreInputPosition(sm, 1L, 77L) add_SeAccept(sm, 1L, 1L, 111L) add_SeAccept(sm, 3L, 33L, 333L) add_SeAccept(sm, 4L, 44L) add_SeAccept(sm, 6L, 66L, 666L) # Post-Context: Store in '1', restore in '7' add_SeAccept(sm, 7L, 77L, E_PreContextIDs.NONE, True) print examiner = Examiner(sm, RecipeAcceptance) examiner.categorize() springs = examiner.setup_initial_springs() remainder = examiner.resolve(springs) print "Unresolved Mouth States:" print " %s" % sorted(list(remainder)) print print "Linear States:" for si, info in examiner.linear_db.iteritems(): print_recipe(si, info.recipe) print "Mouth States (Resolved):" for si, info in examiner.mouth_db.iteritems(): if si in remainder: continue print_recipe(si, info.recipe)