我对PEG.js和匹配词有问题。
它看起来是这样的:Words = "stack"/"overflow"/"stackoverflow" --当我试图匹配“堆栈溢出”时,它会显示错误Expected end of input but "o" found.,因此它找到了stack并认为它是end -- overflow被留下了。
您可以在这里试用:https://pegjs.org/online和粘贴:
Text = Word Word = "stack"/"overflow"/"stackoverflow"并尝试使用单词“堆栈溢出”
我不习惯逐字逐句地换词。
诚挚的问候。
发布于 2017-07-03 12:55:06
PegJS试图匹配第一个值。只有当它不成功的时候,它才会尝试第二个,以此类推。在您的示例中,可以匹配stack,因此它将不再试图匹配其他任何内容。
当一个匹配项是另一个匹配项的前缀时,这个问题将经常出现。在这种情况下,您应该以“更长”的术语开始列表,并将前缀放在末尾:
Text = Word
Word = "stackoverflow"/"stack"/"overflow"您还可以匹配多个单词。在本例中,stack和overflow都将得到匹配,但stackoverflow不会匹配。
Text = Word*
Word = "stack"/"overflow"/"stackoverflow"https://stackoverflow.com/questions/44886088
复制相似问题