是什么让Ometa与众不同?

时间:2008-09-19 23:41:55

标签: parsing programming-languages grammar ometa

Ometa是“一种新的面向对象的模式匹配语言。”我在Oz工具等语言中遇到了模式匹配,以解析之前的Lexx / Yacc或Pyparsing等语法。尽管查看示例代码,阅读讨论以及与朋友交谈,我仍然无法真正理解Ometa的特殊之处(或者至少为什么有些人认为是这样)。有什么解释吗?

2 个答案:

答案 0 :(得分:12)

另外,对我来说最重要的是,Ometa的Squeak端口允许左递归规则。

从它的PEG传统中,它得到了回溯和无限的前瞻。对先前解析结果的记忆允许线性解析时间(几乎所有时间(*))。

高阶制作允许人们轻松地重构语法。

This paper - Packrat Parsers可以支持左递归 - 解释左递归属性。

(*)该论文的第5节解释了一个人可能遭受超线性解析时间,但这个问题并没有在实际语法中体现出来。

答案 1 :(得分:8)

从我所知道的,这是一种元语言。您可以创建新的语言结构,并创建DSL;但最引人注目的是你可以从现有的解析器中继承子语言来扩展语言。无论如何,这就是我记得的。

我发现这很有趣:http://www.moserware.com/2008/06/ometa-who-what-when-where-why.html

相关问题