Ejemplo n.º 1
0
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
        })
Ejemplo n.º 2
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)

Ejemplo n.º 3
0
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)

Ejemplo n.º 4
0
#! /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()
Ejemplo n.º 5
0
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():
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
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)

Ejemplo n.º 8
0
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():
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
#! /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()
Ejemplo n.º 13
0
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)