WEB开发网
开发学院软件开发Python 可爱的 Python: 使用 SimpleParse 模块进行解析 阅读

可爱的 Python: 使用 SimpleParse 模块进行解析

 2008-11-13 13:16:18 来源:WEB开发网   
核心提示: 这就是它所做的,首先读入语法,可爱的 Python: 使用 SimpleParse 模块进行解析(7),然后根据语法创建一个 mxTextTools 解析器,接下来,就是用一个字典作为一个 switch 语句(尽管示例中的 otherwise 情况还是太狭窄了),这个想法就是:将来我们可能

这就是它所做的。首先读入语法,然后根据语法创建一个 mxTextTools 解析器。接下来,我们将标记表/解析器应用于输入源来创建一个标记列表。最后,我们循环遍历标记列表,并且发出一些新的标记文本。当然,该循环可以对遇到的每个产品做我们所期望的任何其它事情。

由于智能 ASCII 所使用的特殊语法,源文本中的任何内容都可归类于“plain”产品或“markup”产品。因此,对于循环遍历标记列表中的单个级别,它已经足够了(除非我们正好寻找比特定标记产品级别低一级的级别,譬如“title”)。但是格式更自由的语法 ― 譬如出现在大多数编程语言中的语法 ― 可以轻松地在标记列表中向下递归,并在每个级别上寻找产品名称。例如,如果一种语法中允许嵌套标记代码,或许可以使用这种递归风格。您可能会喜欢弄清如何调整语法的练习(提示:请记住允许各产品彼此递归)。

转至输出的特殊标记代码还是存储到另一个文件中了,这是由于组织的原因而非本质原因。在这里我们使用了一个技巧,就是用一个字典作为一个 switch 语句(尽管示例中的 otherwise 情况还是太狭窄了)。这个想法就是:将来我们可能希望创建多种“输出格式”的文件,比如说 HTML、DocBook、LaTeX 或者其它格式。用于示例的特殊标记文件类似于:

typo_html.py

codes =
{
    
     'emph'
      : (
    
     '<em>'
    ,
    
     '</em>'
    ),
 
    
     'strong'
     : (
    
     '<strong>'
    ,
    
     '</strong>'
    ),
 
    
     'module'
     : (
    
     '<em><code>'
    ,
    
     '</code></em>'
    ),
 
    
     'code'
      : (
    
     '<code>'
    ,
    
     '</code>'
    ),
 
    
     'title'
      : (
    
     '<cite>'
    ,
    
     '</cite>'
    ),
}

上一页  2 3 4 5 6 7 8  下一页

Tags:可爱 Python 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接