4运算符,如+,-,*,,<=等 5界符,如逗点,分号,括号,冒号等 词法分析程序所输出的单词符号常常采用以下二元式表示 (单词种别,单词自身的值)。单词的种别是语法分析需要的 信息,而单词自身的值则是编译其它阶段需要的信息。比如在 PASCAL的语句 const E=25,yes=1;中的单词25和1的种别 都是常数,常数的值25和1;对于代码生成来说,是必不可少 的、有时,对某些单词来说,不仅仅需要它的值还需要其它 些信息以便编译的进行。比如,对于标识符来说,还需要记载 它的类别。层次还有其它属性,如果这些属性统统收集在符号 表中,那么可以将单词的二元式表示设计成如下形式(标识符, 指向该标识符所在符号表中位置的指什),如上述语句中的单 词和yes的表示为:
4.运算符,如+,-,*,/,<=等。 5.界符,如逗点,分号,括号,冒号等。 词法分析程序所输出的单词符号常常采用以下二元式表示 (单词种别,单词自身的值)。单词的种别是语法分析需要的 信息,而单词自身的值则是编译其它阶段需要的信息。比如在 PASCAL的语句 const i=25, yes=1;中的单词 25和 1的种别 都是常数,常数的值25和1;对于代码生成来说,是必不可少 的、有时,对某些单词来说,不仅仅需要它的值,还需要其它一 些信息以便编译的进行。比如,对于标识符来说,还需要记载 它的类别。层次还有其它属性,如果这些属性统统收集在符号 表中,那么可以将单词的二元式表示设计成如下形式(标识符, 指向该标识符所在符号表中位置的指什),如上述语句中的单 词i和yes的表示为:
(标识符,指向i的表项的指针) (标识符,指向yes的表项的指针) 单词的种别可以用整数编码表示,设标识符编码为1,常数为 2,保留字为3,运算符为4,界符为5 这种码称为机内码。 例:写出程序段i=5 then x=y; 在经词法分析器扫描后输出的单词符号和它们的表示
(标识符,指向i的表项的指针) (标识符,指向yes的表项的指针) 单词的种别可以用整数编码表示,设标识符编码为1,常数为 2,保留字为3,运算符为4,界符为5. 这种码称为机内码。 例:写出程序段if i=5 then x:=y; 在经词法分析器扫描后输出的单词符号和它们的表示
答: 保留字i(3,‘if) 标识符i(1,指向符号表入口) 等号 (4, 常数5(2.“5) 保留字then(3,‘then') 标识符x(1,指向x的符号表入口) 赋值号:=(4:=”) 标识符y(1,指向y的符号表入口) 分号 (5, 综上所述可以把单词表示为:(内部码,属性)的二元式
答: 保留字if (3,‘if’) 标识符i (1,指向i的符号表入口) 等号= (4,‘=’) 常数5 (2.‘5’) 保留字then (3,‘then’) 标识符x (1,指向x的符号表入口) 赋值号:= (4‘:=’) 标识符y (1,指向y的符号表入口) 分号; (5,‘;’) 综上所述可以把单词表示为:(内部码,属性)的二元式
3.1.3词法分析的实现方法 词法分析的实现主要有二种方法,一是将词法分析单独写 成一个独立的程序,其工作作为独立的一遍,把字符流的源程 序变为单同序列,输出在一个某个中间文件上(也可直接存放 在内存中),另一种方法是将词法分析程序设计成一个子程序, 每当语法分析程序需要一个单词时,则调用该子程序。词法分 析程序每得到一次调用,便从源程序文件中读入一些字符,直 到识别出一个单词。停留在空格、回车、制表符或下一单词的 第一个字符为止。这样把词法分析程序和语法分析程序是放在 同一遍里,而省掉了中间文件,节省了运行时间
3.1.3 词法分析的实现方法 词法分析的实现主要有二种方法,一是将词法分析单独写 成一个独立的程序,其工作作为独立的一遍,把字符流的源程 序变为单同序列,输出在一个某个中间文件上(也可直接存放 在内存中),另一种方法是将词法分析程序设计成一个子程序, 每当语法分析程序需要一个单词时,则调用该子程序。词法分 析程序每得到一次调用,便从源程序文件中读入一些字符,直 到识别出一个单词。停留在空格、回车、制表符或下一单词的 第一个字符为止。这样把词法分析程序和语法分析程序是放在 同一遍里,而省掉了中间文件,节省了运行时间
32正规式自动机和状态图 321正规式的表示 在编译程序设计时,应尽量减少语法规则,从而提高编译 程序的效率,那么如何使设计的正规规则最少,或者当一个语 言较复杂时,怎样能够判定它是否能用正规文法表示,以及如 何自动生词法分析程序等到,都需要用一种新的表示方法,为 些引进了正规式和正则集。在这里可以用正规式来描述单词符 号语言中的基本语法符号,井且基于正规式这类描述工具,可 以建立词法分析技术,进而可以建立词法分析程序的自动构造 方法
3.2 正规式自动机和状态图 3.2.1正规式的表示 在编译程序设计时,应尽量减少语法规则,从而提高编译 程序的效率,那么如何使设计的正规规则最少,或者当一个语 言较复杂时,怎样能够判定它是否能用正规文法表示,以及如 何自动生词法分析程序等到,都需要用一种新的表示方法,为 些引进了正规式和正则集。在这里可以用正规式来描述单词符 号语言中的基本语法符号,井且基于正规式这类描述工具,可 以建立词法分析技术,进而可以建立词法分析程序的自动构造 方法