词法分析
正则表达式(RE)
- 正则表达式r定义一个语言,记为L(r)
正则表达定义
正则语言
正则定义
有穷自动机
- 具有一系列离散的输入输出信息和有穷数目的内部状态
- 根据当前所处状态和当前面临输入信息就可以决定系统的后继行为
- 每当系统处理当前的输入后,系统的内部状态也将发生改变
FA模型
FA的表示
FA定义的语言
- 给定输入串x,若存在一个对应串x的从初始状态到终止状态的转换序列,则称串x被该FA接收
- 由一个有穷自动机M接收的所有串构成的集合称为是该FA定义(或接受)的语言,记为L(M)
最长子串匹配原则
- 当输入串的多个前缀与一个或多个模式匹配时,总是选择最长的前缀进行匹配
- 在到达某个终态之后,只要输入带上还有符号,DFA就继续前进,以便寻找尽可能长的匹配
错误处理
词法错误检测
- 如果当前状态与当前输入符号在转换表对应项中的信息为空,而当前状态又不是终止状态,则调用错误处理程序
错误处理
查找已扫描字符串中最后一个对应于某终态的字符
- 若找到,将该字符与前面字符识别成一个单词,然后将输入指针退回到该字符,扫描器重回初始状态,继续识别
- 若未找到,则确定出错,采用错误恢复策略
错误恢复策略
-
恐慌模式
从剩余输入中不断删除字符,直到词法分析器能从剩余输入开头发现一个正确的字符为止