我试图解析的结构如下所示:
group "a" [
group "b" [
group "c" [
]
]
group "d" [
]
]
和语法:
def p_group(p):
'''group : GROUP string subgroups'''
p[0] = DNAGroup(p[2])
for sgroup in p[3]:
print p[0].getName(), "subgroup ", sgroup.getName()
p[0].add(sgroup)
sgroup.setParent(p[0])
def p_subgroups(p):
'''subgroups : "[" group
| subgroups group
| subgroups "]"
| "[" "]"'''
if p[0] is None:
p[0] = []
if p[2] != ']':
p[0] += [p[2]]
每个父母都有一个孩子组的列表,每个孩子都有一个对其父母的引用。如果没有 shift/reduce 冲突,我似乎无法让语法运行,并且它没有正确解析。