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]]
각 부모가 아이들 그룹의 목록이를, 각 어린이는 부모에 대한 참조를 가지고 있습니다. shift/reduce 충돌없이 갈 문법을 얻지 못하고 제대로 파싱하지 못합니다.
기호 그룹, 하위 그룹 및 subgroup_opt에 대한 무한 재귀 오류가 발생했습니다 (sublist_opt는 방금 이름을 변경했습니다) – Avery3R
빈 규칙이 누락되어 재귀 오류가 발생했습니다. 이것은 부모가 둘 이상의 자식을 가질 때를 제외하고는 작동합니다. – Avery3R
나는 subgroup_opt보다는 sublist_opt라고 불렀다. 왜냐하면 0 개 이상의'group' (왼쪽 재귀를 사용), 아마도'subgroup_list_opt' 또는 단지'subgroup_list'가 더 좋을 것이기 때문입니다 :-) ... 여러 어린이들, 무엇이 잘못되었는지 모르겠습니다.'p_group'의 코드가 합리적으로 보입니다. – torek