- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
class Node:
def __init__(self):
pass
def __str__(self):
return self.prn()
def prn(self):
ret = ''
if hasattr(self, 'field_list'): # struct
ret += 'struct ' + self.id + '{\n'
for fld in self.field_list:
ret += '\t' + str(fld) + '\n'
ret += '\n}\n'
elif hasattr(self, 'type'): # field list of single type
fld_str_l = []
for f in self.fields:
fld_str_l += [str(f)]
ret += self.type + '\t' + ', '.join(fld_str_l) + ';'
elif hasattr(self, 'sizes'): # variable (maybe array)
ret += self.id
for s in self.sizes:
ret += '[' + s + ']'
return ret
Фрагмент парсера сишных структур для последующей генерации (де)сериализатора.
Не заходит что-то в у меня питон.
wvxvw 16.02.2015 22:14 # 0
И вообще, зачем заниматься такой ерундой, когда есть Cython?
Xom94ok 16.02.2015 22:31 # 0
> Cython
А он умеет по грамматике строить лексер-парсер? Меня гугол первыми ссылками привел к python lexx-yacc, с которым я за пару часов сотворил что-то рабочее.
wvxvw 16.02.2015 23:08 # +1
Ну это гнилой такой полиморфизм, когда он весь внутри одной функции, то это... мнимый полиморфизм :)
guest 16.02.2015 23:38 # 0