mik*_*ldk 5 javascript parsing peg
我已经看过用于JavaScript的PEG.js解析器生成器.它看起来很漂亮!
我没有太多指定语法的经验.我正在寻找帮助,将示例语法扩展到1位以允许
你能帮助我找到帮助吗?
这是快速演示:
{
variables = {
PI : Math.PI,
E : Math.E
};
functions = {
squared : function(n) { return n * n; },
incr : function(n) { return n + 1; }
}
}
start
= additive
additive
= left:multiplicative "+" right:additive { return left + right; }
/ multiplicative
multiplicative
= left:power "*" right:additive { return left * right; }
/ power
// evaluated left to right!
power
= left:primary "^" right:additive { return Math.pow(left, right); }
/ primary
primary
= integer
/ "(" e:additive ")" { return e; }
/ i:id "(" e:additive ")" { return functions[i.join("")](e); }
/ i:id { return variables[i.join("")]; }
integer
= digits:[0-9]+ { return parseInt(digits.join(""), 10); }
id
= [a-zA-Z]+
Run Code Online (Sandbox Code Playgroud)
如果您现在使用输入测试解析器(在线):
PI+incr(squared(3))^2
Run Code Online (Sandbox Code Playgroud)
你会看到它被评估为:
103.1415926535898
Run Code Online (Sandbox Code Playgroud)