最新范文 方案 计划 总结 报告 体会 事迹 讲话 倡议书 反思 制度 入党

编译原理实验报告yacc的使用

日期:2020-05-25  类别:最新范文  编辑:学科吧  【下载本文Word版

编译原理实验报告yacc的使用 本文关键词:编译,原理,实验,报告,yacc

编译原理实验报告yacc的使用 本文简介:1.1错误信息统计1.2正确运行及结果:2yacc脚本%{#include#include%}%tokenNUMBER%%command:exp{printf(“%d/n“,$1);};/*printtheresult/exp:exp+term{$$=$1+$3;}|exp-term{$$=$1-$

编译原理实验报告yacc的使用 本文内容:

1.1错误信息统计

1.2正确运行及结果:

2

yacc脚本

%{

#include

#include

%}

%token

NUMBER

%%

command:

exp

{printf(“%d/n“,$1);}

;/*

print

the

result/

exp:exp

+

term

{$$

=

$1

+

$3;}

|exp

-

term

{$$

=

$1

-

$3;}

|term

{$$

=

$1;}

;

term:term

factor

{$$

=

$1

$3;}

|factor{$$

=

$1;}

;

factor:NUMBER{$$

=

$1;}

|

(

exp

)

{$$

=

$2;}

%%

main()

{

return

yyparse();

}

int

yylex(void)

{

int

ch;

ch

=

getchar();

if(isdigit(ch))

{yylval

=

ch

-

0

;

return

NUMBER;};/*

数字/

if(ch

==

/n

)

return

0;

return

ch;

}

void

yyerror(chars)

{

fprintf(stderr,“%s/n“,s);/*

print

error

message/

}

3.

Yacc脚本中,%token是定义的终结符还是非终结符?

NUMBER又是属于什么性质的符号?

%token是定义的是终结符,NUMBER属于宏定义常量,是由yacc内部决定的终结符编号常量。

4.指出上面的Yacc脚本中,其定义部分、规则部分和辅助程序(用户程序)部分各是什么?

定义部分:

%{

#include

#include

%}

%token

NUMBER

规则部分:

%%

command:

exp

{printf(“%d/n“,$1);}

;/*

print

the

result/

exp:exp

+

term

{$$

=

$1

+

$3;}

|exp

-

term

{$$

=

$1

-

$3;}

|term

{$$

=

$1;}

;

term:term

factor

{$$

=

$1

$3;}

|factor{$$

=

$1;}

;

factor:NUMBER{$$

=

$1;}

|

(

exp

)

{$$

=

$2;}

%%

辅助程序部分:

main()

{

return

yyparse();

}

int

yylex(void)

{

int

ch;

ch

=

getchar();

if(isdigit(ch))

{yylval

=

ch

-

0

;

return

NUMBER;};/*

数字/

if(ch

==

/n

)

return

0;

return

ch;

}

void

yyerror(chars)

{

fprintf(stderr,“%s/n“,s);/*

print

error

message/

}

5.规则部分定义了几个非终结符成分,各是什么?其中,开始符是哪一个?如何从Yacc脚本中快速寻找开始符?

规则定义了3个非终结符,分别是exp,term,factor;其中exp时开始符,寻找最初输入变量接收值的非终结符。

6.这个Yacc脚本实现了几条规则,试根据Yacc的规则部分,写出实现的这几条规则。

实现了三条规则,分别是加法,减法和乘法。

7.在这个Yacc脚本中,哪一部分代码实现了数字的输入?

command:

exp

{printf(“%d/n“,$1);

    以上《编译原理实验报告yacc的使用》范文由学科吧精心整理,如果您觉得有用,请收藏及关注我们,或向其它人分享我们。转载请注明出处 »学科吧»最新范文»编译原理实验报告yacc的使用
‖大家正在看...
设为首页 - 加入收藏 - 关于范文吧 - 返回顶部 - 手机版
Copyright © 学科吧 如对《编译原理实验报告yacc的使用》有疑问请及时反馈。All Rights Reserved