Ожидается любой символ, кроме найденного конца ввода
Мой ввод - рекурсивная структура выглядит следующим образом (обратите внимание на пустую 2-ую строку):
xxx @ {} гггг @{ zzz @{} wwww }
грамматика, которую я вижу, прочитав ее, должна выглядеть так:
start = item+
item = thing / space
thing = '@{' item* '}'
space = (!'@' .)+
но то, что я получаю
Строка 2, столбец 1: ожидается "@{", "}" или любой другой символ, кроме конца ввода.
Что я делаю неправильно?
2 ответа
Я вообще не знаю колышек, но быстрый взгляд на документы говорит, что проблема в 4-м правиле - проблема. Онлайн-парсер успешно работает с:
start = item+
item = thing / space
thing = '@{' item* '}'
space = [ a-z]+
Это производит:
[
[
"x",
"x",
"x",
" "
],
[
"@{",
[],
"}"
],
[
" ",
"y",
"y",
"y",
" "
],
[
"@{",
[
[
" ",
"z",
"z",
"z",
" "
],
[
"@{",
[],
"}"
],
[
" ",
"w",
"w",
"w",
"w",
" "
]
],
"}"
]
]
Чтобы запустить его, я изменил код следующим образом:
start = item+
item = thing / space
thing = '@{' item* '}'
space =[^@}]+