Skip to content

LuXts/toy-parse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

玩具编译原理课设项目

语法制导翻译—逆波兰式的翻译

通过课程设计,理解掌握语法制导翻译的原理与应用,理解中间代码,掌握把表达式翻译出中间代码的算法与思想,并设计出错处理方法。

项目介绍

玩具编译器,用于完成编译原理课设,实现了如下内容:

  • 词法分析
  • 语法分析
  • 错误输出
  • 逆波兰式生成
  • 计算结果
  • GUI 实现

输入按顺序经过了:

  1. 词法分析
  2. 语法分析
  3. 逆波兰式生成
  4. 计算并输出结果

一些特点:

  1. 将负号视为单目运算符处理,支持 -(2+3)(-2)
  2. 输入中的单目运算符负号 - 将以 @ 符号于逆波兰式中表现,以避免和双目运算符减号 - 的歧义。
  3. 允许输入科学记数法如 1e3 1.9E2 等。小数可简写为 .78 ,等价于 0.78
  4. 内部计算使用精确数 (BigDecimal) 运算而不是浮点数,避免出现浮点错误和 int 溢出。
  5. 运算精度为小数点后 64 位,显示输出精度为小数点后 15 位有效数字。

软件截图

TODO

  • GUI 美化
  • 支持 -(9) 2+-(3+2) 这样的表达式 (彻底不打算支持,这个语法有点怪)
  • 抛弃 1+-2 这样的,只支持 1+(-2) 这样的
  • 支持 -2+3(-2+3) 这样的
  • 支持标准负号运算,每个表达式的最开头一个子表达式都允许携带负号,如 -1 -(2) -(-2) 。这样的:3+ -2 3+ -(2) 不支持,因为那个负号不在第一个子表达式前面。

About

一个玩具四则表达式编译器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages