2010-02-01 7 views
12

정신을 사용하는 방법을 알아 냈습니다. 즉, 나는 다소 복잡한 문법을 ​​작성했습니다. 저는 항상 한 번에 하나의 서브 시스템으로 프로그램을 성장시키는 접근 방식을 취합니다. 필자는 최고 수준에서 4 가지 유형을 가진 복잡한 모델에 대한 데이터 구조를 작성했습니다.문법에서 문법을 구성하는 boost :: spirit

grammar composed from rules approach을 사용하여 최상위 유형을 한 번에 한 유형 씩 구문 분석하고 싶습니다. 즉 한 가지 최상위 문법으로 4 가지 문법을 작성하고 싶습니다. 이것이 가능하다면 (의심 스럽기 시작한 것입니다.) 누군가가이 작업을 수행하는 프로젝트의 스 니펫이나 참조를 게시 할 수 있습니까?

적절한 오류 처리를 위해 50+ (더 많은 가능한 규칙)을 가진 최상위 문법 중 하나가 재미 있지는 않습니다 (TMP 코드는 휘발성/컴파일 속도가 느리고 쓸모없는 오류 메시지를 제공함).

답변

11

Qi카르마과 동일하게 작동해야합니다.

template<class Iter> 
struct subgrammar_1 
: karma::grammar<Iter, ...> 
{ 
    ... 
} 

template<class Iter> 
struct top_level_grammar 
: karma::grammar<Iter, ...> 
{ 
    top_level_grammar() : top_level_grammar::base_type(start) 
    { 
     start %= r1 | r2; 
    } 
    karma::rule<Iter, ...> r1; 
    subgrammar_1<Iter> r2; 
    ... 
} 
+0

(+1) 예, 그게 바로 내가 뭘 찾고 있었는지 : P, 나는 시간이있을 때 그것을 시도 할 것입니다. –

관련 문제