Boost :: Spirit :: Qi Compiler Error при попытке интегрировать анализатор SkipC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Boost :: Spirit :: Qi Compiler Error при попытке интегрировать анализатор Skip

Сообщение Anonymous »

Я впервые стараюсь написать свою собственную грамматику с Spirit :: qi, и мне не удастся интегрировать анализатор скипа, который должен игнорировать комментарии стиля C, а также пробелы. Вот мой исходный файл (я уменьшил грамматику до нескольких правил, чтобы быть более кратким: < /p>
#include
#include
#include
#include
#include
#include
#include "formulaNode.h"

namespace qi = boost::spirit::qi;
namespace phoenix = boost::phoenix;

using FormulaNodePtr = compiler::FormulaNode*;
using ExpressionPtr = compiler::Expression*;

template
struct ArithmeticGrammar : qi::grammar {
ArithmeticGrammar() : ArithmeticGrammar::base_type(formula, "Formula") {
using namespace qi;

localSkipper = qi::space | ("/*" >> *(qi::char_ - "*/") >> "*/");

formula = unsignedFactor [_val = _1];

unsignedFactor =
numericConstant [_val = phoenix::new_(_1)];

numericConstant = qi::as_string[
qi::lexeme[ -qi::char_('-') >>
(+qi::digit >> -(qi::char_('.') >> +qi::digit)) >>
-(qi::char_('e') >> -qi::char_('-') >> +qi::digit)
]];
}

qi::rule formula;
qi::rule unsignedFactor;
qi::rule numericConstant;
qi::rule localSkipper;
};

// Parsing function
bool parseExpression(const std::string& input, FormulaNodePtr& result)
{
using Iterator = std::string::const_iterator;
ArithmeticGrammar grammar;

Iterator it = input.begin();
Iterator end = input.end();

bool success = qi::phrase_parse(it, end, grammar, grammar.localSkipper, result);

if (!success || it != end)
{
if (result == nullptr) {
std::cout

Подробнее здесь: https://stackoverflow.com/questions/795 ... kip-parser
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Boost :: Spirit :: Qi Compiler Error при попытке интегрировать анализатор Skip
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Boost Spirit x3 путаница в разборе фраз
    Гость » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость
  • Как я могу использовать полиморфные атрибуты с Boost :: Spirit :: Qi Parsers?
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Обновление Boost :: Spirit Parserer
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как проанализировать логическое выражение в Boost :: Spirit
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»