编译原理上机实验报告.docx
《编译原理上机实验报告.docx》由会员分享,可在线阅读,更多相关《编译原理上机实验报告.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译技术上机实验题目实验一一、题目编制C语言子集的词法分析程序二、目的通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。三、要求1.根据具体情况,由同学们自己选取C语言的一个适当大小的子集(可取一类典型单词,也可以尽可能使各种类型的单词都兼顾到),如课本表2.1;在上机前一定要制出相应的表。2.程序功能输入:字符串。输出:二元式(种别编码,单词自身)构成的序列。举例:输入:a=$;#输出:(6,a) (12,=) FOUND ERROR (13,;)#include #include using n
2、amespace std;string key6 = begin, if, then, while, do, end; /关键字bool isKey( string str, int &syn) /判断是否为关键字,若是传回相应关键码的种别名 int i; for(i=0; i= A & c = a & c = 0 & c = 9) return true; else return false;void analyse(FILE *fileP) int n; char c; string str = ; while(c = fgetc(fileP) != EOF) if(c = | c = n
3、 | c = t) continue; else if(isDigit(c) /数字 while(isDigit(c) str += c; c = fgetc(fileP); fseek(fileP, -1, SEEK_CUR); cout (11, str ) endl; str = ; else if(isLetter(c) /字母开头的 while(isDigit(c) | isLetter(c) str += c; c = fgetc(fileP); fseek(fileP, -1, SEEK_CUR); if(isKey(str, n) cout ( n , str ) endl;
4、/关键码 else cout (10, str ) endl; /标志符 str = ; else /操作符等 switch(c) case +: cout (13, +) endl; break; case -: cout (14, -) endl; break; case *: cout (15, *) endl; break; case /: cout (16, /) endl; break; case : if(c=fgetc(fileP) = =) cout (18, :=) endl; else cout (17,编译技术上机实验题目实验一一、题目编制C语言子集的词法分析程序二、目
5、的通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。三、要求1.根据具体情况,由同学们自己选取C语言的一个适当大小的子集(可取一类典型单词,也可以尽可能使各种类型的单词都兼顾到),如课本表2.1;在上机前一定要制出相应的表。2.程序功能输入:字符串。输出:二元式(种别编码,单词自身)构成的序列。举例:输入:a=$;#输出:(6,a) (12,=) FOUND ERROR (13,;)#include #include using namespace std;string key6 = begin,
6、if, then, while, do, end; /关键字bool isKey( string str, int &syn) /判断是否为关键字,若是传回相应关键码的种别名 int i; for(i=0; i= A & c = a & c = 0 & c = 9) return true; else return false;void analyse(FILE *fileP) int n; char c; string str = ; while(c = fgetc(fileP) != EOF) if(c = | c = n | c = t) continue; else if(isDigi
7、t(c) /数字 while(isDigit(c) str += c; c = fgetc(fileP); fseek(fileP, -1, SEEK_CUR); cout (11, str ) endl; str = ; else if(isLetter(c) /字母开头的 while(isDigit(c) | isLetter(c) str += c; c = fgetc(fileP); fseek(fileP, -1, SEEK_CUR); if(isKey(str, n) cout ( n , str ) endl; /关键码 else cout (10, str ) endl; /标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 上机 实验 报告
限制150内