Описание тега boost-spirit-lex
1
ответ
Нечувствительные к регистру ключевые слова с boost::spirit::lex
Есть ли способ распознать конкретные шаблоны без учета регистра? Например, если у меня есть literal_bool = L"True|False"; this->self.add(literal_bool, TokenId_LiteralBool); Как я могу соответствовать true, TRUE, tRuE избегая при этом писать [Tt][…
21 окт '16 в 11:24
1
ответ
Как использовать boost::spirit::qi с std::vector<token_type> вместо std::string
В приложении я в основном хочу иметь фазу "предварительного разбора", где я настраиваю поток токенов, прежде чем парсер Q сможет его увидеть. Одним из способов сделать это было бы иметь какой-то "адаптер lexer", который построен из lexer и сам по се…
23 авг '15 в 07:04
1
ответ
Как заставить дух qi::as_string работать с повтором?
По какой-то странной причине я не могу получить qi::as_string[] работать с repeat()[], анализ std::string str = { "{ +100S+++ ;\n }" };, Я получаю следующий результат PLUS OR MINUS+ THREE PLUS OR MINUS PARSED FINE ------------------------- Parsing s…
29 дек '12 в 18:38
1
ответ
Я не могу получить строковое значение токена
Я пытаюсь реализовать Lexer для небольшого языка программирования с Boost Spirit. Я должен получить значение токена и получить исключение bad_get: прекращение вызова после создания экземпляра 'boost:: bad_get' what (): boost:: bad_get: не удалось по…
14 окт '11 в 08:35
0
ответов
Разбор своеобразного унарного знака минус с помощью Spirit.Lex
Я пытаюсь разобрать язык, где унарный минус отличается от двоичного минуса пробелами, существующими вокруг знака. Ниже приведены некоторые псевдо-правила, определяющие, как знак минус интерпретируется на этом языке: -x // unary x - y // binary x-y /…
28 июн '12 в 00:32
1
ответ
Не могу скомпилировать пример буст-духа word_count_lexer
Я продолжаю изучать библиотеку Boost Spirit и у меня есть проблема с примером, который я не могу скомпилировать. Источник примера вы можете найти здесь: источник место. Также вы можете посмотреть этот код и скомпилировать результат на Coliru #includ…
25 сен '15 в 16:36
1
ответ
Не могу скомпилировать буст-дух example4.cpp
Я продолжаю изучать библиотеку Boost Spirit, и у меня есть проблема с примером, которую я не могу скомпилировать. Источник примера вы можете найти здесь: источник место. Также вы можете посмотреть этот код и скомпилировать результат на Coliru. #incl…
02 окт '15 в 12:39
1
ответ
Пробел шкипера при использовании Boost.Spirit Qi и Lex
Давайте рассмотрим следующий код: #include <boost/spirit/include/lex_lexertl.hpp> #include <boost/spirit/include/qi.hpp> #include <algorithm> #include <iostream> #include <string> #include <utility> #include <v…
13 сен '16 в 10:54
1
ответ
Использование лексерных атрибутов токенов в грамматических правилах с Лексом и Ци из Boost.Spirit
Давайте рассмотрим следующий код: #include <boost/phoenix.hpp> #include <boost/spirit/include/lex_lexertl.hpp> #include <boost/spirit/include/qi.hpp> #include <algorithm> #include <iostream> #include <string> #inc…
13 сен '16 в 11:29
1
ответ
Сравнение строк с учетом регистра символов Boost::Spirit Token в семантическом действии
У меня есть токенизатор и парсер. синтаксический анализатор имеет специальный тип токена, KEYWORD, для ключевых слов (их ~50). В моем парсере я хочу убедиться, что токены соответствуют моим ожиданиям, поэтому у меня есть правила для каждого из них. …
14 дек '14 в 11:45
1
ответ
Ошибка грамматики / лексера Boost.Spirit SQL
У меня две проблемы со следующей грамматикой SQL: #define BOOST_SPIRIT_QI_DEBUG #include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/lex_lexertl.hpp> #include <boost/spirit/include/phoenix.hpp> #include <boost/s…
07 авг '13 в 10:12
1
ответ
Как реализовать директивы include, используя boost::spirit::lex?
У меня есть простой анализатор конфигурационных файлов, созданный из spirit:: lex и spirit::qi. Когда лексер достигает шаблона include "path" Я хочу, чтобы текст файла был включен. Как вы, возможно, знаете, spirit::lexer::begin() запускает процесс с…
09 май '12 в 22:47
1
ответ
Изменение порядка подчиненных правил внутри правила в boost::spirit грамматике приводит к segfault
Предупреждение; пока я пытался сократить код до минимума. Мне все еще пришлось включить немало, чтобы обеспечить наличие необходимой информации. Этот код компилирует файлы и запускается, что приводит к синтаксической ошибке; name = simple_name [ qi:…
04 сен '13 в 11:00
1
ответ
Повысьте:: Дух::Lex; Как мне указать токен "||"?
Так что мой вопрос довольно прост, в моем классе лексера (расширение lex::lexer<T>), У меня есть следующее; this->self.add ... ("&&", AND_AND) ("||", OR_OR) ... Внутри моего конструктора, который прекрасно компилируется, но запускае…
20 авг '13 в 23:21
1
ответ
Нужна помощь с лексером runtime_error
Я пытаюсь написать синтаксический анализатор Си для модифицированного языка Си. Когда я отменяю комментарий к разделу t_in_op и ниже, я получаю сообщение об ошибке run_time Синтаксическая ошибка: нажмите BEGIN, когда '+' по индексу 1 (или что-то в э…
21 авг '11 в 07:35
1
ответ
Как преобразовать значение токена boost::spirit::lex из iterator_range в строку?
Когда я пытаюсь преобразовать значение токена из iterator_range, лексер терпит неудачу при попытке прочитать следующий токен. Вот структура Tokens, которая содержит определения токенов: (Я не думаю, что это актуально, но я включаю на всякий случай.)…
02 май '12 в 03:38
1
ответ
Как сделать значение токена Boost.Spirit.Lex подстрокой совпадающей последовательности (предпочтительно группой соответствия регулярному выражению)
Я пишу простой анализатор выражений. Он основан на грамматике Boost.Spirit.Qi на основе токенов Boost.Spirit.Lex (Boost в версии 1.56). Токены определены следующим образом: using namespace boost::spirit; template< typename lexer_t > struct tok…
18 фев '16 в 08:37
1
ответ
Повышение духа: как сопоставить любой лексер-токен в ци?
Я хотел бы сопоставить объявление функции C++ со значениями аргументов по умолчанию, но игнорируя эти значения. Например: int myFunction(int a, int b = 5 + 4); Вот (часть) лексер: struct Lexer : boost::spirit::lex::lexer<lexer_type> { Lexer() …
09 июн '15 в 08:50
1
ответ
Необработанное исключение, использующее Boost Spirit для разбора грамматики
Я пытаюсь использовать Boost Spirit для разбора следующей грамматики: предложение: существительное глагол предложение предложение предложение соединение: "и" существительное: "птицы", "кошки" глагол "летать" "мяу" Разбор успешен, когда грамматика вк…
30 июл '13 в 07:57
1
ответ
Как объединить boost::spirit::lex & boost::spirit::qi?
У меня есть лексер, и на основе этого лексера я хочу создать грамматику, в которой используются токены, сгенерированные этим лексером. Я попытался адаптировать некоторые примеры, которые я нашел, и теперь у меня есть что-то, что компилируется и рабо…
15 ноя '12 в 10:21