Ometa是“一种用于模式匹配的新的面向对象语言”。我以前在Oz tools等语言中遇到过模式匹配,用于解析Lexx/Yacc或Pyparsing等语法。尽管查看了示例代码,阅读了讨论,并与朋友交谈,但我仍然无法真正理解Ometa的特别之处(或者至少,为什么有些人认为它是特别的)。有什么解释吗?
发布于 2008-12-10 09:27:13
此外,对我来说最重要的是,Ometa的Squeak端口允许使用左递归规则。
从它的PEG传统,它得到了回溯和无限的前瞻。先前解析结果的记忆允许线性解析时间(几乎所有时间(*))。
高阶产生式允许人们轻松地重构语法。
This paper - Packrat解析器可以支持左递归-解释左递归属性。
(*)本文的第5节解释了超线性解析时间,但这个问题在实际语法中并不明显。
发布于 2008-09-20 05:34:20
据我所知,这是一种元语言。您可以创建新的语言构造,也可以创建DSL;但最引人注目的是,您可以从现有解析器派生子类来扩展一种语言。不管怎么说,这就是我所记得的。
我发现这很有趣:http://www.moserware.com/2008/06/ometa-who-what-when-where-why.html
https://stackoverflow.com/questions/106431
复制相似问题