Неарли по крайней мере один
У меня есть грамматика, в которой я хочу, чтобы между двумя терминами были пробелы (включая новые строки). Должны быть некоторые пробелы, то есть он не должен работать, если два термина соприкасаются, однако пробелов может быть сколько угодно. Проблема, с которой я сталкиваюсь, заключается в том, что пробелы и новые строки - это разные токены. Не могу понять, как вообще сделать "хоть один" в неорлей.
2 ответа
Мне удалось решить эту проблему с помощью модификаторов EBNF:
ws -> %WS | %NL
# At least one whitespace
someWS -> ws:+
# none or some whitespace
manyWS -> ws:*
Если вы используете
moo.js
, чем вы можете заранее определить пробелы с помощью регулярных выражений.