我一直在尝试使用OMeta/JS来学习 OMeta ,但我似乎陷入了一些应该非常简单的事情上。如果我有语法
ometa L <: Parser {
l letter:l -> l
}
L.match('h', 'l')
它产生预期的输出
h
我也可以使用
ometa W1 <: Parser {
ls letter*:ls -> ls
}
W1.matchAll('hi', 'ls')
哪个生产
[h, i]
但是当我尝试使用解析整个单词时
ometa W2 <: Parser {
word letter:l word:w -> (l + w)
| letter:l -> l
}
W2.match('hi', 'word')
//Also tried W2.matchAll('hi', 'word')
我收到一个错误
match failed { errorPos=61 }
我误解了什么,如何修复 W2 语法以输出“hi”?