Пример #1
0
Файл: Main.py Проект: waxnkw/lex
def test_regs_to_nfa():
    s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    s = preprocess(s)
    print(s)
    a = reg_to_nfa(s)
    print('--------------')
    # a.sort_states()
    a.show()
    print(collect_edges(a))
Пример #2
0
Файл: Main.py Проект: waxnkw/lex
def test_table_to_dfa():
    s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    s = preprocess(s)
    a = reg_to_nfa(s)
    a.sort_states()
    # a.show()
    edges = collect_edges(a)
    edges = sorted(edges)
    table = nfa_to_dfa_table(a, edges)
    dfa = convert_table_to_dfa(table, a)
    dfa.show()
Пример #3
0
Файл: Main.py Проект: waxnkw/lex
def test_nfa_to_dfa():
    s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    s = preprocess(s)
    a = reg_to_nfa(s)
    a.sort_states()
    edges = collect_edges(a)
    edges = sorted(edges)
    print(edges)
    s = nfa_to_dfa_table(a, edges)
    # s.show()
    s.show_simple()
Пример #4
0
Файл: Main.py Проект: waxnkw/lex
def test_get_next_without_closure():
    s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    s = preprocess(s)
    a = reg_to_nfa(s)
    a.sort_states()
    x = epsilon_closure(a.states[1])
    print(x)
    t = get_next_state_without_epsilon_closure(a.states, x, 'b')
    print(t)
    t = get_next_state_with_epsilon_closure(a.states, x, 'b')
    print(t)
Пример #5
0
Файл: Main.py Проект: waxnkw/lex
def test_epsilon_closure():
    s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    s = preprocess(s)
    print(s)
    a = reg_to_nfa(s)
    print('--------------')
    a.sort_states()
    # a.show()
    # a.show_graph()
    x = epsilon_closure(a.states[22])
    print(x)
Пример #6
0
Файл: Main.py Проект: waxnkw/lex
def test_lex_output():
    s = lex_input("./input.txt")
    # s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    s = preprocess(s)
    print(s)
    a = reg_to_nfa(s)
    a.sort_states()
    edges = collect_edges(a)
    table = nfa_to_dfa_table(a, edges)
    dfa = convert_table_to_dfa(table, a)
    x = dfa_minimize(dfa)
    print(*[t.to_output_file() for t in x.states], sep='\n')
    import LexOutput
    LexOutput.my_out_put("./lex.py", dfa)
Пример #7
0
Файл: Main.py Проект: waxnkw/lex
def run(ipath, opath):
    in_text = lex_input(ipath)
    regs = preprocess(in_text)
    print(regs)
    nfa = reg_to_nfa(regs)
    nfa.sort_states()
    # nfa.show()
    edges = collect_edges(nfa)
    dfa_table = nfa_to_dfa_table(nfa, edges)
    dfa = convert_table_to_dfa(dfa_table, nfa)
    # dfa.show()
    min_dfa = dfa_minimize(dfa)
    min_dfa.show()
    import LexOutput
    LexOutput.my_out_put(opath, min_dfa)
Пример #8
0
Файл: Main.py Проект: waxnkw/lex
def test_minimize_dfa():
    # x = get_group_id(4, [[1,2,3],[4,5,6],[77]])
    # print(x)
    s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    # s = {'t1': 'ab', 't2': 'abc'}
    s = preprocess(s)
    a = reg_to_nfa(s)
    a.sort_states()
    edges = collect_edges(a)
    # edges = sorted(edges)
    table = nfa_to_dfa_table(a, edges)
    dfa = convert_table_to_dfa(table, a)
    # x = classes_through_edges(4, dfa.states, [[],[x.id for x in dfa.states]], edges)
    x = dfa_minimize(dfa)
    # x.show()
    print(*[t.to_output_file() for t in x.states], sep='\n')
Пример #9
0
Файл: Main.py Проект: waxnkw/lex
def test_preprocess():
    s = {'t1': 'abc', 't2': 'ab|c', 't3': 'b|a*'}
    s = preprocess(s)
    s = preprocess({'t': '(ac|b*)*b|c'})
    print(s)