预期任何字符,但输入结束

时间:2017-01-07 04:07:45

标签: parsing grammar peg pegjs

我的输入是一个递归结构,如下所示(注意空白的第二行):

  

xxx @ {} yyy @ {zzz @ {} wwww}
     

我所看到的语法应该是这样的:

start = item+
item = thing / space
thing = '@{' item* '}'
space = (!'@' .)+

但我得到的是

  

第2行,第1列:预期“@ {”,“}”或任何字符,但输入的结尾。

我做错了什么?

2 个答案:

答案 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