返回文档首页
(一)简介
代码下载: git clone git://git.code.sf.net/p/redy/code redy-code
当我们需要识别文本时,通常分析步骤为:
- 根据文本内容的规律推导一个上下文无关文法,但最好是正则文法。
- 根据文法画出状态机。
- 把状态机转化为状态矩阵。
这一章的内容有:
- 变量识别
- 字符串识别
- 注释的识别
(二)变量识别
1)命名规则
Redy中变量的命名规则为:首字符必须为字母,下划线或者字符'@',后面紧接数字,字母,下划线。
2)BNF文法
identifier ::=(letter|'_'|'@')(letter|digit|"_")* digit ::='0'..'9' letter ::=lowercase|uppercase lowercase ::='a'..'z' uppercase ::='A'..'Z'
3)状态机
4)状态矩阵
对于变量来说,可以把字符分为这么几类:
- 数字(digit)
- 字母(letter)
- 下划线(underline)
- 符号@(s_at)
- 除上面字符以外其它字符(other)
状态有两个,一个为 identifier_begin,一个为identifier。其中开始状态为identifier_begin,结束状态为identifier
状态矩阵为:
状态\输入
Other
Digit
Letter
Underline
s_at
identifier_begin
identifier
identifier
identifier