输入:所给文法的源程序字符串
输出:二元组(syn,token 或 sum)构成的序列
其中:syn 为单词种别码
token 为存放的单词自身字符串;sum 为整型常数
例如:对源程序
begin x:=9; if x>=0 then x:=2*x+1/3;end #
的源文件,经词法分析后输出如下序列:
(1,begin)(10,'x')(18,=)(11,9)(26,;)(2,if)^^^
三、实验基本原理与设计
⒈ 实验方案设计:
算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词
符号,其基本思是根据扫描到单词符号的第一个字符的种类,拼出相应的单词
符号。
⒉ 实验手段的确定:
⑴主程序示意图如图1所示,其中初值包括如下两个方面:
①关键字表的初值.
关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字
表),
当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单
词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:
char *rwtab[6]={"begin","if","then","while","do","end"};
② 程序中需要用到的主要变量为 syn,token 和 sum.
⑵ 扫描子程序的算术思想
首先设置 3 个变量:1)token 用来存放构成单词符号的字符串;2)sum 用
来存放整型单词;3)syn 用来存放单词符号的种别码
3.实验步骤:
结束
调用扫描子程序
输出单词二元组
输入串结束?
置初值
是
否
评论2