2011-03-29 32 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