将算术表达式转换成三元式的程序实现、编译原理课程设计
2019-06-25 00:55
1991 查看
需求
设计一个语法制导翻译程序, 将算术表达式翻译成三元式, 要求: 先确定一个定义算是表达式的文法, 为其设计一个语法分析程序, 为每条产生式配备一个语义子程序, 按照一遍扫描的语法制导翻译方法, 实现翻译程序。对用户输入的任意一个正确的算术表达式, 程序将其转换成三元式输出, 可按照一定格式输出到指定文件中
演示
运行环境
C++, CodeBlocks
技术原理
中间代码(Intermediate Representation或者IR):复杂性介于源程序语言和机器语言的一种表示形式。 编译程序锁使用的中间代码有多种形式。常见的有逆波兰记号,三元式,四元式,和树形表示, 整体代码设计思路有如下几点
- 编程语言选用c++, 基于STL标准容器开发, 可翻译成Java Python等语言
- 为了实现三元式一遍解析, 采用栈这个数据结构来存储符号, Java Python都有该容器
- 每个操作符号 加减乘除都有优先级, 设计了两个函数来制定符号的优先级, 数字越大优先级越高
- 最终结果出了会在终端打印, 也会输出到 result.txt 这个文件中
程序运行截图
[code]代码下载地址 cs-work.com/p/21088
相关文章推荐
- 构造正规式r1|r2(或运算)的NFA的程序实现(Java实现版本)、编译原理课程设计
- 从右线性文法构造与之等价的有限自动机的程序实现、编译原理课程设计
- 构造正规式r*(闭包运算)的NFA的程序实现、编译原理课程设计
- ε-CLOSURE(I)构造算法的程序实现、编译原理课程设计
- 有限自动机的状态转换图显示程序的实现、编译原理课程设计
- 构造正规式r1|r2(或运算)的NFA的程序实现(Python实现版本)、编译原理课程设计
- 构造正规式r1r2(连接运算)的NFA的程序实现、编译原理课程设计
- 编译原理课程设计---用java写的SNLCompiler(简单嵌套语言SNL的编译程序)
- PTA 表达式转换 算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
- [编译原理课程设计] 程序示例一、词法分析器
- 编译原理动手实操,用java实现编译器-算术表达式及其语法解析器的实现
- 编译原理课程设计 基于Java的LL(1)文法预测分析程序
- 设计有穷自动机DFA实现C++简单程序的词法分析、扫描(编译原理实验) 推荐
- 编译原理之算术表达式文法的预测分析算法c实现
- 编译原理之算术表达式的词法分析算法c实现
- python实现算术表达式的词法语法语义分析(编译原理应用)
- 编译原理 实验3 递归下降语法分析程序设计
- 用antlr4来实现《按编译原理的思路设计的一个计算器》中的计算器
- 【编译原理】编译原理课程设计中遇到的问题及解决
- 基于Dais CMX16的计算机组成原理微程序课程设计