我在玩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("")
,为什么它不只连接到一个单词?
parser.parse
是否返回单个单词"test"
;你只是一次打印一个字符。
你是故意这么做的吗?
var result = parser.parse("test");
console.log(result) // "test"
要直接回答您的问题,每次迭代都会得到一个字母,因为字符串的作用类似于数组。因此,您使用obj[i]
一次访问一个字母。尝试此操作可返回一个单词。
obj = parser.parse("test");
for (var i = 0; i <= obj.length; i++) {
console.log(i + " - " + obj)
}