十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本文小编为大家详细介绍“web解释器模式的知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“web解释器模式的知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
成都创新互联致力于网站建设,网站制作设计,营销网页按需求定制网站,成都外贸网站制作,企业网站建设,微信小程序定制开发,网站SEO优化,网站设计制作案例丰富,是成都做网站公司和建站公司,欢迎咨询。
语法建模
作为解释器模式的标准做法,定义了语言的语法之后的步骤就是为每种语言要素准备一个类。对于四则运算的例子,其类结构如下:
类图稍微大了一些,下面以几条规则为例进行说明。
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))
这个表达式转换成语法树如下:
分析过程是沿着类图由上而下进行,直至找到适合的类型为止。例如最初的分析从AdditiveExpr开始,它的下级节点应该是多个MultiplicativeExpr,但是右侧不符合MultiplicativeExpr的条件,因此沿着类图向下搜索直至找到符合条件的FuncitonCall为止。如此周而复始就可以得到整个语法树。
读到这里,这篇“web解释器模式的知识点有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。