我最近在Python中使用Ply編寫了一個解析器(這是yacc的python重新實現)。當我幾乎完成解析器時,我發現我需要解析的語法需要我在解析過程中查看一些信息以通知詞法分析器。如果不查看通知詞法分析器,我無法正確解析語言中的字符串。Parsec的Python實現?
鑑於我能從語法規則中控制詞法分析器的狀態,我想我會在解析器模塊中使用查找表來解決我的使用案例,但維護/測試可能會變得非常困難。所以我想知道其他一些選擇。
在Haskell我會使用Parsec,一個解析函數庫(稱爲組合器)。有沒有Parsec的Python實現?或者,也許還有一些其他生產質量庫充滿了解析功能,所以我可以在Python中構建一個上下文敏感的解析器?
編輯:我所有的上下文免費解析嘗試都失敗了。出於這個原因,我不希望ANTLR在這裏有用。
在我的情況下,我需要的不僅僅是傳統的解析。出於理論上的原因,我所有編寫傳統上下文免費解析器的嘗試都已經落在他們的面前。在這一點上,我相當有信心,至少需要有條件的學習。 ANTLR仍然適用? – 2008-09-18 18:03:13
你可以用ANTLR向前看,如果你需要的話,你可以在你的語法中添加語法和謂詞(語義謂詞也存在)。 使用antlrwork,它對設計/調試語法(http://www.antlr.org/works/index.html)非常有幫助。 ANTLR網站上也有現成的語法。 – 2008-09-19 13:39:04