입력을 std :: string으로 구문 분석 할 때 문자열을 얻지 만 double_으로 구문 분석하면 융합 구조체에 예상되는 것보다 아주 작은 수가 포함됩니다. #include <boost/spirit/include/qi.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <string>
숫자와 수학 표현식 만 포함하는 매우 단순한 언어에 대한 매우 간단한 구문 분석기를 만들려고합니다. 궁극적으로이 확장을 계획하지만이 기본 버전을 작동시킬 때까지는 아닙니다. 가 나는 성공적으로 분석했습니다 1
425
1 + 1
1 - 1
1 * 1
1/1
없음 문제. 하지만 다음과 같이 입력을 구문 분석하여 재귀 적으로 만들고 싶었습니다. 1
나는 boost :: spirit을 사용하여 간단한 표현 파서를 작성하려고했다. 계산기 예제 (참조 : http://www.boost.org/doc/libs/1_41_0/libs/spirit/example/qi/calc2_ast.cpp)로 시작하여 변수에 대한 참조를 나타내는 "ref"규칙을 추가하려고했습니다. 나는 예에 만들어진 #include <boos
내 프로그램에서는 큰 데이터 세트를 구문 분석하기 위해 Boost-Spirit-Qi를 사용합니다. 입력 데이터는 순차 레코드입니다. 구문 분석의 효율성을 높이기 위해 TBB를 사용하려고합니다. 다음 병렬 처리하기위한 과정은 다음과 같다 : typedef map<string, data_struct_t> mdata_t;
vector<string> text;
나는 머리를 감싸고있을 수없는 난처한 간단한 문제가 있습니다. 나는 부스트 문서 how to parse into structs을 읽고 있습니다. 그 장에 대한 sample code provided은 간단합니다 - 또는 그렇게 생각했습니다. 나는 아주 간단한 변화를 만들고 싶다. 다음과 같이 두 가지 (또는 그 이후 이상) 규칙에 ... start %=
을 사용하여 구분 된 토큰 목록을 구문 분석 boost :: spirit :: qi를 사용하여 구분 된 토큰의 가변 개수가 뒤에 오는 레이블로 구성된 행을 구문 분석하려고합니다. 문법을 phrase_parse으로 호출하고 제공된 레이블 파서를 건너 뛰기 파서로 사용하여 각 줄의 첫 번째 항목이 레이블인지 확인해야합니다. 간단한 기본 케이스 : label t
qi 문법에서 키워드/식별자 사용의 뉘앙스와 관련된 몇 가지 게시물을 보았습니다. 그러나이 방법이 부스트 예제에서 어떻게 입증되었는지 이해할 수 없습니다 qi::symbols<char> keywords;
예 키워드 세트 : keywords.add
("foo")
("bar")
;
식별자 규칙 선언 :... 키워드 선언