Ometa是"一种新的面向对象的模式匹配语言".我在Oz工具等语言中遇到了模式匹配,以解析之前的Lexx/Yacc或Pyparsing等语法.尽管查看示例代码,阅读讨论以及与朋友交谈,我仍然无法真正理解Ometa的特殊之处(或者至少为什么有些人认为是这样).任何解释?
此外,对我来说最重要的是,Ometa的Squeak端口允许左递归规则.
从它的PEG遗产来看,它得到了回溯和无限的前瞻.先前解析结果的记忆允许线性解析时间(几乎所有时间(*)).
高阶制作允许人们轻松地重构语法.
本文 - Packrat Parsers可以支持左递归 - 解释左递归属性.
(*)论文的第5节解释了一个人可能遭受超线性解析时间,但这个问题并没有在实际语法中体现出来.
从我所知道的,这是一种元语言.您可以创建新的语言结构,并创建DSL; 但最引人注目的是你可以从现有的解析器中继承子语言来扩展语言.无论如何,这就是我记得的.
我发现这很有趣:http://www.moserware.com/2008/06/ometa-who-what-when-where-why.html