《2022年电子科技大学-计算机学院-编译原理实验-词法分析.pdf》由会员分享,可在线阅读,更多相关《2022年电子科技大学-计算机学院-编译原理实验-词法分析.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#include#include#include#define MAX_COUNT 1024#define ILLEGAL_CHAR_ERR 1#define UNKNOWN_OPERATOR_ERR 2/* 从标准输入读入第一个非空白字符(换行符除外 )*/char getnbc()char ch;ch = getchar();while (1)if (ch = r | ch = t | ch = )ch = getchar();elsebreak;return ch;/* 判断 character 是否为字母 */bool letter( charcharacter)if (charact
2、er = a& character = A&character = 0& character = 0)return true;elsereturn false;/* 词法分析函数,每调用一次识别一个符号*/bool LexAnalyze()static int lineNum = 1;char character;char token17 = ;character = getnbc();switch (character)casen :output(EOLN, 24);lineNum+;break;caseEOF :output(EOF, 25);精品资料 - - - 欢迎下载 - - - -
3、 - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 5 页 - - - - - - - - - - return false;if (fullName != NULL )strncpy(out, fullName + 1, strlen(fullName) - 1 - strlen(extension);elsestrncpy(out, in, strlen(in) - strlen(extension);/* 初始化函数,接收输入文件地址,并打开输入、输出、错误文件、将标准输入重定向到输入文件,将标准输出重定向到输出文件,标准错误重定向到错
4、误文件*/bool init(int argc, char* argv)if (argc != 2)return false;elsechar* inFilename = argv1;yd);rr);if (freopen(inFilename, r , stdin) != NULL &freopen(outFilename, w , stdout) != NULL&freopen(errFilename, w , stderr) != NULL)return true ;elsereturn false;void main(int argc,char* argv)/argv1 是输入文件地址if (init(argc,argv)while (LexAnalyze()fclose(stdin);fclose(stdout );fclose(stderr);return;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 5 页 - - - - - - - - - - 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 5 页 - - - - - - - - - -