第三章
3.1 对于词法分析器的要求
1.词法词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。
词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序。
2.程序语言的单词符号:关键字、标识符、常数、运算符、界符。
3.输出的单词符号的表示形式:
(单词种别,单词自身的值)
Eg:
while (i=j) i--;
输出单词符号:
while, -
(, -
id, 指向i的符号表项的指针
=, -
id, 指向j的符号表项的指针
), -
id, 指向i的符号表项的指针
--, -
;, -
4.词法分析器作为一个独立子程序:结构简洁、清晰和条理化,有利于集中考虑词法分析一些枝节问题。
5.词法分析器
3.2 词法分析器的设计
1.词法分析器
2.输入、预处理:
输入串放在输入缓冲区中。
预处理子程序:剔除无用的空白、跳格、回车和换行等编辑性字符;区分标号区、捻接续行和给出句末符等
扫描缓冲区(指向开始位置,向前搜索确定终点)
3.单词符号的识别、超前搜索:
(1)基本字识别
Eg:
DO99K=1,10 DO 99 K = 1,10
IF(5.EQ.M)GOTO55 IF (5.EQ.M) GOTO 55
DO99K=1.10
IF(5)=55
需要超前搜索才能确定哪些是基本字
(2)标识符
(3)常数
(4)算符和界符
4.状态转换图(有限方向图)
1结点代表状态
2状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能出现的输入字符或字符类。
3一个状态转换图可用于识别(或接受)一定的字符串。
5.语法分析的状态转换图
6.状态转换图的实现
思想:每个状态结对应一小段程序。
7.状态转换图实现(了解)
1)ch 字符变量、存放最新读入的源程序字符
2)strToken 字符数组,存放构成单词符号的字符串
3)GetChar 子程序过程,把下一个字符读入到 ch 中
4)GetBC 子程序过程,跳过空白符,直至 ch 中读入一非空白符
5)Concat 子程序,把ch中的字符连接到 strToken
6)IsLetter和 IsDisgital 布尔函数,判断ch中字符是否为字母和数字
7) Reserve 整型函数,对于 strToken 中的字符串查找保留字表,若它是保留字则给出它的编码,否则回送0
8) Retract 子程序,把搜索指针回调一个字符位置
9)InsertId 整型函数,将strToken中的标识符插入符号表,返回符号表指针
10)InsertConst 整型函数过程,将strToken中的常数插入常数表,返回常数表指针。
8.一个词法分析器的例子(多看看、了解吧):
int code, value;
strToken := “ ”; /*置strToken为空串*/
GetChar(); GetBC();
if (IsLetter())
begin
while (IsLetter() or IsDigit())
begin
Concat(); GetChar();
end
Retract();
code := Reserve();
if (code = 0)
begin
value := InsertId(strToken);
return ($ID, value);
end
else
return (code, -);
end
else if (IsDigit())
begin
while (IsDigit())
begin
Concat( ); GetChar( );
end
Retract();
value := InsertConst(strToken);
return($INT, value);
end
else if (ch =‘=’) return ($ASSIGN, -);
else if (ch =‘+’) return ($PLUS, -);
else if (ch =‘*’)
begin
GetChar();
if (ch =‘*’) return ($POWER, -);
Retract(); return ($STAR, -);
end
else if (ch =‘;’) return ($SEMICOLON, -);
else if (ch =‘(’) return ($LPAR, -);
else if (ch =‘)’) return ($RPAR, -);
else ProcError( ); /* 错误处理*/
3.3正规表达式和有限自
您可能关注的文档
最近下载
- 喷墨打印OLED技术全球竞争格局与发展策略.docx VIP
- 2025年9月山西医科大学附属晋中医院(晋中市第一人民医院)招聘编制外人员38人笔试模拟试题及答案解析.docx VIP
- 2025年9月山西医科大学附属晋中医院(晋中市第一人民医院)招聘编制外人员38人考试参考试题及答案解析.docx VIP
- 人教版物理8年级下册全册教学课件.pptx
- 八年级上册语文文言文知识梳理(下).doc VIP
- 新人教版八年级数学下册全册ppt课件.pptx VIP
- 八年级上册语文文言文知识梳理(中).doc VIP
- 2024年秋季新人教版PEP版三年级上册英语全册教案.doc VIP
- 八年级上册语文文言文知识梳理(上).doc VIP
- 2025年春新沪教版九年级化学下册全册教学课件.pptx
原创力文档

文档评论(0)