2011-11-14 47 views
3

我對使用RPython工具鏈實現一種語言的例子看起來很高低,但迄今爲止我唯一能找到的是this,其中作者寫了一個簡單的BF解釋器。因爲語法非常簡單,所以他不需要使用解析器/詞法分析器生成器。是否有支持在RPython中開發語言的前端?我可以在RPython中使用哪些前端實現語言?

謝謝!

回答

2

我不知道任何專門針對RPython的通用詞法分析器或解析器生成器。有些用Python輸出可能工作,但我不會賭它。但是,rlib.parsing中有一組解析工具。它似乎很有用。 OTOH,文檔中有一個警告:據報道,它仍處於開發,實驗階段,目前只用於Prolog解釋器。

或者,您可以手動編寫前端。 Lexers可能會令人討厭並且不自然,被授予了權限(您可能能夠爲Python實現所使用的DFAs撕掉實用程序模塊)。但是如果你知道正確的算法,解析器是小菜一碟。我是「自上而下運算符優先級解析器」a.k.a.「普拉特解析器」的忠實粉絲,它非常簡單(遞歸下降),但可以輕鬆實現所有表達式解析問題(嵌套,優先級,關聯性等)。有一個關於它們的信息令人沮喪的一點,但幾篇博客已經足夠對我來說:

  • 一個由Crockford(不會推薦它,雖然,它拋出一大堆不相關的東西進入分析器,從而掩蓋了它) ,
  • 另一個在effbot.org(使用Python),
  • 和第三由可悲的是偶數不太出名的傢伙誰的發展自己的語言,Robert Nystrom
+0

感謝您的輸入。對於這樣一個成功的項目來說,顯然有興趣幫助人們編寫他們的語言,而不是有一個簡單的lexing/parsing過程,這似乎很奇怪。我將跳入rlib模塊 - 因爲我的目標範圍很小,所以我可能不需要更多。多謝! – zslayton

+0

像http://fdik.org/pyPEG/可以工作嗎?我也很有興趣創建一種語言...... – mamcx

+0

@mamcx在沒有檢查代碼的情況下,我可以告訴你,任何Python庫(解析或其他方式)都不會像RPython那樣運行,而無需進行嚴重修改。 – delnan

1

Alex Gaynor有ported David Beazley的優秀PLY到RPython。它的documentation是相當不錯的,他甚至給出了一個talk關於使用它來實現PyCon US 2013的翻譯。

+0

第一次使用:Rply與源代碼級別的Ply不兼容:需要一些lexergenerator與Ply模板比較import ply.lex as lex ...,並且在用python parser.py啓動時調用一些RPython代。 –

相關問題