У меня есть файл yacc, описывающий определенный язык, для которого я разрабатываю редактор с использованием IMP (проект eclipse). Я использую LPG в качестве генератора анализатора, поэтому мне нужно было извлечь правила BNF из моего файла yacc. полученный мной файл yacc содержит правила и действия. Однако я хотел извлечь только правила описания грамматики, которые будут использоваться в LPG. один из способов сделать это - вручную извлечь правила и переформатировать их в синтаксис BNF (или, возможно, написать программу, чтобы преобразовать ее так, как я этого хочу). Мне было интересно, есть ли автоматизированный способ сделать это. Я читал в некоторых блогах, что bison может помочь, но я не мог точно найти подходящие команды. может кто знает как бороться с этой проблемой.
Я не могу опубликовать файл yacc, который у меня есть, так как он конфиденциальный. но я мог бы привести пример следующим образом
argExprList:
assignExp
{
// some rules here
}
| assignExpList ',' assignExp
{
//some other rules here
}
;
то, во что я хотел его преобразовать, просто похоже на
argExpList ::= assignExp|assignExpList ',' assignExp