返回文档首页
(一)简介
代码下载: git clone git://git.code.sf.net/p/redy/code redy-code
这一章内容有:
- 整数,长整数,浮点数状态机的合并
(二)整数,浮点数的合并
(1)整数与浮点数的状态机
在整个Redy词言里面,主要的词文有:变量(包括关键字)、字符串、运算符、浮点数,整数,在这么几个里面,整数与浮点数的合并最难,其它的词文合并在一起识别都非常的简单,所以这里单独的把整数与浮点数合并提取出来,把他们合并成一个大的状态机后,再用这个大的状态机与其它词文的状态机进行合并。
在合并之前,我们先看一看整数与浮点数的状态机:
整数状态机:
浮点数的状态机:
要合并两台状态机并不是一件容易的事情,整数的有10个状态,11种输入类型,浮点数有7个状态,5种输入类型,合并起来还是很吃力,不管怎么困难,我们都要合并。下面我们按照的们前面的讲的步骤方法一步一步来。
(2)输入类型分析:
a)对于整数状态机来说,输入11种,前面我们整数识别这一章讲到过,分为:
- 数字0 (D0)
- 数字1 (D1)
- 数字2到7 (D2_7)
- 数字8到9 (D8_9)
- 字母a和A (S_a)
- 字母B和b (S_b)
- 字母c到f和C到F (S_c_f)
- 长整数标志符l与L (S_l)
- 八进制前缀o和O (S_o)
- 十六进制前缀x和X (S_x)
- 除以上字符以外的类型 (other)