JAVA实现一个简单的代数运算语言编译器(一)--写在前面
2017-03-07 23:51
711 查看
写在前面:
大二下学期编译原理课才开始不久,我们老师便要求我们使用C、C++或者是java语言编写一个简单的支持代数运算的计算器,以此来体会程序编译的过程。
具体要求如下图:
对该作业的概述如下:
1.该计算器有两种语句类型,即赋值语句与输出语句。
2.该计算器的变量命名由字母与数字组成,且必须以字母开头。
3.变量的使用不需要经过声明,但必须经过赋值,使用未经初始化的变量进行计算应报错。
4.有且仅有一个保留字为print。
5.不能使用第三方库。
我们大一的确学过C++,大二上学期的数据结构也是用C++教的,不过自己对C++还是一知半解,反而对java比较熟悉,于是我选择用java来实现这个项目。
案例分析:
我们知道,绝大多数的编译器都无外乎是对词法、语法、语义的分析,且内置了符号集、保留字等内容,提供代码优化、错误诊断等机制。我们的这个项目可以说是一个很简单的编译器的案例,所以也得遵循这些步骤按部就班地来。所以第一步我想先设置好系统预制的符号集、保留字,接下来再来分别进行词法、语法、语义的分析,最后再增加错误诊断机制。
这是本系列的第一篇文章,也是我在CSDN上的第一篇文章,主要是为我接下来要做的这个简单的计算器项目做铺垫。
接下来的文章我们就将正式进入项目的编写了。
大二下学期编译原理课才开始不久,我们老师便要求我们使用C、C++或者是java语言编写一个简单的支持代数运算的计算器,以此来体会程序编译的过程。
具体要求如下图:
对该作业的概述如下:
1.该计算器有两种语句类型,即赋值语句与输出语句。
2.该计算器的变量命名由字母与数字组成,且必须以字母开头。
3.变量的使用不需要经过声明,但必须经过赋值,使用未经初始化的变量进行计算应报错。
4.有且仅有一个保留字为print。
5.不能使用第三方库。
我们大一的确学过C++,大二上学期的数据结构也是用C++教的,不过自己对C++还是一知半解,反而对java比较熟悉,于是我选择用java来实现这个项目。
案例分析:
我们知道,绝大多数的编译器都无外乎是对词法、语法、语义的分析,且内置了符号集、保留字等内容,提供代码优化、错误诊断等机制。我们的这个项目可以说是一个很简单的编译器的案例,所以也得遵循这些步骤按部就班地来。所以第一步我想先设置好系统预制的符号集、保留字,接下来再来分别进行词法、语法、语义的分析,最后再增加错误诊断机制。
这是本系列的第一篇文章,也是我在CSDN上的第一篇文章,主要是为我接下来要做的这个简单的计算器项目做铺垫。
接下来的文章我们就将正式进入项目的编写了。
相关文章推荐
- JAVA实现一个简单的代数运算语言编译器(二)--词法分析准备
- JAVA实现一个简单的代数运算语言编译器(四)-- 表达式计算
- JAVA实现一个简单的代数运算语言编译器(三)--词法分析
- 用RMI实现一个简单的实时聊天系统(java语言)
- Java语言实现简单FTP软件 FTP连接管理模块实现(8)
- 一个简单的Web UI自动化测试框架Java实现
- 一个Java实现的简单的多个客户端聊天程序(未测试)
- 今天的问题:一个简单的例子,请帮我解开“接口实现Java‘隐藏实现细目’”的迷惑。
- 用java实现一个简单的单用户登陆功能的思路
- 实现简单的输入编辑,录入正确的字符串,出现‘$’,表示撤销前一个输入, 发现连续的‘$’,表示连续撤销前面的输入;发现‘%’,表示放弃前面所有录入; 生成最终结果。
- Java回顾:用一个Demo来说明继承抽象类和实现接口的简单框架模型
- 自己编写的一个java简单的窗口实现两点求园面积
- 利用ANTLR4实现一个简单的四则运算计算器
- Java使用异或运算实现简单的加密解密算法实例代码
- 一个简单的四则运算程序C语言实现--实现处理括号
- 用25行JavaScript语句实现一个简单的编译器
- 归并排序 一个简单的java实现
- Java实现的一个简单的下载器
- JAVA实现的一个简单的Socket Server范例
- java基础之实现一个简单的数组