我的输入是一个递归结构,如下所示(注意空白的第二行):
xxx @ {} yyy @ {zzz @ {} wwww}
我所看到的语法应该是这样的:
start = item+
item = thing / space
thing = '@{' item* '}'
space = (!'@' .)+
但我得到的是
第2行,第1列:预期“@ {”,“}”或任何字符,但输入的结尾。
我做错了什么?
答案 0 :(得分:0)
我根本不知道peg,但是快速浏览文档似乎说第4条规则中的点是问题所在。在线解析器成功:
start = item+
item = thing / space
thing = '@{' item* '}'
space = [ a-z]+
这会产生:
[
[
"x",
"x",
"x",
" "
],
[
"@{",
[],
"}"
],
[
" ",
"y",
"y",
"y",
" "
],
[
"@{",
[
[
" ",
"z",
"z",
"z",
" "
],
[
"@{",
[],
"}"
],
[
" ",
"w",
"w",
"w",
"w",
" "
]
],
"}"
]
]
答案 1 :(得分:0)
为了让它运行,我将代码修改为:
2^log(N) = N