编译解释器-课程设计

CompilationPrincipleDesign

群: 123300273(大佬群 2TB学习资料)(获取sql文件,入费群5元)

QQ: 1095737364

 Github 地址:  https://github.com/SimpleGraduationProjects/CompilationPrincipleDesign

编译解释器

简介

本代码来源于网络,每份代码收服务整理费5元, 请入群(123300273)后联系群主索要免费讲解原理!

一、需求分析

以编译原理书中最后一项作业,根据前端生成的中间代码来编写后端解释器,其中间代码标示了每行的行号,同时还包含了赋值语句、跳转语句、二位运算表达式的四则运算,条件语句跳转,列表类型的值获取等等,对于这个简单的中间代码执行程序,可以很简单的根据每行定义一个槽列表,方便跳转语句。主要的值类型可分为整型,布尔类型,我使用Object类型的列表存入,用instance判断其类型,从而转换,语法分析器中读入词法列表,根据每个槽生成槽内的字节码列表,槽对应行号和字节码列表。

二、可行性分析

上文中我使用槽代表每行应该执行的语句,后面我定义了一部分字节码,整个流程是以编译成字节码后执行的,对于字节码和语句树的方式,前者更加方便操作(对于列表的前进后退等等),更能完好的控制流程跳转。 最后使用虚拟机的方式遍历执行字节码,虚拟机参考Python的执行方式,虚拟机内有两个值列表,一个存入当前作用域内执行的值,一个HashMap存入变量,对应执行列表中的某个位置。

三、总体设计

1. 首先主程序读入文件,转换成字符串。

2. 传入词法分析器,生成特定的词法列表。

3. 传入语法分析器,生成槽列表(字节码列表)。

4. 槽列表传入虚拟机,遍历执行。

5. 得到执行完成的两个列表,运行内列表和变量哈希列表,输出。

环境

  • IntelliJ IDEA 2009.3

  • Mysql 5.7.26

  • Tomcat 7.0.73

  • JDK 1.8

缩略图

原文地址:https://www.cnblogs.com/yysbolg/p/14020362.html