2014-10-20 4 views
1

현재 pyparsing 재귀 템플릿을 구문 분석하려고합니다. 템플릿은 다음과 같이 할 수 있습니다pyparsing 재귀 템플릿을 구문 분석

{{Attribute 
| name=attr1 
| description=First attribute.}} 

템플릿의 이름 (특성)을 가지고 있으며, 몇 가지 변수 정의 (이름 = ATTR1, 설명 = 첫 번째 속성을.). 그러나, 0 개 이상의 템플릿을 포함 할 수있는 템플릿도있다 :

{{Enum 
| name=MyEnum 
| description=Just a test enum. 
| example=Not given... 
| attributes={{Attribute 
| name=attr1 
| description=First attribute.}} 
{{Attribute 
| name=attr2 
| description=Second attribute.}}}} 

는 이러한 템플릿을 분석하기 위해 내가 해낸 다음과 같은 :

template = Forward() 
lb = '{{' 
rb = '}}' 
template_name = Word(alphas) 
variable = Word(alphas) 
value = CharsNotIn('|{}=') | Group(ZeroOrMore(template)) 
member = Group(Suppress('|') + variable + Suppress('=') + value) 
members = Group(OneOrMore(member)) 
template << Suppress(lb) + Group(template_name + members) + Suppress(rb) 

이 아주 잘 작동하지만, 나에게 허용하지 않습니다 내가 그것을 사용하고 싶다면 문제가되는 값 내에서 "| {} ="을 사용하십시오. 예 :

{{Enum 
| name=MyEnum 
| description=Just a test enum. 
| example=<python>x = 1</python> 
| attributes=}} 

그래서 이러한 문자를 허용하도록 코드를 어떻게 변경할 수 있습니까? Unforunately, 나는 이것이 어떻게 성취 할 수 있는지 전혀 모른다.

누군가가 내게 도움이되기를 바랍니다.

답변