2011-04-25 4 views
1

문자열을 토큰 화하고 토큰 및 토큰 유형 목록을 생성하는 방법을 찾고 있습니다. 내 노력을 낭비하기 전에 부스트가 이미 원하는대로 할 수 있는지 알고 싶습니다.텍스트를 유형, 문자열 쌍으로 토큰 화합니다.

나는 본질적으로이 같은 서명 된 기능을 원하는 :

typedef pair<size_t,string> token; 
void tokenize(string input, vector<regex> match, vector<token> & output); 

input이 토큰 화되는 텍스트 입력입니다. match은 토큰을 나타내는 모든 정규 표현식의 목록입니다. outputmatch 벡터에서 일치하는 토큰의 색인과 함께 모든 일치하는 토큰 목록이됩니다.

나는 sregex_token_iterator을 사용하는 방법을 알고 있지만 어떻게 든 모든 토큰에서 일치하는 중복을 피하고 싶습니다. 즉, 토큰 목록을 생성 할 수는 있지만 형식 정보가 부족합니다. 각 토큰을 재검색하지 않고 해당 형식 정보를 얻고 싶습니다.

도구 체인 및 통합의 단순성을 위해 부스트 정규식 라이브러리를 사용하고 ANTLR과 같은 별도의 도구를 사용하지 않는 것이 좋습니다.

답변

1

시나리오가 이고 정확히 도메인이 Boost입니다. Spirit. Qi.

+0

내가 보겠습니다. 나는 실제로 토큰 화기를 찾고 있으며 완전한 문법 파서는 아닙니다. –

+0

Spirit.Lex는 내가 원하는 것처럼 보입니다. 나는 그것을 체크 할 것이다. –

+0

@ edA-qa mort-ora-y : 그렇다면 Spirit.Lex로 토큰 화기를 작성한 다음 Spirit.Qi 문법을 통해 공개합니다. – ildjarn