我如何解析像coffeescript中的对象定义

时间:2013-07-07 17:13:22

标签: javascript coffeescript peg pegjs

让我们说我们在cofeescript

中有这个
obj = 
 one:
  one: 11
  two: 12
 two: 2
 three:
  four: 34

并编译为

var obj = {
   one: { one: 11, two: 12 },
   two: 2,
   three: { four: 34 }
}

所以让我说我有这个PEG.js语法

start = expr

vvn = f:[a-z]+
        { return f.join(""); }

spc = [' ''\t''\n']*

number =
    f:([1-9][0-9]*) { return f.join(""); }

string =
    f:[a-z]+ { return f.join(""); }


value =
    spc f:vvn spc ':' spc s:value spc
        { return { var : f, value : s }; }
    / number / string


expr = 
    spc f:vvn spc '=' s:value+
        { return { var: f, value: s} }

如果你想在online PEG parser上对它进行测试,并且two变量在相同的范围内定义2次而不是在第一个one变量之下,那么该语法会做半事。如何检查2条线是否在左侧具有相同的空间,以便将它们添加到相同的范围内?

0 个答案:

没有答案