52 lines
1.2 KiB
Python
52 lines
1.2 KiB
Python
l = [
|
|
"=,10,_,t1",
|
|
"=,20,_,t1",
|
|
"+,t1,t1,t2"
|
|
]
|
|
class FourTuple:
|
|
cnt =0
|
|
def __init__(self, a='_',b='_',c='_',d='_'):
|
|
self.a = a
|
|
self.b = b
|
|
self.c = c
|
|
self.d = d
|
|
self.cnt = FourTuple.cnt
|
|
FourTuple.cnt += 1
|
|
self.block_sign = set(['if','jmp','jmpf','el','ifend','while','fun','return','while','we','goto'])
|
|
|
|
|
|
def is_block_sign(self):
|
|
return self.a in self.block_sign
|
|
def __str__(self):
|
|
return f"({self.a} , {self.b} , {self.c} , {self.d})"
|
|
class BlockDivider:
|
|
def __init__(self,lst):
|
|
self.ans = []
|
|
self.l =[]
|
|
for i in lst:
|
|
k = i.split(',')
|
|
obj = FourTuple(k[0].strip(),k[1].strip(),k[2].strip(),k[3].strip())
|
|
self.l.append(obj)
|
|
# print(obj)
|
|
def run(self):
|
|
lst = []
|
|
for i in self.l:
|
|
lst.append(i)
|
|
if i.is_block_sign():
|
|
self.ans.append(lst)
|
|
lst = []
|
|
if lst:
|
|
self.ans.append(lst)
|
|
|
|
return self.ans
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
divider = BlockDivider(l)
|
|
ans = divider.run()
|
|
for i in ans:
|
|
for j in i:
|
|
print(j,end='\t')
|
|
print() |