成都创新互联网站制作重庆分公司

web解释器模式的动机是什么

本篇内容主要讲解“web解释器模式的动机是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web解释器模式的动机是什么”吧!

为增城等地区用户提供了全套网页设计制作服务,及增城网站建设行业解决方案。主营业务为成都网站建设、成都网站设计、增城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

意图

根据语言的语法定义实现一个解释器,用于解释执行该语言的语句。

动机

一般来讲,软件解决问题都是通过程序员编写程序实现的。例如进行计算,通信等。这种方式在大部分情况下是有效的,但是当需求多变的时候,则存在不够灵活的问题。解决这个问题的方法有很多种,例如为处理增加参数,或通过处理的组合形成新处理等等。在某些情况下,如果可以将问题归纳提炼得出某些简单的语句,就可以构建一个解释器来解释并执行。

数学计算就属于这种情况,例如下面的表达式:

  100.0 * sin(29 + (23 * 6)) + sqrt(cos(34 * 5))

对于不同的表达式,输入数据的个数、层级的构成都会不同。这时相对现实的解决办法就是定义一种规则,然后按照这个规则来实现一个解释器并利用这个解释器来解释和执行用户的输入。对于复合算式的例子来讲,执行就是计算出结果。首先我们来定义表达式的规则:

[1]Expr::= AdditiveExpr 

【::=】的含义是【定义为】。因此式[1]可以理解为表达式Expr定义为加法表达式AdditiveExpr。 

[2] AdditiveExpr::=MultiplicativeExpr ( ("+" | "-") MultiplicativeExpr )*

【|】的含义是【或者】,【*】的含义是【0到任意多个】。因此式[2]的含义就是加法表达式AdditiveExpr定义为一个乘法表达式MultiplicativeExpr后面跟着0到任意多个前面带正号或负号的乘法表达式。换一种说法就是若干个被正号或负号连接的乘法表达式。
 
[3]MultiplicativeExpr::= UnaryExpr ( ("*" | "/" | "%" ) UnaryExpr)*

式[3]的含义是乘法表达式MultiplicativeExpr定义为若干个由乘号或除号或取余符号连接的元表达式UnaryExpr构成。
 
[4]UnaryExpr::=("-" | "+")?PrimaryExpr

【?】的含义是【有或者没有】。式[4]的含义是元表达Unary式定义为前面带或者不带正负号的基本表达式PrimaryExpr。
 
[5]PrimaryExpr::= NumericLiteral | ParenthesizedExpr | FunctionCall

式[5]的含义为基本表达式PrimaryExpr可以是数值型字面值NumerLiteral、带括号表达式ParemthesizedExpr、函数调用中的某一种。
 
[6]NumericLiteral::=IntegerLiteral | DecimalLiteral

数值型字面值定义为整数型字面值IntergerLiteral或者小数型字面值DecimalLiteral。
 
[7]ParenthesizedExpr::="(" Expr ")"

带括号表达式定义为被小括号包围的表达式。表达式又可以进一步分解为加法表达式、乘法表达式等。
 
[8]FunctionCall::=FunctionName "(" (Expr(","Expr)*)? ")"

函数调用表达式FunctionCall由函数名FunctionName和包含在括号中的参数列表组成。参数列表由多个用逗号连接的表达式组成。
 
[9]IntegerLiteral ::=Digits

整数型字面值IntegerLiteral定义为数字Digits。
 
[10]DecimalLiteral ::=(("." Digits) | (Digits"."Digits)) 

小数型字面值DecimalLiteral有两种形式。一种是小数点加数字,另一种是数字加小数点再加数字。
 
[11]Digits ::=[0-9]+

【+】的含义是【1到多个】,【[0-9]】表示数字0到9之间的某一个。因此式[11]的含义就是数字定义为1到多个字符0到字符9之间的字符。
 
[12] FunctionName=sin|cos|tan|asin|acos|atan|power|sqrt

式[12]定义可能的函数名。

到此,相信大家对“web解释器模式的动机是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享文章:web解释器模式的动机是什么
路径分享:http://cxhlcq.com/article/jscjcp.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部