Commit e3d05036 authored by Savva Golubitsky's avatar Savva Golubitsky

strings now split better

parent 9dbdc092
...@@ -131,8 +131,8 @@ class Parser(): ...@@ -131,8 +131,8 @@ class Parser():
first=True first=True
for s in param.__slots__: for s in param.__slots__:
attr = getattr(param,s) attr = getattr(param,s)
if attr is not None and u'u2713' in attr: if attr is not None and '\0' in attr:
vals = attr.split(u'u2713') vals = attr.split('\0')
for v in vals: for v in vals:
par = copy.copy(param) par = copy.copy(param)
setattr(par, s, v) setattr(par, s, v)
...@@ -144,12 +144,11 @@ class Parser(): ...@@ -144,12 +144,11 @@ class Parser():
parm = Params() parm = Params()
props = props.replace("]", '') props = props.replace("]", '')
if '(' in props: if '(' in props:
#replaces , in (smth,smth) to mchs = [m for m in re.finditer(r'\((\w+,)*\w+\)', props)]
matches = re.search(r"\((\w+,)+\w+\)", props) for m in mchs:
print(matches) props=props[:m.span()[0]]+(props[m.span()[0]:m.span()[1]]).replace(',','\0')+props[m.span()[1]:]
# for m in matches: props = props.replace("(","")
# print(matches) props = props.replace(")","")
props =props[:props.find('(')]+props[props.find('(')+1:props.find(')')].replace(',',u'u2713')
rs =props.split(r",") #.split(r", ") rs =props.split(r",") #.split(r", ")
for r in rs: for r in rs:
r=r.split(r"=", 1) r=r.split(r"=", 1)
...@@ -158,6 +157,7 @@ class Parser(): ...@@ -158,6 +157,7 @@ class Parser():
else: else:
print("\tERROR:Unknown parameter: "+ r[0]) print("\tERROR:Unknown parameter: "+ r[0])
exit(-1) exit(-1)
print(parm)
return parm return parm
def _param_from_entln(self, raw): def _param_from_entln(self, raw):
...@@ -169,8 +169,6 @@ class Parser(): ...@@ -169,8 +169,6 @@ class Parser():
spl = list(filter(lambda x: x!="[" and x!="]" and x!="", spl)) spl = list(filter(lambda x: x!="[" and x!="]" and x!="", spl))
left = spl[0].split(",") left = spl[0].split(",")
right = spl[2].split(",") right = spl[2].split(",")
if len(spl)>3:
self._param_from_props(spl[3])
if (len(left)>1) and (len(right)>1): if (len(left)>1) and (len(right)>1):
print("ERROR:Ambigious multiple connection in line:\n\t{}".format(raw)) print("ERROR:Ambigious multiple connection in line:\n\t{}".format(raw))
exit() exit()
......
import comsdk.parser as prs import comsdk.parser as prs
from comsdk.graph import Selector, Func from comsdk.graph import Selector, Func
p= 5 p=5
res = lambda : [True for i in range(p)] res = lambda : [True for i in range(p)]
print(res()) print(res())
......
...@@ -38,5 +38,5 @@ digraph CODEOBJECT_GENERATOR ...@@ -38,5 +38,5 @@ digraph CODEOBJECT_GENERATOR
// В зависимости от результата вычисления функции-SELECTOR осуществляется переход по // В зависимости от результата вычисления функции-SELECTOR осуществляется переход по
//первому или второму ребру //первому или второму ребру
RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9)] RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9)]
RESULT_SAVED -> INPUT_READY,FAKE,__END__ [selector=SELECTOR, morphism=(EDGE_6,EDGE_1,EDGE_7),order=(10,20,30)] RESULT_SAVED -> INPUT_READY,FAKE,__END__ [selector=SELECTOR, morphism=(EDGE_6,EDGE_1,EDGE_7), order=(10,20,30)]
} }
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