Здравствуйте, TimurSPB, Вы писали:
TSP>Здравствуйте, jazzer, Вы писали:
J>>потом скорми
TSP>Если сделать вот так: TSP>То выдает загадочную ошибку:
TSP>Error 2 error C2664: 'boost::spirit::impl::abstract_parser<ScannerT,AttrT>::do_parse_virtual' : cannot convert parameter 1 from 'const scanner_t' to 'const boost::spirit::scanner<> &' \trunk_out\.packages\win32.vc8\rootsboost\include\boost\spirit\core\non_terminal\impl\rule.ipp 190
TSP>Во всей документации не найти тривиального считывания данных в структурку.
То, что я написал — это и есть способ.
Твоя ошибка мне ни о чем не говорит, разбирайся, попробуй тривиальные правила, типа считать все в одну строку.
Я не компилировал свой код.
Кстати, если у тебя всегда точка с запятой стоит после команды, то лист-парсер тут не нужен, можешь просто использовать плюсик
Еще раз — я не компилировал, пишу прямо в браузере.
Ошибки компиляции тебе придется побороть самому
Также я не уверен насчет space_p — не помню, чтоб я его явно указывал у себя...
выделяет РОВНО n цифр для преобразования в число
Как сделать что типа:
str_parser< n > str_n_p;
т. е. описать парсер, который выделяет равно n символов?
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, TimurSPB, Вы писали:
TSP>>Спасибо jazzer и Аноним =)
не за что
ЗЫ Зарегался
Re: boost::spirit и структура
От:
Аноним
Дата:
28.05.09 11:57
Оценка:
Те примеры, которые приведены не очень хорошо работают (точнее не работают) при разборе больших грамматик. Скорее всего Вам прийдётся обявлять свои грамматики, которые отвечают за какое-либо подмножество грамматики.
В общем, способ такой:
struct SMyStruct
{
long _n1;
long _n2;
}
struct SClosureMy : boost::spirit::closure<Sxxx , SMyStruct>
{
member1 sResult;
};
Сохранить результат м
Вот из такого рода элементов можно уже состряпать сколь угодно сложную грамматику (я си-подобный синтаксис парсил, чтобы вытащить все определения типов и переменных).