的联合使用实验报告.docx《编译原理》课程实验报告
题目 lex yacc 的联合使用
专业
班级
学号
姓名
一
首先要修改 .l 文件的代码,再把此文件用 lex 运行,即词法分析部分用 lex 完成;然后是修改文件, 尽管有参照的代码, 但是要自己实现能对整数和实数进行带变量的四则运算,对于还没有完全掌握 .y 文件编写的我还是太有难度了,
自己先是完成了只对实数的运算, 也能运行,但只要添加上实数就会出错, 研究
了很久,还是没有找出来哪里还有错误;有时候也会出现用 yacc 运行没错误,但用 c-free 运行就会出错,提示说 .h 文件有错误,找了半天,也修改了很多。却仍然不知道哪里有错。
总的来说,虽然没有完成最终的目的,但是我已经尽力了。
. 实验结果(关键源代码)文件代码:
%option noyywrap
DIGIT[0-9]
ID[a-zA-Z][a-zA-Z0-9]*
%{
#include<>
%}
%%
{DIGIT}+"."{DIGIT}* { return NUM;}
"/*"[^}\n]*"*/" printf("33 \n");
"^"
printf("34
%s\n",yytext);
"+"
printf("35
%s\n",yytext);
"-"
printf("36
%s\n",yytext);
"*"
printf("37
%s\n",yytext);
"/"
printf("38
%s\n",yytext);
"("
printf("39
%s\n",yytext);
")"
printf("40
%s\n",yytext);
"["
printf("41
%s\n",yytext);
"]"
printf("42
%s\n",yytext);
"{"
printf("43
%s\n",yytext);
"}"
printf("44
%s\n",yytext);
double
{ return DOUBLE;}
EOF
{ return 0;}
{ID}
{ return ID;}
.
%%
printf("100 %s\n",yytext);
main(void)
{
yylex();
}
文件代码:
/* 带 整数 int 和实数 double 变量声明的加减乘除四则运算 */
%{
#include <>
#include <>
#include <>
#include <>
#include ""
extern char yytext[20];
extern SYMREC *sym_table;
的联合使用实验报告 来自淘豆网m.daumloan.com转载请标明出处.