WEB开发网
开发学院软件开发Python Python 创建声明性迷你语言 阅读

Python 创建声明性迷你语言

 2007-03-30 12:31:54 来源:WEB开发网   
核心提示: 清单 3. EBNF 样本word:= alphanums, (wordpunct, alphanums)*, contraction?alphanums := [a-zA-Z0-9]+wordpunct := [-_]contraction := "'", (

清单 3. EBNF 样本

word    := alphanums, (wordpunct, alphanums)*, contraction?
alphanums  := [a-zA-Z0-9]+
wordpunct  := [-_]
contraction := "'", ("clock"/"d"/"ll"/"m"/"re"/"s"/"t"/"ve")

如果您遇到一个单词而想要表述其看上去 可能会是什么,而实际上又不想给出如何识别它的序列指令,上面便是个简练的方法。正则表达式与此相似(并且事实上它能够满足这种特定语法产品的需要)。

还有另一个声明性示例,请研究描述有效 XML 文档方言的文档类型声明:

清单 4. XML 文档类型声明

<!ELEMENT dissertation (chapter+)>
<!ELEMENT chapter (title, paragraph+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT paragraph (#PCDATA | figure)+>
<!ELEMENT figure EMPTY>

和其它示例一样,DTD 语言不包含任何有关如何识别或创建有效 XML 文档的指令。它只描述了如果文档存在,那它会是怎么样的。声明性语言采用虚拟语气。

Python 作为解释器 vs Python 作为环境

Python 库可以通过两种截然不同的方式中的一种来利用声明性语言。或许更为常用的技术是将非 Python 声明性语言作为数据来解析和处理。应用程序或库可以读入外部来源(或者是内部定义的但只用作“blob”的字符串),然后指出一组要执行的命令式步骤,这些步骤在某种形式上与那些外部声明是一致的。本质上,这些类型的库是“数据驱动的”系统;声明性语言和 Python 应用程序执行或利用其声明的操作之间有着概念和范畴差别。事实上,相当普遍的一点是,处理那些相同声明的库也被用来实现其它编程语言。

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

Tags:Python 创建 声明

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