Commit 3ed50f82 authored by Savva Golubitsky's avatar Savva Golubitsky

levels works, printing graph in work

parent f3bfd376
......@@ -308,15 +308,9 @@ class Parser():
self.checked.append(st)
states_to_check.remove(st)
bush = _Bush(st)
print("ins:", bush.state.name)
bush.grow_bush()
self.bushes[st] = bush
for i, br in enumerate(bush.branches):
for b in br:
print(i, b)
print("outs:")
for outs in bush.outstates:
print(outs.name)
if outs not in states_to_check and outs not in self.checked:
states_to_check.append(outs)
# for b in self.bushes:
......@@ -333,23 +327,50 @@ class Parser():
# self.bushes[st].token = cur_b.level / len(cur_b.branches)
# self.bushes[self.fact.graph.init_state].token
send_token(self.fact.graph.init_state, 1,self.bushes, [])
level = 0
#bsh = self.bushes
#for b in bsh:
## print("-"*int(1/self.bushes[b].token), b.name, self.bushes[b].token)
# for br in bsh[b].branches:
# if bsh[br.out].token-bsh[b] < 0:
# level+=1
print_bush(self.fact.graph.init_state, 0, self.bushes, [])
def print_bush(cur_state, level, bushes, checked):
cur_b = bushes[cur_state]
if cur_state in checked:
return
else:
checked.append(cur_state)
if len(cur_b.outstates)==0:
return
checked.append(cur_state)
print(cur_b.state.name)
for i, br in enumerate(cur_b.branches):
for b in br:
print("\t"*level, b.pred)
print("\t"*level, b.morph)
if cur_b.outstates[i] in checked:
print("\t"*level,"goto {}".format(cur_b.outstates[i].name))
elif cur_b.token - bushes[cur_b.outstates[i]].token>0:
level +=1
elif cur_b.token - bushes[cur_b.outstates[i]].token<0:
level -=1
print_bush(cur_b.outstates[i], level, bushes, checked)
for b in self.bushes:
print("-"*int(1/self.bushes[b].token), b.name, self.bushes[b].token)
def send_token(cur_state, token, bushes, checked):
cur_b = bushes[cur_state]
print("NAME:", cur_state.name, cur_b.token )
if cur_state in checked:
return
cur_b.token += token
cur_b.incomes +=1
cur_b.incomes +=1
if len(cur_b.outstates)==0:
return
if cur_b.incomes == cur_b.state.input_edges_number - cur_b.state.looped_edges_number:
checked.append(cur_state)
for st in cur_b.outstates:
send_token(st,token / len(cur_b.outstates), bushes, checked)
for st in cur_b.outstates:
send_token(st,cur_b.token / len(cur_b.outstates), bushes, checked)
class _Tr():
slots=(
......
......@@ -10,7 +10,7 @@ from comsdk.edge import Edge
prsr = pars.Parser(tocpp=True)
data = {"a":10}
gr = prsr.parse_file('./tests/adot/file.adot')
gr = prsr.parse_file('./tests/adot/testsimple.adot')
# gr.run(data)
# print (data)
print(prsr.generate_cpp())
......
......@@ -14,7 +14,7 @@ digraph SIMPLE {
__BEGIN__ -> ST1 [morphism = MORPH]
ST1 -> ST2, ST3, ST4 [morphism = (MORPH, MORPH1, MORPH2)]
ST2 -> ST3, ST5 [morphism = (MORPH1,MORPH2)]
ST4 -> ST3 [morphism = MORPH]
ST4 -> ST5 [morphism = MORPH]
ST3 -> ST5 [morphism = MORPH]
//ST21 -> ST31, ST312[morphism =(MORPH1,MORPH2)]
//ST3, ST31, ST312 -> ST4[morphism = (MORPH,MORPH1,MORPH2) ]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment