2008-09-19 39 views
23

Ometa是「一種新的面向對象的模式匹配語言」。我在Oz工具等語言中遇到了模式匹配,以便在之前解析像Lexx/Yacc或Pyparsing這樣的語法。儘管查看示例代碼,閱讀討論以及與朋友交談,但我仍然無法真正瞭解Ometa的特色(或者至少爲什麼有些人認爲它)。任何解釋?什麼使Ometa特別?

回答

8

這是一個元語言,從我可以告訴。您可以創建新的語言結構,並創建DSL;但最引人注目的是,您可以從現有解析器中繼承子類來擴展語言。無論如何,這正是我所能記住的。

我發現這很有趣:http://www.moserware.com/2008/06/ometa-who-what-when-where-why.html

+1

子類化不是您可以將語法組合起來的唯一方式,ometa還提供了一個外部規則調用機制。當你想從多個類「派生」時,這很有用。 – 2012-01-18 05:09:25

11

而且,最重要的是我,Ometa的佳樂端口允許左遞歸規則。

從它的PEG遺產中獲得回溯和無限的前瞻。先前解析結果的記憶允許線性解析時間(幾乎所有時間(*))。

高階製作允許人們輕鬆重構語法。

This paper - Packrat解析器可以支持左遞歸 - 解釋左遞歸屬性。 (*)本文的第5部分解釋說,可能會遇到超線性解析時間,但是這個問題並沒有在實際的語法中體現出來。

+0

大概你不能有左遞歸和線性解析時間,但? – 2009-02-16 17:50:45