Я пытался узнать OMeta, используя OMeta/JS, и я, кажется, зацикливаюсь на чем-то, что должно быть очень просто. Если у меня есть грамматикуКак совместить слово с OMetaJS?
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 грамматику к выходу «привет»?
Это ошибка, которая, вероятно, уже решена. Я проверил ваш пример на моей тестовой странице oMeta (http://ruediger-plantiko.net/ometa/), и он работает без знака равенства (нужно вызвать объект M на моей тестовой странице, но это не имеет значения). – rplantiko