词法分析:源程序到单词符号的转换

需积分: 50 0 下载量 200 浏览量 更新于2024-07-14 收藏 2.48MB PPT 举报
"字符变量在词法分析过程中用于存储源程序的最新读取字符,通过CASE语句进行状态转换。词法分析是编译原理的一部分,任务是将源程序转换为单词符号串,识别关键字、标识符、常数、运算符和界符。" 在编程语言的编译过程中,词法分析是一个至关重要的步骤。它负责从源代码中提取出有意义的单元,即单词符号,这些符号是构成程序的基本元素。字符变量在这里扮演了关键角色,它存储当前正在处理的源程序字符,帮助识别不同的单词符号。 在给定的例子中,"状态i"通过GETCHAR函数读取下一个输入字符,并根据字符`CHAR`的值进入相应的状态,如状态`j`、`k`或`l`。CASE语句是一种结构,用于基于`CHAR`的值执行不同操作,这里用于模拟词法分析器的状态转换。例如,当遇到大写字母时,可能进入处理标识符的状态`j`;遇到数字时,进入处理数字的状态`k`;遇到斜线`/`时,可能进入处理注释的状态`l`。 词法分析器,也称为扫描器,是执行词法分析的程序。它的功能包括: 1. 关键字:如"C"语言中的`while`、`switch`、`if`等,它们具有固定的含义且数量是确定的。 2. 标识符:如变量名、数组名、过程名,数量不限。 3. 常数:包括整型、实型、布尔型和文字型等,数量不限。 4. 运算符:如加减乘除等,数量是确定的。 5. 界符:如逗号、分号、括号等,数量也是确定的。 单词符号是程序语言的基本语法符号,通常以二元式(单词种别,单词自身的值)的形式表示。单词种别可以通过整数值来代表,如1代表关键字,2代表标识符等。单词自身的值可以是常量的二进制表示,也可以是在符号表中的地址码。 在词法分析中,如何划分单词符号的种类以及编码方式是技术性的问题。例如,标识符通常归为一类,而常数则可以根据类型(整型、实型、布尔型)进行分类。关键字可以被视为一类,或者每个关键字单独一类,运算符同样可以是一符一种,或者根据共性归为一类。界符通常是一符一种。选择何种方式取决于实现的便利性和效率。 以例3-1为例,FORTRAN编译程序的词法分析器在处理字符串`IF(5·EQ·M)GOTO100`后,会输出相应的单词符号串,比如逻辑关键字`IF`(34,_)、左括号(2,_)、整常数(2,...)。这里的数字是单词种别的编码,而下划线可能表示单词自身的值未给出或不需要,因为上下文已经明确了其含义。 词法分析是编程语言处理的第一步,它为源代码提供了初步的结构化表示,便于后续的语法分析和语义分析。字符变量、状态机和单词符号的概念是理解编译原理的基础。