Pull to refresh

Comments 4

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