was successfully added to your cart.

boost spirit 예제

Por 02/08/2019 Sem categoria Sem comentários

이 섹션에서는 구문 분석기를 정의하는 방법을 설명합니다. 당신은 일반적으로 Boost.Spirit에서 기존 구문 분석자에 액세스 – 예를 들어, 부스트::정신::ascii::digit 또는 부스트::정신::ascii::space. 구문 분석기를 결합하면 더 복잡한 형식을 구문 분석할 수 있습니다. 이 프로세스는 기본 구성 요소에서 빌드되는 정규식을 정의하는 것과 유사합니다. “0”과 “9”를 터미널이라고 합니다. 0및 none_zero는 단말 또는 생산 규칙이라고 합니다. 각 규칙은 단자와 단말의 혼합물로 정의할 수 있습니다. 정규식과 같이 풍부한 연산자 집합을 사용하여 이 규칙을 추가로 제어할 수 있습니다. 예를 들어 범위 연산자로 “..”를 OR 연산자로 “|”로 사용할 수 있습니다. 최근에, 영의 메일링 리스트에는 어떤 순서와 어떤 조합으로도 미리 알려진 것들의 집합으로 구문 분석하는 방법을 묻는 몇 가지 질문이 있었습니다. 간단한 예는 알려진 키와 키 / 값 쌍의 목록이지만 키는 순서대로 정렬 될 수 있습니다. 이 사용 사례는 매우 일반적인 것 같습니다.

다행히 Spirit은 정확히 그 목적을 위해 설계된 미리 정의된 파서 구성 요소인 순열 파서를 제공합니다. 편의를 위해 우리는 부스트에 대한 단축을 정의 ::정신 ::정신과 부스트 : :p호닉스 : 이번에는 C ++ 및 라이브러리 주위에 더 고급 주제를 제시하도록 요청받았고, 나는 Boost.Spirit에 대한 자습서를 제시하기로 결정했다. AST 생성을 향한 완전히 새로운 접근 방식과 함께 새로운 부스트 정신 버전이 있음을 명심하십시오. 부스트::정신::qi::lexeme 구문 분석기의 동작을 변경할 수 있는 몇 가지 지시문 중 하나입니다. 부스트::spirit::qi::lexeme if if allow if when askippers.> 2018년 9월 12일, 저는 카를스루에 공과대학(KIT)의 방에서 C++ 사용자 그룹 카를스루에에서 독일어로 라이브 코딩 예제를 90분 더 이야기했습니다. 여기서는 Boost.Variant 및 Boost.recursive_wrapper을 사용하여 ASTValue가 문자열과 개체 또는 배열을 저장하도록 했습니다. 예제 11.7은 하나 이상의 숫자를 예상하는 +ascii::digit을 가진 파서를 정의합니다. 이 구문, 특히 더하기 기호(+)는 정규식에서 사용되는 구문과 유사합니다. 더하기 기호는 문자열에서 적어도 한 번 발생할 것으로 예상되는 문자 또는 문자 그룹을 식별합니다. 예제를 시작하고 하나 이상의 숫자를 입력하면 true가 표시됩니다.

공백에 의해 자릿수가 구분되는지 여부는 중요하지 않습니다. 파서는 공백없이 숫자만 허용해야하는 경우 boost::spirit::qi:lexeme을 다시 사용합니다. 파서가 둘 사이에 공백이 없는 경우에만 두 자리를 수락하려면 boost::spirit::qi:qi::parse() 또는 지시문 부스트:::qi::lexeme을 사용합니다. 버전 2.x 이후, Boost.Spirit는 생성기뿐만 아니라 파서생성에 사용할 수 있습니다. 구문 분석자가 텍스트 형식을 읽는 동안 생성기는 텍스트 형식을 작성합니다. 파서를 개발하는 데 사용되는 Boost.Spirit의 구성 요소를 Spirit.Qi라고 합니다. Spirit.Karma는 발전기를 개발하는 데 사용되는 구성 요소입니다. 네임 스페이스는 그에 따라 분할됩니다 : 파서를 개발하는 클래스와 기능은 부스트에서 찾을 수 있습니다 ::정신 ::qi 및 발전기를 개발하는 클래스 및 함수는 부스트에서 찾을 수 있습니다 ::spirit:karma.