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