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

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

 2008-11-13 13:16:18 来源:WEB开发网   
核心提示: 这里,我们可能需要回顾一下,可爱的 Python: 使用 SimpleParse 模块进行解析(3), mxTextTools 提供给我们的“标记列表”是什么东西?这基本上是一个嵌套结构,它只是给出了每个产品在源文本中匹配的字符偏移量,“智能 ASCII

这里,我们可能需要回顾一下。 mxTextTools 提供给我们的“标记列表”是什么东西?这基本上是一个嵌套结构,它只是给出了每个产品在源文本中匹配的字符偏移量。 mxTextTools 快速遍历源文本,但是它不对源文本本身 做任何操作(至少当使用 SimpleParse 语法时不进行任何操作)。让我们研究一个简化的标记列表:

从 SimpleParse 语法生成的标记列表

(1,
[('plain',
  0,
  15,
  [('word', 0, 4, [('alphanums', 0, 4, [])]),
  ('whitespace', 4, 5, []),
  ('word', 5, 10, [('alphanums', 5, 10, [])]),
  ('whitespace', 10, 11, []),
  ('word', 11, 14, [('alphanums', 11, 14, [])]),
  ('whitespace', 14, 15, [])]),
 ('markup',
  15,
  27,
...
289)

中间的省略号表示了一批更多的匹配。但是我们看到的部分叙述了下列内容。根产品(“para”)取得成功并结束于偏移量 289 处(源文本的长度)。子产品“plain”的偏移量为 0 到 15。“plain”子产品本身由更小的产品组成。在“plain”产品之后,“markup”产品的偏移量为 15 到 27。这里省略了详细信息,但是第一个“markup”由组件组成,并且源文本中稍后还有另外的产品取得成功。

“智能 ASCII”的 EBNF 样式的语法

我们已经浏览了 SimpleParse + mxTextTools 所能提供的标记列表。但是我们确实需要研究用来生成这个标记列表的语法。实际工作在语法中发生。EBNF 语法读起来几乎不需加以说明(尽管 确实需要一点思考和测试来设计一个语法):

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

Tags:可爱 Python 使用

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