资源描述:
《c语言编写的词法分析程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#include#defineSPACE0x20//空格键#defineCHANGE'c'//转义字符#defineSTRING'S'//引号里的字符串#defineBOUNDARY'B'//界符#defineOPERATION'O'//运算符#defineWORD'I'//标识符#defineKEY_WORD'K'//关键字#defineDIGIT'n'//数字,包括小数#defineDOTH'
2、d'//头文件,“.h”文件#defineINT't'#defineVOID'v'#defineIF'f'#defineELSE'e'#defineWHILE'w'#defineFOR'r'#defineMAIN'm'#definePRINTF'p'#defineINCLUDE'u'#defineFLOAT'l'#defineKEYNUM10#defineBOUNDNUM8#defineOPERNUM7#defineVALUENUM100/****************************************
3、********************************//*datatype*//************************************************************************/structbianliang{intid;charname[20];intvalue;};structchangliang{intdata;};charKeyWord[KEYNUM][8]={"int","void","if","else","while","for","main",
4、"printf","include","float"};charBoundary[BOUNDNUM]={'"',';',',','(',')','#','{','}'};charOperation[OPERNUM]={'+','-','*','/','=','<','>'};charLogogram[KEYNUM]={INT,VOID,IF,ELSE,WHILE,FOR,MAIN,PRINTF,INCLUDE,FLOAT};charValue[VALUENUM][8];intValue_n=0;intErrorLine
5、=0;intQuotationCount=0;//计算引号的数量intQuotationFlag=0;//引号数量为奇数时为1,偶数时为0charLastOpera=0;//用于判断"=="号存前一个"="号/************************************************************************//*functiondescribe*//***************************************************************
6、*********/intisKeyWord(char*s)//是关键字返回1,否则返回0{inti;for(i=0;i7、=l){return1;}else{if('.'==s[i]){i++;for(;i=l)return1;elseretu
8、rn0;}}intisDotH(char*s)//是头文件{inti,l=strlen(s);for(i=0;i=l){return0;}else{if('.'==s[i]){i++;if(s[i]=='h')return1;elsereturn0;}