0
結構我試圖解析看起來像這樣:解析與PLY組的樹Yacc的
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]]
每個家長有子女組的列表,並且每個孩子都有一個對其父母的引用。我似乎無法讓語法沒有移位/減少衝突,也沒有正確解析。
這就爲符號組,子組和subgroup_opt帶來了無限的遞歸錯誤(你稱之爲sublist_opt,我剛剛重命名了它) – Avery3R
遞歸錯誤是因爲我缺少一個空的規則。這是有效的,除了父母不只有一個孩子以外的事實。 – Avery3R
我把它稱爲sublist_opt而不是subgroup_opt,因爲它允許零個或多個'group's(使用左遞歸),也許'subgroup_list_opt'或者只是'subgroup_list'會更好:-) ...至於父對象多個孩子,我不確定有什麼不對,'p_group'中的代碼看起來很合理。 – torek