-
-
解释器模式
2019-09-25 20:28:33解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。 介绍 意图:...解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
介绍
意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。
主要解决:对于一些固定文法构建一个解释句子的解释器。
何时使用:如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。
如何解决:构建语法树,定义终结符与非终结符。
关键代码:构建环境类,包含解释器之外的一些全局信息,一般是 HashMap。
应用实例:编译器、运算表达式计算。
优点 :1、可扩展性比较好,灵活。 2、增加了新的解释表达式的方式。 3、易于实现简单文法。
缺点: 1、可利用场景比较少。 2、对于复杂的文法比较难维护。 3、解释器模式会引起类膨胀。 4、解释器模式采用递归调用方法。
使用场景 :1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。 2、一些重复出现的问题可以用一种简单的语言来进行表达。 3、一个简单语法需要解释的场景。
注意事项:可利用场景比较少,JAVA 中如果碰到可以用 expression4J 代替。
实现
我们将创建一个接口 Expression 和实现了 Expression 接口的实体类。定义作为上下文中主要解释器的 TerminalExpression 类。其他的类 OrExpression、AndExpression 用于创建组合式表达式。
InterpreterPatternDemo,我们的演示类使用 Expression 类创建规则和演示表达式的解析。
步骤 1
创建一个表达式接口。
Expression.java
public interface Expression { boolean interpret(String context); }
步骤 2
创建实现了上述接口的实体类。
TerminalExpression.java
public class TerminalExpression implements Expression { private String data; public TerminalExpression(String data) { this.data = data; } @Override public boolean interpret(String context) { if (context.contains(data)) { return true; } return false; } }
OrExpression.java
public class OrExpression implements Expression { private Expression expr1 = null; private Expression expr2 = null; public OrExpression(Expression expr1, Expression expr2) { this.expr1 = expr1; this.expr2 = expr2; } @Override public boolean interpret(String context) { return expr1.interpret(context) || expr2.interpret(context); } }
AndExpression.java
public class AndExpression implements Expression { private Expression expr1 = null; private Expression expr2 = null; public AndExpression(Expression expr1, Expression expr2) { this.expr1 = expr1; this.expr2 = expr2; } @Override public boolean interpret(String context) { return expr1.interpret(context) && expr2.interpret(context); } }
步骤 3
InterpreterPatternDemo 使用 Expression 类来创建规则,并解析它们。
InterpreterPatternDemo.java
public class InterpreterPatternDemo { //规则:Robert 和 John 是男性 public static Expression getMaleExpression(){ Expression robert = new TerminalExpression("Robert"); Expression john = new TerminalExpression("John"); return new OrExpression(robert, john); } //规则:Julie 是一个已婚的女性 public static Expression getMarriedWomanExpression(){ Expression julie = new TerminalExpression("Julie"); Expression married = new TerminalExpression("Married"); return new AndExpression(julie, married); } public static void main(String[] args) { Expression isMale = getMaleExpression(); Expression isMarriedWoman = getMarriedWomanExpression(); System.out.println("John is male? " + isMale.interpret("John")); System.out.println("Julie is a married women? " + isMarriedWoman.interpret("Married Julie")); } }
步骤 4
验证输出。
John is male? true Julie is a married women? true
-
Scala解释器
2020-03-26 21:16:12Scala解释器 后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。 启动scala解释器 要启动scala解释器,只需要以下几步:... -
scala解释器
2020-02-08 18:54:32SCALA解释器 后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。 我们接下来学习: 启动scala解释器 在scala解释器中...SCALA解释器
后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。
我们接下来学习:
启动scala解释器
在scala解释器中执行scala代码
退出scala解释器
启动Scala解释器
要启动scala解释器,只需要以下几步:
按住windows键 + r
输入scala即可
执行Scala代码
在scala的命令提示窗口中输入println(“hello, world”),回车执行
退出解释器
在scala命令提示窗口中执行:quit,即可退出解释器
-
Python解释器
2019-05-22 10:25:58由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。 CPython 当我们从Python官方网站....Python解释器
我们运行Python程序,就是运行Python解释器,让解释器去读取我们写好的Python代码文件,并且把Python代码翻译成 机器指令 给 CPU 去执行。
这个原理如下图所示:
CPython解释器,如下图
当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
在pycharm中添加python解释器:file>>>settings>>>project>>>python interpreter>>>在python安装目录下把python.exe添加进去即可
-
python解释器
2018-07-24 09:11:25python解释器 标签(空格分隔): python 在阅读TensorFlow源代码时,经常看到解释器这样的一类的东西,打算将这部分知识梳理一下,方便自己后面继续看代码,该部分主要参考这两个博客Python中的解释器、python... -
JAVA设计模式--解释器模式
2017-02-25 14:51:01目录 一、什么是解释器模式 ...给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 所谓“语言”,指的是使用规定格式和文法的一类字符组合。 ... -
Python解释器有哪些?Python解释器种类
2018-04-13 14:33:50Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释器: CPython当从Python... -
查看 Python解释器路径的两种方式
2019-01-16 18:47:27查看 Python 解释器路径 运行以下脚本,或者进入交互模式手动输入即可。 import sys import os print('当前 Python 解释器路径:') print(sys.executable) r""&... -
HTML 解释器
2019-06-04 02:50:31解释过程 HTML 解释器的工作就是将网络或者本地磁盘获取的 HTML 网页和资源从字节流解释成 DOM 树结构。这一过程大致可以理解成下图 ...在进行词法分析之前,解释器首先要做的事情就是检查该网页内... -
Shell解释器
2018-10-15 10:27:05调用解释器执行 顾名思义,就是把脚本的路径传入解释器中去执行: sh test.sh 或者 bash test.sh 这两者略有区别,我没有整理过完整的差异,但至少对于 echo 命令来说,以下命令在两种解释器下得到的结果是不一样... -
Python解释器和IPython
2021-01-12 10:00:24今天给大家介绍一下Python的一个功能非常强大的解释器IPython。虽然Python本身自带解释器,但是相对而言IPython的功能更加的强大。 -
23、解释器模式—编写自己的语法解释器
2018-02-22 13:29:50解释器模式(Interpretor):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。UML图:|和&表达式的简单解释器代码package ... -
指定脚本解释器
2017-07-29 10:32:41以下是我常用的 指定 脚本解释器 的方式 command official annotations personal annotations #!/bin/bash 执行时,调用 /bin 下的 bash 解释器 #!/usr/bin/python 执行时,调用 /usr/bin 下的 python 解释... -
Java解释器
2015-03-02 15:37:58解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并运行。Hotspot中实现了两种具体的解释器,分别是模板解释器而C++解释器。同时在Hotspot的源码树中还保留着一种“字节码解释器”的古老解释... -
Java解释器的运行过程解释
2017-10-28 11:24:14首先介绍一下Java解释器的概念,Java解释器:解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并在特定的平台进行运行。简单一点,java的解释器只是一个基于虚拟机JVM平台的程序 ,即jdk或jre... -
JAVA解释器模式
2018-09-16 23:19:01JAVA解释器模式 通过本文将学习到 1、前言 2、解释器模式的概念 3、解释器的UML图及角色结构 4、解释器模式的实现 5、解释器模式的优缺点及使用场景 6、总结 1、前言 上一场我聊过了命令模式,只是浅显的过... -
pycharm修改解释器
2017-04-22 13:53:30最近把python原装的解释器卸载了,装了anaconda作为解释器,造成的后果就是pycharm找不到解释器了。 解决办法:pycharm》file》default setting》project interpreter然后修改解释器的路径就行了。 -
Python设计模式:解释器模式
2020-01-21 22:46:54设计模式十三:解释器模式 什么是解释器模式 主要放向:让非初级用户和领域专家使用一门简单的语言来表达想法 一般是高级用户才会有所兴趣。 典型案例 音乐演奏者是现实中解释器模式的例子, 五线谱图形化地表达了... -
python解释器介绍
2018-02-09 08:47:52刚开始学习python,首先要了解一下python解释器。什么是python解释器? 编写python代码保存后,我们会得到一个以.py为扩展名的文本文件。要运行此文件,就需要python解释器去执行.py文件。这里,我们介绍3种解释器。... -
编辑器,编译器,解释器,代码风格
2020-03-16 14:01:12对python,编译器理解: C语言: 编辑器(记事本)——原代码——编译器——可执行文件(.exe) ...Python源码就是Python解释器源码, Python就是Python解释器 当今几乎所有的实用的编译器/解释器(以下统称编... -
Python语言编译器与解释器
2018-10-20 17:02:35一、解释型语言Python Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言。 编译型语言 先整体编译,再执行 运行速度快,任意改动需重新编译 可脱离编译环境运行 ...这个解释器是用C语... -
Pycharm改变项目路径后显示找不到解释器或者解释器无效的解决办法
2020-08-31 08:40:08此方法适用于不要求必须使用虚拟环境中的解释器,可以通过配置系统解释器来解决 1. 与方法一步骤相同,但是在最后一项选择:“添加” 2. 选择系统解释器,然后添加你安装python的路径,点击确定完成 建议使用方法... -
设计模式-解释器模式
2019-04-04 09:33:30给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。 角色: AbstractExpression:抽象解释器 声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。 ... -
Python解释器以及PyCharm的安装
2018-07-12 20:56:10通过CSDN上,大神写的教程,安装了PyCharm,现自己总结Python解释器安装以及PyCharm安装过程。一、Python解释器安装解释器(英语:Interpreter),又译为直译器,是一种电脑程序能够把高级编程语言一行一行直接转译... -
c语言的解释器
2018-10-28 20:11:39还在羡慕python解释器有交互模式吗,c语言也有一款解释器picoc,它也能解释写好的c语言脚本。 Mac os 安装: brew install picoc 交互模式: 似乎它只能支持一些常规c写法。指针的写法,有的不能运行。。不过...
-
2021年 系统分析师 系列课
-
FFmpeg4.3系列之16:WebRTC之小白入门与视频聊天的实战
-
DNAMAN.exe
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
2020年-世界五百强前百(中国)
-
马士兵 mybatis学习笔记
-
马士兵老师HashMap学习笔记
-
GC如何判断对象可以被回收
-
SaltStack Shell注入漏洞 CVE-2020-16846 漏洞复现
-
vue项目学习笔记(工程化,前后端分离)
-
MySQL 触发器
-
DVD数码相册大师.rar
-
01-虚拟机的安装使用.pdf
-
Nested list and file.txt
-
鲇鱼1000-2000.txt
-
智慧校园建设方案.ppt
-
设计模式详解:Composite(组合模式)
-
_this2.$xxxis not a function
-
redis-6.0.6-windows.zip
-
C++ STL(十二):常用遍历算法(for_each、transform)