Skip to content

Commit

Permalink
Update print of nfa
Browse files Browse the repository at this point in the history
  • Loading branch information
dejavudwh committed Sep 20, 2019
1 parent 63f3240 commit e2ce827
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 27 deletions.
Binary file modified __pycache__/utils.cpython-37.pyc
Binary file not shown.
6 changes: 0 additions & 6 deletions nfa/construction.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from nfa.nfa import EPSILON
from nfa.nfa import CCL
from nfa.nfa import EMPTY
from utils import log_nfa


s = scanner()
Expand All @@ -32,7 +31,6 @@ def nfa_single_char(pair_out):
pair_out.end_node = pair_out.start_node.next_1 = Nfa()
start.edge = lexer.lexeme
lexer.advance()
log_nfa(pair_out)
return True


Expand All @@ -47,7 +45,6 @@ def nfa_dot_char(pair_out):
start.set_input_set()

lexer.advance()
log_nfa(pair_out)
return False


Expand All @@ -63,7 +60,6 @@ def nfa_set_char(pair_out):
dodash(start.input_set)

lexer.advance()
log_nfa(pair_out)
return True


Expand Down Expand Up @@ -97,7 +93,6 @@ def nfa_star_closure(pair_out):
pair_out.end_node = end

lexer.advance()
log_nfa(pair_out)
return True


Expand All @@ -116,5 +111,4 @@ def nfa_plus_closure(pair_out):
pair_out.end_node = end

lexer.advance()
log_nfa(pair_out)
return True
23 changes: 12 additions & 11 deletions nfa/nfa.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from utils import log

# 对应的节点有两个出去的ε边
EPSILON = -1
# 边对应的是字符集
Expand Down Expand Up @@ -33,15 +35,14 @@ def __init__(self):
self.end_node = None


def debugNfa(start_node):
print('debug *******************')
if start_node is None:
return None
print('status num: ', start_node.status_num, 'edge: ', start_node.edge)
if start_node.next_1 is not None:
print('next 1: ', start_node.next_1.status_num)
if start_node.next_2 is not None:
print('next 2: ', start_node.next_2.status_num)
def log_nfa(start_node):
if start_node is None or (start_node.next_1 is None and start_node.next_2 is None) or start_node.visited:
return
log('from: ', start_node.status_num, 'to: ',
start_node.next_1.status_num, 'in: ', start_node.edge)
start_node.visited = True
if hasattr(start_node, 'input_set'):
log('input set: ', start_node.input_set)

debugNfa(start_node.next_1)
debugNfa(start_node.next_2)
log_nfa(start_node.next_1)
log_nfa(start_node.next_2)
8 changes: 5 additions & 3 deletions test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
nfa_star_closure,
nfa_plus_closure,
)
from nfa.nfa import debugNfa
from nfa.nfa import NfaPair
from nfa.nfa import log_nfa


nfa_pair = NfaPair()
Expand All @@ -14,9 +14,11 @@
# node1.next_1 = Nfa() # 3
# node1.next_1 = Nfa() # 4
# node2.next_2 = Nfa() # 5
term(nfa_pair)
nfa_star_closure(nfa_pair)
# term(nfa_pair)
# nfa_star_closure(nfa_pair)
term(nfa_pair)
nfa_plus_closure(nfa_pair)
# debugNfa(nfa_pair.start_node)
log_nfa(nfa_pair.start_node)
# print(nfa_pair.start_node.next_1)

7 changes: 0 additions & 7 deletions utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,3 @@ def log(*args, **kwargs):
value = time.localtime(int(time.time()))
dt = time.strftime(format, value)
print(dt, *args, **kwargs)


def log_nfa(pair_out):
log('from: ', pair_out.start_node.status_num, 'to: ',
pair_out.end_node.status_num, 'in: ', pair_out.start_node.edge)
if hasattr(pair_out.start_node, 'input_set'):
log('input set: ', pair_out.start_node.input_set)

0 comments on commit e2ce827

Please sign in to comment.