Здравствуйте, alex_public, Вы писали:
_>Ну т.е. если перевести с твоего языка на русский, то будет: "не могу". )))
В переводе на русский будет — "у alex_public в Киеве дядька".
Напомню твой залёт:
- Если есть желание продемонстрировать честный аналог Spirit'a в стиле C, то надо взять исходники Bison + Flex.
Spirit — это фреймворк для построения
комбинаторного парсера. Напротив, семейство yacc (и его многочисленные клоны, включая бизона, бизона++ и прочих буфалло) — это полноценные
LALR(1),
LR(1), местами
LR(k) и даже
GLR-парсеры.
Похоже, эти перечисленные абревиатуры являются для тебя натуральной китайской грамотой, коль ты умудряешься давать советы, типа таких:
Если бы в моём проект стоял выбор между использованием Bison + Flex и Spirit, то скорее всего я бы предпочёл последнее, в силу более удобного API
Т.е., даже не глядя на вид грамматики, ты уже сделал выбор по некоему мифическому АПИ.
Откуда ты знаешь, какой АПИ у того же Bison++? Да у него чудесный С++ АПИ.
Мало того, АПИ Spirit просто ужасно, коряво, неюзабельно и сугубо write-only. Оно ужасно именно из-за тех вещей, что EDSL в С++ не всегда выходит гладко, особенно в деле ДЕКЛАРАТИВНОГО описания грамматик для парсинга с попыток связать эту декларацию с колбэками (semantic actions). Не они первые и не они последние, насчет EDSL парсеров в С++. Это болезнь роста как специалиста C++, многие через неё проходят.
Далее вообще смешно:
- Можешь предложить более близкий аналог Spirit'a из мира C? )
Тут сначала упал со стула, затем поднялся и внятно тебе ответил:
Слава богу, редко кому в голову приходила идея реализовывать комбинаторные парсеры на С. Комбинаторные парсеры — это изобретение далёких от программирования людей, которые пользовали в ежедневной практике функциональные языки. Они не знали теорию грамматик и писали парсеры "в лоб", получая естественные тормоза и жор памяти.
Похоже, ты не понял ответа моего и так не слишком завуалированного ответа, поэтому, перевожу на совсем прямую речь:
— комбинаторные парсеры предназначены для
случайных в отрасли людей;
— случайные в отрасли люди редко пишут на С (как минимум редко пишут генераторы парсеров на С, ы-ы-ы).
Тем не менее, реализаций парсеров семейства PEG на С существует
более одной. Сие означает, что я-то как раз "могу" (могу привести примеры), но считаю их эээ... малость "неприличными" для приличного общества. Потому что упоминание PEG всуе, это как выйти на Красную площадь и ругаться матом. Судя по твоему ответу, ты не в курсе всех этих тонкостей, но опять и снова поторопился выступить в роли тролля. )) ИМХО, тролль должен хорошо разбираться в предмете, иначе это не тролль, а так, неудачная мимикрия из разряда "обалажался — притворись троллем".
Одно меня радует в приведенных ссылках на комбинаторные парсеры на С (который peg/leg), что после многолетней упорной смены версий и роста их аж до 0.1.18 (т.е. даже не альфы), авторы, судя по всему, одумались. Ну, мож, прочитали пару книг, наконец...
Чего и всем советую.