燕大编译原理实验词法分析

上传人:wt****50 文档编号:37974309 上传时间:2018-04-25 格式:DOC 页数:7 大小:43KB
返回 下载 相关 举报
燕大编译原理实验词法分析_第1页
第1页 / 共7页
燕大编译原理实验词法分析_第2页
第2页 / 共7页
燕大编译原理实验词法分析_第3页
第3页 / 共7页
燕大编译原理实验词法分析_第4页
第4页 / 共7页
燕大编译原理实验词法分析_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《燕大编译原理实验词法分析》由会员分享,可在线阅读,更多相关《燕大编译原理实验词法分析(7页珍藏版)》请在金锄头文库上搜索。

1、#include #include #include using namespace std;#define keyword_num 13 #define delimiter_num 5 #define words_num 200 #define str_num 10 /变量定义 char strstr_num; /str 用于存放接收的单词 char wordswords_numstr_num; inti = 0 , n = -1 ,j=1, k; /i 作 str 的下标,n 作数组 words 行的下标 intline_num=1; char c; char*keywordkeyword

2、_num = “begin“,“call“,“const“,“do“,“end“,“if“,“odd“,“procedure“,“read“,“then“,“var“,“while“,“write“;/关键字 13 个按照顺序排列便于折半查找 char delimiterdelimiter_num = ( , ) , ; , . , ,; /分界符 5 个 FILE *fout; /存放分词结果的文件 ifstream fin; string s; int main() printf(“输入文件名:“); cins; fin.open(s.c_str(); while(!fin.is_open

3、() printf(“文件不存在,请重新输入:“);fin.clear();cins; fin.open(s.c_str(); printf(“行 (类别 单词 )n“); /打开文件“分析结果.txt”,将分词结果写到该文件中fout = fopen(“分析结果.txt“,“w“); fprintf(fout,“行 (类别 单词 )n“);if(!fin.eof() c = fin.get(); while(1) /忽略回车、tab 键和空格,且当是回车时,行号加 1while(c = 10 | c =9 | c = ) if(c = 10)+ line_num; if(!fin.eof()

4、c = fin.get(); j=1; if(fin.eof()break;/关键字或标识符的接收,以字母或下划线开头if(c = a while(ab) /输出关键字,以行号,二元组(类型,单词)格式 printf(“%-5d(关键字 , %-10s)n“,line_num, str); fprintf(fout, “%-5d(关键字 , %-10s)n“,line_num, str); else /输出标识符 printf(“%-5d(标识符 , %-10s)n“,line_num, str); fprintf(fout, “%-5d(标识符 , %-10s)n“,line_num, st

5、r); for(;i=0;i-) stri=0; i=0; /常数接收,以数字或负号开头 else if(0 = a flag=2; break; else j=0; break; /如果该单词含有两个小数点,报错 for(k=0;k=0;i-)stri=0; i=0; else / 接收运算符或分界符 /判断是否为分界符 for(k=0;k=,单字符有 case: str0=c; if(!fin.eof() c = fin.get(); if(c=) str1=c; strcpy(words+n,str); printf(“%-5d(运算符 , %-10s)n“, line_num,str)

6、; fprintf(fout, “%-5d(运算符 , %-10s)n“, line_num,str); str0=0; str1=0; break; else j=0; strcpy(words+n,str); printf(“%-5d(运算符 , %-10s)n“, line_num,str); fprintf(fout, “%-5d(运算符 , %-10s)n“, line_num,str); str0=0; break; if(j) if(!fin.eof() c = fin.get(); fclose(fout); printf(“分词结束,共识别%d 个单词,保存在分析结果.txt 中n“,n+1); return(0);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号