编写pl-0语言词法分析程序(c)

编写pl-0语言词法分析程序(c)

ID:13087398

大小:44.50 KB

页数:11页

时间:2018-07-20

编写pl-0语言词法分析程序(c)_第1页
编写pl-0语言词法分析程序(c)_第2页
编写pl-0语言词法分析程序(c)_第3页
编写pl-0语言词法分析程序(c)_第4页
编写pl-0语言词法分析程序(c)_第5页
资源描述:

《编写pl-0语言词法分析程序(c)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编写PL/0语言的词法分析程序要求:1、读入用PL/0语言编写的源程序,正确的进行词法分析,并输出二元式序列。2、若源程序有词法错误,能够给出出错的准确位置。3、词法代号如下(+,+);(-,-);(*,*);(/,/);((,();(),));(,,,);(;,;);(.,.);(#,#);(=,=);(>,>);(<,<);(:=,a);(>=,b);(<=,c);(数字,d);(标识符,e);关键字代号:(begin,f);(call,g);(const,h);(do,i);(end,j);(if,k);(odd,l);(procedure,m);

2、(read,n);(then,o);(var,p);(while,q);(write,r);4、等于运算符号为一个 =测试程序:A.C======================CONST A=10; VAR B,C; PROCEDURE P;   VAR D;      PROCEDURE Q;   VAR X;       BEGIN       READ(X);D:=X;WHILE X<0 DO CALL P;  END;     BEGIN     WRITE(D);   CALL Q;   END;  BEGIN  CALL P;   END.

3、*//*program name:chifufenxi*//*作者:小万 qq:421404493*//*date:2004.10.11*/#include#include#include#include#include                                                                                                         #define N 256//每一行

4、的字符数不能超过256个                                                         char buffer[N];   //用作存放一行字符char word[20];  //用作存放经过分析单词char *kword[13]={"begin","call","const","do","end","if","odd","procedure","read","then","var","while","write"};char ktype[13]={'f','g','h','i','j','k','l',

5、'm','n','o','p','q','r'};int len;//记录每一行的长度int count=0;//用来记录行数void write(char *wstr,char wc,FILE *wout)//将分析结果按照规则写入到文件{       fputc('(',wout);       fputs(wstr,wout);    fputc(',',wout);     fputc(wc,wout);    fputc(')',wout); }int readbuffer(FILE *fp){char ch;len=0;ch=fgetc(fp

6、);while(!feof(fp) && ch!='')//读取字符到缓冲区{buffer[len]=ch;ch=fgetc(fp);len++;}                                                                                                                    len--;//用来控制词法分析时行分析中字母的个数                                                              

7、                                                                         if(feof(fp))//标志文件是否结束return 0;else return 1;}void error(int type){  if(type==1)  printf("为无效字符,第%d行词法出错,标志符不能以数字开头",count); else if(type==2)      printf("第%d行词法出错,赋值符应为:=  ",count);      else printf("

8、为无效字符,第%d行词法出错",count);}void check(cha

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。