1

嗨,我是 Jison 的新手,正在努力学习它。我在http://techtonik.github.io/jison/try/上尝试了在线 jison 解析器计算器代码。它适用于表达

5*PI^2. 

但是当我在换行符上添加一个新表达式时,解析器不会采用换行符并尝试解析另一个表达式,就好像它在同一行上一样。

Input :
        5*PI^2
        23+56

解析器将其视为:

5*PI^223+56

这失败了,因此我想知道如何在 jison 解析器中解析换行符。

4

1 回答 1

3

这里的问题是 Jison 解析器需要一个表达式来解析,它会尝试评估整个文本是否有效。在这种情况下,您给它的是两个单独的表达式,它们不能一起正确计算,这就是它失败的原因。例如,如果您评估

5*PI^2
+
23+56

那么它就没有问题了。这是因为 Jison 试图解析它给出的整个值,它允许您将复杂的表达式分解为多行。

但是,如果您愿意,这并不能阻止您单独评估行。无需将字段中的整个文本传递给 parse 函数,只需使用 JavaScript 的字符串拆分方法将文本拆分为一个数组(拆分换行符,'\n'),然后循环并传递每一行内容分别到解析函数。

于 2015-05-01T01:25:22.517 回答