微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

web解释器模式的知识点有哪些

本文小编为大家详细介绍“web解释器模式的知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“web解释器模式的知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

语法建模

作为解释器模式的标准做法,定义了语言的语法之后的步骤就是为每种语言要素准备一个类。对于四则运算的例子,其类结构如下:

web解释器模式的知识点有哪些

类图稍微大了一些,下面以几条规则为例进行说明。

1. 泛化关系

示例:[5]PrimaryExpr::=NumericLiteral|ParenthesizedExpr| FunctionCall

式[5]的含义为基本表达式PrimaryExpr可以是数值型字面值NumerLiteral、带括号表达式ParemthesizedExpr、函数调用中的某一种。转化成类关系就是泛化关系。所有适用PrimaryExpr的地方都可以使用NumericLiteral、ParenthesizedExpr、FunctionCall中的一种来代替。

2.组合关系

[2]AdditiveExpr::=MultiplicativeExpr(("+">

当AdditiveExpr由多个MultiplicativeExpr构成时,二者之间的关系又可以看作是组合关系。

当只有一个MultiplicativeExpr的时候,式[2]可以退化为:

AdditiveExpr::=MultiplicativeExpr

这种情况可以认为二者之间是简单的泛化关系。

3.简单组合关系

[7]ParenthesizedExpr::="(" Expr ")"

式[7]可以看作1对1的简单组合关系。
 

形成语法树

回头看一下前一篇文章中的表达式:

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

这个表达式转换成语法树如下:

web解释器模式的知识点有哪些

分析过程是沿着类图由上而下进行,直至找到适合的类型为止。例如最初的分析从AdditiveExpr开始,它的下级节点应该是多个MultiplicativeExpr,但是右侧不符合MultiplicativeExpr的条件,因此沿着类图向下搜索直至找到符合条件的FuncitonCall为止。如此周而复始就可以得到整个语法树。

读到这里,这篇“web解释器模式的知识点有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容文章,欢迎关注编程之家行业资讯频道。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐