首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将单词与OMetaJS匹配?

如何将单词与OMetaJS匹配?
EN

Stack Overflow用户
提问于 2010-08-17 01:30:59
回答 1查看 221关注 0票数 3

我一直在尝试使用OMeta/JS学习OMeta,但我似乎被一些本应非常简单的东西卡住了。如果我有一个语法

代码语言:javascript
复制
ometa L <: Parser {
  l letter:l -> l
}
L.match('h', 'l')

它会产生预期的输出

代码语言:javascript
复制
h

我也可以使用

代码语言:javascript
复制
ometa W1 <: Parser {
  ls letter*:ls -> ls
}
W1.matchAll('hi', 'ls')

它会产生

代码语言:javascript
复制
[h, i]

但是当我尝试使用以下命令解析整个单词时

代码语言:javascript
复制
ometa W2 <: Parser {
  word letter:l word:w -> (l + w)
     | letter:l -> l
}
W2.match('hi', 'word')
//Also tried W2.matchAll('hi', 'word')

我得到一个错误

代码语言:javascript
复制
match failed { errorPos=61 }

我误解了什么?我如何修复W2语法以输出“hi”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-17 02:27:04

好吧,我想出了如何得到我想要的结果。答案就在这里,尽管我仍然不明白为什么W2不能工作。我将暂时保留这个问题,并希望有人能来回答这个问题。

代码语言:javascript
复制
ometa W3 <: Parser {
  word letter*:w -> w.join('')
}
W3.matchAll('hi', 'word')

再说一遍:似乎使用速记来省略等号可能会导致错误。将其添加到中会生成正确的答案。

代码语言:javascript
复制
ometa W2 <: Parser {
  word = letter:l word:w -> (l + w)
       | letter:l -> l
}
W2.matchAll('hi', 'word')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3495650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档