需求
设计一个语法制导翻译程序, 将算术表达式翻译成三元式, 要求: 先确定一个定义算是表达式的文法, 为其设计一个语法分析程序, 为每条产生式配备一个语义子程序, 按照一遍扫描的语法制导翻译方法, 实现翻译程序。对用户输入的任意一个正确的算术表达式, 程序将其转换成三元式输出, 可按照一定格式输出到指定文件中
演示
运行环境
C++, CodeBlocks
技术原理
中间代码(Intermediate Representation或者IR):复杂性介于源程序语言和机器语言的一种表示形式。 编译程序锁使用的中间代码有多种形式。常见的有逆波兰记号,三元式,四元式,和树形表示, 整体代码设计思路有如下几点
- 编程语言选用c++, 基于STL标准容器开发, 可翻译成Java Python等语言
- 为了实现三元式一遍解析, 采用栈这个数据结构来存储符号, Java Python都有该容器
- 每个操作符号 加减乘除都有优先级, 设计了两个函数来制定符号的优先级, 数字越大优先级越高
- 最终结果出了会在终端打印, 也会输出到 result.txt 这个文件中
程序运行截图
代码下载地址 cs-work.com/p/21088