コード例 #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)