2011-03-29 57 views
2

我想爲用Python編寫的REST API生成有用的文檔。Python文檔字符串解析(通常在Python中解析語言)

我想它應該是這樣的:

''' 
/kittens/ 
This method creates kittens in the browser 

HTTP Params: 
    format(default=json): The format in which kittens will be generated. 
    count(default=10): The number of kittens to generate. 

Returns: 
    A list of kittens. 
''' 

我的語法顯然是:

program = dict 
dict = repeated(name:string | name:dict) 

我想解析這種格式,並得到(例如)Python字典,最好不使用正則表達式。

是否有解析器可用於這種語法?
如果不是,那麼在Python中定義和解析DSL的最簡單方法是什麼?

請注意,我希望而不是使用reStructuredText或任何格式不同於我所描述的。

+0

爲什麼你不想使用reStructuredText或任何其他現有的格式? – mzjn 2011-03-29 17:09:06

+0

因爲我特別想使用我描述的格式。如果reStructuredText支持它,我會很樂意使用它。 – x10 2011-03-29 17:24:36

回答

0

我不知道我知道你想要什麼,但新結構化可以用來捕捉你的信息。例如:

.. method:: kittens(format="json", count=10) 

    Creates kittens in the browser. 

    :param format: The format in which kittens will be generated. 
    :param count: The number of kittens to generate. 
    :return: A list of kittens 

Sphinx明白這句法,這是基本的reST標記的延伸由Docutils定義。

+0

對,這正是我注意到我不想使用的。這是一種不同的語法。這絕對不是人類可讀的。我希望人們能夠閱讀文檔*而不必先編譯它。 – x10 2011-03-30 09:21:10

+0

@ x10:那麼我認爲答案必須是:您的特定語法已經可用的解析器是不太可能的。你必須推出自己的(也許你可以使用[pyparsing](http://pyparsing.wikispaces.com/)或[PLY](http://www.dabeaz.com/ply))。 – mzjn 2011-03-30 16:04:05

+0

Pyparsing,呃?看起來很簡單。讓我們來看看... – x10 2011-03-31 09:55:47