Как стать автором
Обновить

Комментарии 4

А вы не подскажете, как с помощью Parboiled обработать строчные комментарии в C-стиле (// ...)? В ANTLR я бы их просто вырезал на уровне лексера.
Хороший вопрос!
С C-подобными комментариями мне сталкиваться не приходилось, а вот коментарии, начинающиеся с '#' мне встречались.
Для их устранения писался препроцессор. Он так же решал вопрос с подключением дополнительных файлов (директивы include). Содержимое файлов склеивалось в единую строку, которая потом скармливалась парсеру. Как-то так.
И еще, может быть, такое знаете.
Есть, скажем, логические выражения. Хочу, чтобы строки if(true), if (true) и if true разбирались хорошо, а iftrue — фейлилась.
Но получается, что если написать правило { "if" ~ zeroOrMore(" ") ~ Condition }, то успешно разберется iftrue. Если добавить к пробелам разделитель-скобку { "if" ~ (zeroOrMore(" ") | "(") ~ Condition }, то эта скобка не обработается правилом Condition, где для нее особая логика.
Пытался найти какой-то механизм, как возвращать куски входной строки обратно, чтобы их могло обработать следующее правило, или что-то подобное, но не нашел…
Сталкиваться с подобным не приходилось. Скорее всего возможность двигать курсор существует (внутри парсер очень мутабелен). Об этом лучше на рассылке спросить
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации