词法分析
- 给出扫描程序操作的一个概貌以及所涉 及到的结构和概念
- 正则表达式,它是用于表示构成程序设计语言的词法结构的串格式的标准表示法
- 有穷状态机器或称有穷自动机,它是对由正则表达式给出的串格式的识别算法
词法分析:可将源程序读作字符文件并将其分为若干个记号.
记号:keyword(“if”和“then" ),identifier,special symbol
由扫描程序生成的逻辑单元称作记号( token) ,将字符组合成记号与在一个英语句子中将字母构成单词并确定单词的含义很相像。
正则表达式:用来表示字符串的匹配规则
一:基本正则表达式
它们是字母表中的单个字符且自身匹配
二: 正则表达式运算
1:从各选择对象中选择,用元字符 | (竖线)表示。
r | s 格式的表达式:其中r 和s 均是正则表达式。在这种情况下, (r | s) = L (r) ∪ L (s)。
2:连结,由并置表示(不用元字符) 。
rs 格式的表达式:其中 r 和s 是正则表达式。在这种情况下, L (rs) = L (r) L (s)。
3:重复或“闭包” ,由元字符*表示。
r* 格式的表达式:其中r 是正则表达式。在这种情况下, L (r*) = L (r)*。
优先级:|的优先权最低,连结次之, * 则最高
标识符的有穷自动机
有穷自动机,或有穷状态的机器,是描述(或“机器” )特定类型算法的数学方法。有穷自动机可用作描述在输入串中识别模式的过程,因此也能用作构造扫描程序。
确定性的(deterministic)有穷自动机:下 一个状态由当前状态和当前输入字符唯一给出的自动机
定义:DFA(确定性有穷自动机) M由字母表∑、状态集合S、转换函数 T:S×∑→S
D FA的图表并不能表示出 D FA所需的所有东西而仅仅是给出其运算的要 点出错状态根本就 不是一个真正的错误,而是表示标识符将不被识别(如来自于初始状态)或是已看到的一个分 隔符,且现在应该接受并生成标识符记号。
一铺西陇-转换( - t r a n s i t i o n)是无需考虑输入串(且无需消耗任何字符)就有可能发生的转换

scanner干的事情称为扫描(scanning)。scanner扫描源程序,将之分成一个个token。parser告诉scanner要下一个token。scanner从source中获取字符然后构造新的token。token 也从source中读入字符
文法规则
程序设计语言的语法通常是由上下文无关( context-free grammar)的文法规则(grammra rule)给出.
分析程序的任务是从由扫描程序产生的记号中确定程序的语法结构.以及或隐式或显式地构造出表示该结构的分析树或语法树.
因此,可将分析程序看作一个函数,该函数把由扫描程 序生成的记号序列作为输入,并生成语法树作为它的输出.
浙公网安备 33010602011771号