2011-03-19 51 views
2

我正在寫一個應用程序,它讀取當前有自己的文法的輸入文件,該文件由lex/yacc處理。Python解析器模塊教程

我正在修改這個,以便使這個輸入文件成爲一個Python腳本,而且想知道是否有人能指點我的初學者指南,以在Python中使用解析器模塊。我對Python本身相當陌生,但已經在網上教程中找到了相當一部分內容。

從我研究的內容來看,我知道有些選項(如pyparsing)可以讓我保留現有的語法並使用Pyparsing作爲lex/yacc的替代品。不過,我很想了解更多的Python解析器模塊並探討其可行性。

謝謝。

回答

2

您的意思是the parser module?它只是用於Python源代碼的解析器,而不是通用的解析器。你不能用它來解析別的東西。

+0

是的,這就是我所指的。我正在考慮讓輸入文件到我的應用程序是一個python文件。所以語法是python語言,這個解析器模塊會解析它。我只是想知道這是否有一個更友好的教程。 – endbegin 2011-03-19 02:17:45

+0

在這種情況下,您可能會發現內置的ast模塊更易於使用。 – 2011-03-19 02:26:39

+0

感謝您的回覆。你能推薦一個關於在Python中使用AST模塊的初學者級別的教程嗎?我試圖搜索網頁,但沒有看到具體的東西。 – endbegin 2011-03-22 20:18:55

2

正如Jochen所說,perser模塊用於解析Python代碼。我認爲你最好檢查出Ned Batchelder's list of parsers。 PyParsing與Lex和Yacc完全不同,所以我不確定爲什麼你認爲你可以保留現有的語法和詞法分析器。更好的選擇可能是David Beazley的PLY工具包。它很穩定,並且有很好的文檔。

+0

我想遠離lex/yacc的一般方式。我剛剛在ast模塊上看到您的建議,並會嘗試找到一個友好的教程。謝謝。 – endbegin 2011-03-19 02:40:55

1

我建議你看看https://github.com/erezsh/lark

這對於初來乍到的解析是偉大的:它可以分析所有的上下文無關文法,它會自動建立一個AST(與線&列號),它接受的語法EBNF格式,被認爲是標準格式,非常易於編寫。