网站大量收购独家精品文档,联系QQ:2885784924

程序设计训练实验报告--词法分析器.docx

程序设计训练实验报告--词法分析器.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

本科实验报告

课程名称:程序设计训练

学院:电子信息与电气工程学部

词法分析器

程序说明:

此词法分析器是一个能够扫描输入的字符流,并将扫描到的字符按照二元式的形式保存到word.txt文件中的一个程序(也可以通过屏幕输出的方式输出)。通过词法分析可以为完成对应语言的编译程序做准备,同时词法分析器也可以完成对输入流的字符统计。

运行环境:

WINDOWS7,visualc++6.0。

定义语言G={VN,VT,P,S}

其中,VN={P,D,S,B,T’,L,L’,E,T,F,NUM,RELOP,ID}

VT={int,if,then,else,while,do,read,write,;,,|,{,},=,=,,,==,!=,=,+,-,*,/,++,--,(,),a~z,A~Z,0~9,}

P={

P→{DS}

D→intID;{intID;}

S→if(B)thenS[elseS]|while(B)doS|{L}|ID=E

|writeE;|readID;

L→SL’

L’→;L|e

B→T’{∨T’}

T’→F’{∧F’}

F’→IDrelopID|ID

E→T{+T|-T}

T→F{*F|/F}

F→(E)|NUM|ID

NUM-0|1|2|3|4|5|6|7|8|9

RELOP-|=||=|==

}

S={P}

P代表程序,D代表声明语句,S代表语句,

L代表语句的表列,

B代表布尔表达式,非零代表真。

实现的代码如下

#includestdio.h

#includestring.h

#defineMAX80

#defineIDMAX8

//标识符最大长度为IDMAX个字符,最大输入字符为MAX个字符,类别编码syn,保留字共8个rwtab[8]

charprog[MAX],token[IDMAX],ch;

intsyn,p,m,n,sum;

char*rwtab[8]={int,if,then,else,while,do,read,write};//保留字

voidscaner();

intmain()

{

FILE*fout;

fout=fopen(word.txt,w);//建立单词本

p=0;

printf(\npleaseinputastring(endwith#):\n);

do{

scanf(%c,ch);

prog[p++]=ch;

}while(ch!=#);

p=0;

do{

scaner();

switch(syn)

{

case-1:

printf(youhaveinputawrongstring\n);

return0;

break;

default:

fprintf(fout,%d\t%s\n,syn,token);//文件输出和屏幕输出切换

//printf(%s\t%d\n,token,syn);

break;

}

}while(syn!=0);

getchar();

}

voidscaner(void)

{

sum=0;

for(m=0;m8;m++)

token[m++]=\0;

ch=prog[p++];

m=0;

while((ch==)||(ch==\n))

ch=prog[p++];

if(((ch=z)(ch=a))||((ch=Z)(ch=A)))

{

while(((ch=z)(ch=a))||((ch=Z)(ch=A))||((ch=0)(ch=9)))

您可能关注的文档

文档评论(0)

ze122230743 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档