词法单元、模式、词素(例子) printf("Total =%d\n",score); printf和score.与标识符(id)的模式匹配 "Total=%d\n"与literal的模式匹配 词法单元 非正式描述 词素示例 if 字符i,f if else 字符e,1,s,e else comparison <或>或<=或>=或==或!= <=,!= id 字母开头的字母/数字串 Pi,score,D2 number 任何数字常量 3.14159,0,6.02e23 literal 在两个"之间,除”以外的任何字符 core dumped” 图3-2 词法单元的例子 6
词法单元、模式、词素 (例子) • printf("Total = %d\n", score); – printf和score与标识符 (id) 的模式匹配 – "Total = %d\n"与literal的模式匹配 6 南大编译许畅
词法单元的属性 一个模式匹配多个词素时,必须通过属性来传递 附加的信息 ·属性值将被用于语义分析、代码生成等阶段 不同的目的需要不同的属性 属性值通常是一个结构化数据 如词法单元id的属性 词素、类型、第一次出现的位置、. 7
词法单元的属性 • 一个模式匹配多个词素时,必须通过属性来传递 附加的信息 – 属性值将被用于语义分析、代码生成等阶段 • 不同的目的需要不同的属性 – 属性值通常是一个结构化数据 • 如词法单元id的属性 – 词素、类型、第一次出现的位置、… 7 南大编译许畅
内容 。词法分析器的作用 。 词法单元的规约(正则表达式) 词法单元的识别(状态转换图) ·词法分析器生成工具及设计 ·有穷自动机 8
内容 • 词法分析器的作用 • 词法单元的规约 (正则表达式) • 词法单元的识别 (状态转换图) • 词法分析器生成工具及设计 • 有穷自动机 8 南大编译许畅
词法单元的规约 正则表达式可以高效、简洁地描述处理词法单元 时用到的模式类型 ·内容 串和语言 语言上的运算 正则表达式和正则定义 正则表达式的扩展 9
词法单元的规约 • 正则表达式可以高效、简洁地描述处理词法单元 时用到的模式类型 • 内容 – 串和语言 – 语言上的运算 – 正则表达式和正则定义 – 正则表达式的扩展 9 南大编译许畅
串和语言(1) 字母表(Alphabet):一个有穷的符号集合 符号典型例子:字母、数字、标点符号 例子:{0,1},ASCII,Unicode 在理论上,我们可以把任意的有限集合看作字母表 字母表上的串(String)是该表中符号的有穷序列 串s的长度,即Is|,是指s中符号出现的次数 空串:长度为0的串, 语言(Language)是某个给定字母表上的串的可数 集合 10
串和语言 (1) • 字母表 (Alphabet) :一个有穷的符号集合 – 符号典型例子:字母、数字、标点符号 – 例子:{ 0, 1 }, ASCII, Unicode – 在理论上,我们可以把任意的有限集合看作字母表 • 字母表上的串 (String) 是该表中符号的有穷序列 – 串s的长度,即 |s|,是指s中符号出现的次数 – 空串:长度为0的串,ε • 语言 (Language) 是某个给定字母表上的串的可数 集合 10 南大编译许畅