1、456789单词itcharfloatvointriesten单词助记符nflotcnstfresethe内码值-1012141161718hilewchbreabginend标识符数字(包括整数和实数)whilewtchbeakeginedid在符号表中的位置在常数表中的位置1920212222527+*/%()2820!=3738914434445/+-=%=|&/=orannot单词的构词规则:字母=A-Za-z数字=0-标识符=(字母)(字母|数字)*数字=数字(数字)(.数字+|)四、语言表达式和语句说明1.算术表达式:+、*、/、%2关系运算符:、)9Eror函数:输出错误信息到屏
2、幕10.除此之外,还可以设置查符号表,填写符号表等函数,学生可自行设计。实验中,可以将某些类型的单词识别过程利用DFA算法实现,F算法参考如下:DFA(S=S0,MOVE,F,ALPABT,ALLS)/*S为状态,初值为DFA的初态,MOE为状态转换矩阵,F 为终态集,ALPHBET 为字母表,其中的字母顺序与MVE中列标题的字母顺序一致。ALLS为状态集*Cr Wordffer10=“”/单词缓冲区置空ha=gtchar();/读字符i0;while(netcar!=NUL)/NULL代表此类单词 f (extcha!ALPHABE) EROR(“非法字符”),return(“非法字符”);
3、 S=MOVESnetchar /下一状态 if(S=ULL)retun(“不接受”);下一状态为空,不能识别,单词错误 rdufei=nexchar ;/保存单词符号 +; nexcrgtcar();ordbufer=;If(F)return(wordr); /接受 Ee retur(“不接受”);六、实验过程说明1.每人单独完成。2完成后,由老师验收,并给出成绩。.实验完成后,写出实验报告(要求交打印稿)。报告内容要求如下:完成人:班级、学号、姓名一、实验名称:简化S语言词法分析器二、实验目的:通过手工编写简化C语言词法分析器,熟悉并深入理解编译程序词法分析器的工作原理。三、实验内容:1根
4、据保留字和特殊符号表能区分出源文件中的保留字、普通标识符和特殊符号,并能进行简单的错误处理。七、测试源程序示例:/acvoid a( )foat rae,circle;rate=;cirle=314*ra*rat;输出结果:(1)输出结果文件:(void,-)(id, 0) (,-) (),) (,- ) ( fla,-) (id,)(2)标识符的符号表: e te adressaartcire3(3)常数表: Name vae 3.4实验地点:教0五楼计算机学院软一机房实验时间:第4周周二3单元、周四1单元、第五周周二3单元八、实验代码inclde#incldeinlectyp.includ
5、eine M 10保留字符号长度#efine MXSIZE 5/保留字和特殊符号表长度#dfine U 30/标识符和常数的个数FILE *in,*t;/指向文件的指针har infileMAX;/文件名字artokeMAX;harWorNUMAX;/标识符chrcostsNMAX;/常数har lonumNUMMAX0,1,2,3,4,5,6789, 10112,1314,151718,19 201,2223,4,26,272,29; /自定义表nt n1;/行号int num=; /错误统计数tpeetuc Key_or/保留字和特殊符号表结构/ityNu; cha keyWorMAX; char keySigA;hr keyValuA;Ky_wo;/初始化保留字表Kyword yMAXSIZE=intnt,char,flot,float-, vodoid,const,cnst,for,or-, if,if-,lseletenthen-, hile-,switcwitch,-break, begineginend,nd, ,,num +,+-,-,-,*,*,/%,%,(,( ),)-,,l,rop, =,rlop,=,=,rl,=,lop,= !=rlop,!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1