看看代码设计模式的解释器模式

电脑杂谈  发布时间:2020-07-07 22:05:28  来源:网络整理

解释器模式_c++解释器模式_解释器模式举例

<?php
/**
* 看代码学设计模式之解释器模式
*
* 解释器 示例
*
* @create_date: 2010-01-04
*/
class Expression{
    function interpreter($str){
        return $str;
    }
}
class ExpressionNum extends Expression{
    function interpreter($str){
        switch($str){
            case"0":return"零";
            case"1":return"一";
            case"2":return"二";
            case"3":return"三";
            case"4":return"四";
            case"5":return"五";
            case"6":return"六";
            case"7":return"七";
            case"8":return"八";
            case"9":return"九";
        }
    }
}
class ExpressionCharater extends Expression{
    function interpreter($str){
        return strtoupper($str);
    }
}
class Interpreter{
    function execute($string){
    $expression= null;
    for($i= 0;$i<strlen($string);$i++) {
        $temp=$string[$i];
        switch(true){
            case is_numeric($temp):
            $expression=new ExpressionNum();break;
            default:
            $expression=new ExpressionCharater();
        }
        echo $expression->interpreter($temp);
        }
    }
}
$obj=new Interpreter();
$obj->execute("361418222php自学交流群");

QQ图片20161128095621.png

解释器模式_解释器模式举例_c++解释器模式

给出一种语言,定义其语法的表示形式以及使用该表示形式来解释该语言句子的解释器. 给定一种语言,定义其语法的表示形式解释器模式,并定义一个解释器,使用该表示形式来解释该语言中的句子.

解释器是一个简单的语法分析工具. 它最明显的优点是可伸缩性. 要修改语法规则,只需要修改相应的非终止表达式. 如果扩展语法,则只需添加非终结符符号类. 也是.

c++解释器模式_解释器模式举例_解释器模式

1. 解释器模式将导致类扩展

2. 每个语法都必须生成一个非结束表达式. 当语法规则更加复杂时,可能会生成大量的类文件,这给维护带来了很多麻烦.

解释器模式举例_解释器模式_c++解释器模式

3. 解释器模式使用递归调用方法. 每个非终止表达式仅关心与之相关的表达式. 每个表达式都需要知道最终结果,并且必须逐层剥离茧. 面向过程的语言也是面向对象的语言,并且在必要条件下使用递归,这导致非常复杂的调试. 考虑一下,如果您想对语法错误进行故障排除,我们是否要一步一步调试到最小的语法单元.

4. 效率问题. 因为解释器模式使用大量的循环和递归,所以效率是一个不可忽视的问题. 尤其是当它用于解析复杂而冗长的语法时,效率是无法忍受的.

解释器模式举例_c++解释器模式_解释器模式

例如解释器模式,多个应用服务器每天都会生成大量日志,并且需要分析和处理日志文件. 由于每个服务器的日志格式不同,但是数据元素相同,因此根据解释程序,它是终止符表达式. 相同,但是需要制定非末端表达. 在这种情况下,可以通过过程彻底解决该问题.

为什么这么简单?语法规则越多,复杂度越高,并且类之间的递归调用通常并不复杂. 考虑一下在多个类之间进行调用时需要解决的耐心和信心. 因此,解释器模式通常用于解析更多标准字符集,例如SQL语法分析,但是这一部分逐渐被专用工具取代


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-272186-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...