您好,登录后才能下订单哦!
本文小编为大家详细介绍“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))
这个表达式转换成语法树如下:
分析过程是沿着类图由上而下进行,直至找到适合的类型为止。例如最初的分析从AdditiveExpr开始,它的下级节点应该是多个MultiplicativeExpr,但是右侧不符合MultiplicativeExpr的条件,因此沿着类图向下搜索直至找到符合条件的FuncitonCall为止。如此周而复始就可以得到整个语法树。
读到这里,这篇“web解释器模式的知识点有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。