词法分析器、语法分析器试验报告doc.doc

词法分析器、语法分析器试验报告doc.doc

ID:27550310

大小:38.50 KB

页数:6页

时间:2018-12-04

词法分析器、语法分析器试验报告doc.doc_第1页
词法分析器、语法分析器试验报告doc.doc_第2页
词法分析器、语法分析器试验报告doc.doc_第3页
词法分析器、语法分析器试验报告doc.doc_第4页
词法分析器、语法分析器试验报告doc.doc_第5页
资源描述:

《词法分析器、语法分析器试验报告doc.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、词法分析器、语法分析器试验报告一.程序思路1.词法分析器对输入的程序进行分析,将关键字,保留字与系统标识符分开,并对其属性进行说明。建立数组,将单词读入,对单词的ASCII码进行判断,将在ASCII码值在一定区间进行区分(使用if语句来判断),分开来后,对其所在ASCII值区间的不同,给予以不同的属性(比如:系统保留字…),词法分析器完成后要能识别+,-,=等字符。2.语法分析器对输入的程序语句进行分析。对每个非终结点定义单个函数,定义了它的后继节点。然后用一个构造来的函数,使定义的后继节点符合语法,否则报错。二.源程序cifafenxi:#inc

2、lude"string.h"#include"iostream.h"#include"stdio.h"#include"conio.h"#defineOK1#define……#define……classword{intch;charcode[50][50];public://word();intscan();intletter(intch);intdigit(intch);intflag(intch);intkeyword(char*ch);intalpha(char*ch);intjudge(char*ch);};intword::letter(

3、intch)//字符判断intword::alpha(char*ch)//字符属性设定intword::digit(intch)//数字判断intword::flag(intch){if(((ch>='0')&&(ch<='9'))

4、

5、((ch>='a')&&(ch<='z'))

6、

7、((ch>='A')&&(ch<='Z'))

8、

9、(ch=='+')

10、

11、(ch=='-')

12、

13、(ch=='*')

14、

15、(ch=='/')

16、

17、(ch=='=')

18、

19、(ch=='==')

20、

21、(ch=='%')

22、

23、(ch=='<')

24、

25、(ch=='>')

26、

27、(ch=='(')

28、

29、

30、(ch==')'))return(1);elsereturn(0);}intword::keyword(char*ch)//关键字判断{if((ch[0]=='i')&&(ch[1]=='n')&&(ch[2]=='t')&&(ch[3]==0)){cout<<""<<"The[int]isakeyword!"<<"";return(INT);}if((ch[0]=='c')&&(ch[1]=='h')&&(ch[2]=='a')&&(ch[3]=='r')&&(ch[4]==0)){cout<<""<<"The[char]isakey

31、word!"<<"";return(CHAR);}……………………………………………………{cout<<""<<"Itisakeyword[if]!"<<"";return(SWITCH);}return(0);}intword::judge(char*ch)//数字进位制判断if((ch[0]=='0')&&((ch[1]>='0')&&(ch[1]<='7'))){cout<<""<<"ThisisaOTCnumber,OTCvalueis"<<"["<

32、……………………………return(1);}intword::scan(){inti=0,j=0,x=1;cout<<"Pleaseinput!"<<"";ch=getc(stdin);while((ch=='')

33、

34、(ch==10))ch=getc(stdin);if((flag(ch)==NO)){cout<<""<<"ERROR"<<"";return(ERROR);}ungetc(ch,stdin);while(x){ch=getc(stdin);if((letter(ch)==YES)){i=0;while(letter(ch

35、)

36、

37、digit(ch)){code[j][i]=ch;ch=getc(stdin);i++;}code[j][i]=0;if(keyword(code[j])==0){if(alpha(code[j]))cout<<"Theidentifier'sIDis["<

38、

39、(ch=='x')

40、

41、((ch>='a')&&(ch<='f'))){code[j][i]=ch;ch=getc(stdin);i++;

42、}code[j][i]=0;judge(code[j]);cout<<"Thenumber'sIDis["<

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

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

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