编译原理_实验报告(3)

2021-01-28 20:40

编译原理实验

1.关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf 并为小写。

2."+”;”-”;”*”;”/”;”:=“;”:”;”<“;”<=“;”>“;”>=“;”<>“;”=“;”(“;”)”;”;”;”#”为运算符。

3.其他标记如字符串,表示以字母开头的标识符。

4.空格符跳过。

5.各符号对应种别码

关键字分别对应1-13

运算符分别对应401-418,501-513。

字符串对应100

常量对应200

结束符#

四:举例说明

目标:实现对常量的判别

代码:

digit [0-9]

letter [A-Za-z]

other_char [!-@\[-~]

id ({letter}|[_])({letter}|{digit}|[_])*

string {({letter}|{digit}|{other_char})+}

int_num {digit}+

%%

[ |\t|\n]+ "auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"re gister"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"uns igned"|"continue"|"for"|"signed"|"void"|"default"|"goto"|"sizeof"|"do"|"if"|"st atic"|"while"|"main" {Upper(yytext,yyleng);printf("%s,NULL\n",yytext);} \"([!-~])*\" {printf("CONST_string,%s\n",yytext);}

-?{int_num}[.]{int_num}?([E][+|-]?{int_num})?

{printf("CONST_real,%s\n",yytext);}

"0x"?{int_num} {printf("CONST_int,%s\n",yytext);} ","|";"|"("|")"|"{"|"}"|"["|"]"|"->"|"."|"!"|"~"|"++"|"--"|"*"|"&"|"sizeof"|"/" |"%"|"+"|"-"|">"|"<"|">="|"<="|"=="|"!="|"&"|"^"|"|"|"&"|"||"|"+="|"-="|"*="|"/ ="|"%="|">>="|"<<="|"&="|"^="|"|="|"=" {printf("%s,NULL\n",yytext);} {id} {printf("ID,%s\n",yytext);}

{digit}({letter})+ {printf("error1:%s\n",yytext);}

%%

#include <ctype.h>

Upper(char *s,int l)

{

int i;

for(i=0;i<l;i++)

{

s[i]=toupper(s[i]);

}

}

yywrap()

{

return 1;

}

五:源程序:

3


编译原理_实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:肉牛饲养管理技术

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: