Насколько мне известно, нет.
Как вы наверняка знаете, написание собственного инструмента выполнимо, но сложно. Например, символы {
и }
могут отображаться как символьные константы или в виде строк. (Так же как и символы :
и ;
, конечно.)
Если у вас есть конкретные файлы, из которых вы хотите удалить действия, и вы можете положиться на собственную среду и ограничения (т.е. вам не нужно решение для общего случая), может быть относительно простой способ сделать это. это.
Если вам нужно полное общее решение, остаётся взломать код бизона. Признаюсь, не для слабонервных. Тем не менее, большая часть зубров реализована или набросана в зубров.
В источниках бизонов см. scan-gram.l
и parse-gram.y
для команды сканеров / анализаторов бизонов. Токен, на который нужно обратить внимание: BRACED_CODE
.
Теперь, поскольку вам нужно взять файл и сгенерировать почти точную его копию, и вам не нужно понимать это, вы, вероятно, сможете выполнить всю свою работу в лексер. Вы можете использовать scan-gram.l
в качестве основы для своей работы. Полезной модификацией может быть добавление другого состояния (начального условия), чтобы описать, если вы находитесь в разделе пролог / объявление, по сравнению с правилами грамматики. Все, кроме правил грамматики, должно быть напечатано дословно.
Комментарии, пробелы, директивы, большинство знаков препинания, идентификаторы, цифры: просто распечатайте их дословно.
Символы и строки: они требуют своих собственных состояний в лексере, потому что важно найти, где они заканчиваются. (Символьные литералы могут быть длиннее, чем один символ клавиатуры; представьте восьмеричное.) Но, учитывая, что они имеют свои собственные состояния, выведите их дословно.
Код: как символы и строки, вам нужно выяснить, где он заканчивается. Это тоже немного сложнее, потому что он может содержать строки, комментарии и еще много чего. Но как только вы найдете, где это заканчивается, вы можете выйти из состояния кода. Здесь ничего печатать не нужно (кроме скобок, конечно).
Удачи!