簡體   English   中英

解析ALMOST Python語言的最佳方法是什么?

[英]best way to parse a language that's ALMOST Python?

我正在研究在Python之上實現的特定於域的語言。 語法非常接近Python,直到現在我們才進行了一些簡單的字符串轉換,然后將其轉換為ast 例如,縮進由#endfor / #endwhile / #endif語句替換,因此我們將縮進標准化,同時它仍然是一個字符串。

我想知道是否有更好的方法? 據我所知, ast是硬編碼解析Python語法的,除了http://docs.python.org/library/ast.html#module-ast (以及源本身)之外,我找不到任何其他文檔。 , 我想)。

有沒有人有PyParsing,ANTLR或PLY的個人經驗?

有一些模糊的計划將解釋器重寫為將我們的語言轉換為有效的Python並將其提供給Python解釋器本身的東西,所以我想要與compile兼容的東西,但這不是一個交易破壞者。

更新:我剛剛想到了

from __future__ import print_function, with_statement

改變Python解析以下來源的方式。 但是, PEP 236表明這是編譯器功能的語法窗口修整。 有人可以確認試圖覆蓋/擴展__future__不是我的問題的正確解決方案嗎?

PLY有效。 這很奇怪,因為它模仿lex / yacc的方式不是非常pythonic。

lex和yacc都有一個隱式接口,可以將lex的輸出作為獨立程序運行。 這個“功能”被精心保留。 類似地,對於PLY的yacc樣特征。 創建一個奇怪的,隱含的獨立主程序的“特征”被仔細保留。

但是,作為lex / yacc兼容工具集的PLY非常好。 您的所有lex / yacc技能都會得到保留。

[編輯評論。 “修復”Python的語法可能是浪費時間。 幾乎每個人都可以在沒有任何幫助的情 檢查C,Java,C ++甚至Pascal代碼,你會發現幾乎每個人都可以縮進。 實際上,人們不遺余力地在不需要的地方縮進Java。 如果縮進在Java中不重要,為什么人們做得這么好呢?]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM