21

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

4

2 回答 2

12

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

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

高阶产生式允许人们轻松重构语法。

这篇论文——Packrat Parsers Can Support Left Recursion——解释了左递归的属性。

(*) 论文的第 5 节解释说,一个人可能会遭受超线性解析时间,但这个问题在实际语法中并不明显。

于 2008-12-10T09:27:12.897 回答
7

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

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

于 2008-09-20T05:34:20.300 回答