-1

我在玩PEG.js

这是我的语法:

start = expression

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

当我在浏览器中执行它时:

obj = parser.parse("test");
for (var i = 0; i <= obj.length; i++) {
    console.log(i + " - " + obj[i])
}

我得到这个输出:

0 - t
1 - e
2 - s
3 - t
4 - undefined

即使我return a.join("")在语法中使用它,为什么它不只加入 1 个单词?

4

2 回答 2

1

parser.parse 确实返回单个单词"test";您一次只打印一个字符。

你的意思是这样做吗?

var result = parser.parse("test");
console.log(result) // "test"
于 2015-10-31T18:58:03.133 回答
1

要直接回答您的问题,您每次迭代都会收到一个字母,因为字符串的作用类似于数组。因此,您一次访问一个字母,方法是使用obj[i]Try this 来返回一个单词。

obj = parser.parse("test");
for (var i = 0; i <= obj.length; i++) {
    console.log(i + " - " + obj)
}
于 2015-10-31T19:13:15.450 回答