Как вы используете пробел в определении BNFC?Есть ли способ использовать пробелы в BNFC?
Например, предположим, что я хочу, чтобы произвести синтаксический анализатор для лямбда-исчисления, где я позволяю список переменных абстрагировать:
\x y z.x z (y z)
«очевидный», что нужно сделать, это использовать меченый правило, как:
ListAbs . Exp ::= "\\" [Ident] "." Exp ;
separator Ident " "
Однако BNFC по умолчанию отменяет пробелы, так что это не работает. Что делает работа с помощью разделителя запятой. Немного уродливее, но я мог бы жить с ним ... Тем не менее было бы неплохо иметь возможность разделить пространство.
Есть ли пробельный класс символов в BNFC?