关键字、运算符和分界符采用一符一类。
关键字、运算符和分界符预先定义,数量固定,标识符&常数数量不定。
源程序的输入缓冲与预处理
源程序以字符流形式存储于外部介质。
双缓冲区:
有点类似循环队列。不同的是不是首尾相接的,而是缓冲区的整块移动重装。
每次移动forward指针都需要判断两个if,耗费无用时间。
错误处理:
单词的正则文法及正则表达式描述:
单词是程序设计语言的基本语法单位。
!:空集和空串都是字母表上的一个正则表达式,但是它们表示的正则语言不一样。
(r*s)表示的是连接操作。
这里的*是指克林闭包操作。
正则表达式与正则文法之间转换:
注意克林闭包。
总之就是将所有式子集合在一块,不要漏掉约束~
记住三条规则,分别针对:联结、克林闭包、或操作。
有穷状态自动机:
定义的是“语言”。
一个输入无法唯一确定一个输出。
正则表达式&FA:
注意正闭包。
看看例子:
注意这个1*的处理~
这个other?比如:
这里的other表示除了0-7之外所有字符~
因为会搜索到这个other字符,并不属于前一个单词,所以这个单词识别成功之后向前指针必须退后一个,然后开始读取这个other字符,也就是下一个单词的第一个字符。
识别出了A的第一个字符a,剩下B这样
单词识别问题:
回退;超前搜索技术
状态转换图的四个数组实现:
...这个有点复杂 待我看看书上的例题。