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

Python 创建声明性迷你语言

 2007-03-30 12:31:54 来源:WEB开发网   
核心提示: 清单 1. 线性方程式系统样本10x + 5y - 7z + 1 = 017x + 5y - 10z + 3 = 05x - 4y + 3z - 6 = 0这是个相当漂亮的说明对象(x、y 和 z)之间几个关系的简单表达式,在现实生活中您可能会用不同的方式求出这些答案,Python 创建声

清单 1. 线性方程式系统样本

10x + 5y - 7z + 1 = 0
17x + 5y - 10z + 3 = 0
5x - 4y + 3z - 6 = 0

这是个相当漂亮的说明对象(x、y 和 z)之间几个关系的简单表达式。在现实生活中您可能会用不同的方式求出这些答案,但是实际上用笔和纸“求解 x”很烦,而且容易出错。从调试角度来讲,用 Python 编写求解步骤或许会更糟糕。

Prolog 是与逻辑或数学关系密切的语言。使用这种语言,您只要编写您知道是正确的语句,然后让应用程序为您得出结果。语句不是按照特定的顺序构成的(和线性方程式一样,没有顺序),而且您(程序员或用户)并不知道得出的结果都采用了哪些步骤。例如:

清单 2. family.pro Prolog 样本

/* Adapted from sample at:
<http://www.engin.umd.umich.edu/CIS/course.des/cis479/prolog/>
This app can answer questions about sisterhood & love, e.g.:
# Is alice a sister of harry?
?-sisterof( alice, harry )
# Which of alice' sisters love wine?
?-sisterof( X, alice ), love( X, wine)
*/
sisterof( X, Y ) :- parents( X, M, F ),
          female( X ),
          parents( Y, M, F ).
parents( edward, victoria, albert ).
parents( harry, victoria, albert ).
parents( alice, victoria, albert ).
female( alice ).
loves( harry, wine ).
loves( alice, wine ).

它和 EBNF(扩展巴科斯范式,Extended Backus-Naur Form)语法声明并不完全一样,但是实质相似。您可以编写一些下面这样的声明:

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

Tags:Python 创建 声明

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