# JAVA_Calculator **Repository Path**: iamttp/JAVA_Calculator ## Basic Information - **Project Name**: JAVA_Calculator - **Description**: 带词法分析和递归下降方法语法分析的程序 Program using lexical analysis and recursive-descent parsing - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 用编译原理的方式打开计算器 ## 结果如下: ![avatar](pic.jpg) ![avatar](1.gif) ![demo](demo.gif) ## 参考文章: `https://zhuanlan.zhihu.com/p/24457041?refer=hinus` ## 主要文件 src/com/company处存放主要的代码 `AlgoFrame` : 是一个使用swing Graphics2D显示的框架,用于可视化。最新版保留该文件,用于测试多组样例 `Expression`: 是实现递归下降的主要代码。 `InputTokenStream`: 使用适配器思想,用于读入字节流输出Token流,即词法分析代码。 `MainForm` : 交互界面主要代码。 `Token` : 定义Token的类。 `TreeNode` : 通用的树,用于保存递归下降中间结果,实现了较强的可视化方法。 `Util` : 存放通用的工具方法。 ## 提示 ### 更改计算时间: 更改 Expression 类的 delay_time 同时根据需要设置 MainForm 类的 repaintInterval 刷新间隔小于 delay_time ### 更改显示大小: 更改 MainForm 类slider,设置其默认值,最大值,最小值。 ``` JSlider slider = new JSlider(0, 30, 2); ```