c#实现科学计算器 —— 设计篇之词法分析模块设计
来源:互联网 发布:祖玛java 7723 编辑:程序博客网 时间:2024/06/05 03:45
词法分析模块的功能
负责对用户输入的表达式进行分词处理,把每一个合法符号(包括数)存入一个特定的存储结构中,能够供之后的文法分析模块和计算模块使用,如果发现非法符号马上停止处理,报错。
合法符号表
第一个版本支持的合法符号列表如下:
分析策略
采用有限自动机(DFA)进行分析,对于特定符号如+、-、*、/、%、(、)、!、^、=,为每一个符号提供一个状态、而其他的一些由字母组成的符号,如ans、pi、sto、clr等,则作为是一个词,之后再对词进行分类处理。
具体的DFA状态图如下:
注:
1. 图中每一个箭头表明一个字符的输入,由于这个输入,自动机从一个状态变为另一个状态
2. 图中的负号和减号是两个完全不同的符号,大家不要根据常识认为是一样的,其实在实现时是用'@'代负号的
各状态的说明如下
状态 说明 对应符号分类名称 S0 初态 S1 整数串 S2 浮点数串 number S3 字母串 ln、lg、log
cos、sin、tg、ctg
acos、asin、atg、actg
cbrt、sbrt、ans、sto、
ax、bx、cx、dx、ex、fx
pi、e S4 + plus S5 - minus S6 * mutiple S7 / divide S8 % mod S9 ! fact S10 ^ pow S11 = S12 ( leftbracket S13 ) rightbracket SX 未知态,出错
=====================================================================
科学计算器正式版已经于2006.1.4发布,详情请见http://tonyqus.cnblogs.com/archive/2006/01/04/310481.html
- c#实现科学计算器 —— 设计篇之词法分析模块设计
- c#实现科学计算器 —— 设计篇之词法分析模块设计
- c#实现科学计算器 设计篇之优先级表设计
- c#实现科学计算器 设计篇之优先级表设计
- c#实现科学计算器 实现篇之词法分析器
- c#实现科学计算器 实现篇之词法分析器
- c#实现科学计算器 —— 总体分析篇
- c#实现科学计算器 —— 总体分析篇
- c#实现科学计算器 设计篇之优先级表的另一种实现方案
- c#实现科学计算器 设计篇之优先级表的另一种实现方案
- c#实现科学计算器 设计篇之第三个栈的作用
- c#实现科学计算器 设计篇之第三个栈的作用
- c#实现科学计算器 实现篇之常数表实现
- c#实现科学计算器 实现篇之常数表实现
- c#实现科学计算器 实现篇之文法分析器
- c#实现科学计算器 实现篇之分词结果存储
- c#实现科学计算器 实现篇之文法分析器
- c#实现科学计算器 实现篇之分词结果存储
- c#实现科学计算器 设计篇之优先级表设计
- c#实现科学计算器 实现篇之分词结果存储
- c#实现科学计算器 实现篇之词法分析器
- 烂漫的青春后期 35岁前必须做好十件事情[转载]
- assert使用技巧
- c#实现科学计算器 —— 设计篇之词法分析模块设计
- c#实现科学计算器 —— 总体分析篇
- Application Updater Block v2.0 更新检查过程分析
- 实现WinForm全球化的简单方法
- C#2.0泛型介绍之简单泛型类。
- 2005.3.20-IT俱乐部-活动笔记
- 参加2005.3.20-IT俱乐部活动的感想
- Updater Application Block v1.0 - 1.7 应用程序加载器设计
- Updater Application Block v1.0 翻译文档目录