我做的YACC --2

 

效果

生成的符号属性和DFA报告

$: eposilon is  0 nt is 0 value is 0

command: eposilon is  0 nt is 1 value is 1

exp: eposilon is  0 nt is 1 value is 2

ADD: eposilon is  0 nt is 0 value is 3

term: eposilon is  0 nt is 1 value is 4

MINU: eposilon is  0 nt is 0 value is 5

MUL: eposilon is  0 nt is 0 value is 6

factor: eposilon is  0 nt is 1 value is 7

NUMBER: eposilon is  0 nt is 0 value is 8

LP: eposilon is  0 nt is 0 value is 9

RP: eposilon is  0 nt is 0 value is 10

Rule: command->exp

Rule: exp->exp ADD term

Rule: exp->exp MINU term

Rule: exp->term

Rule: term->term MUL factor

Rule: term->factor

Rule: factor->NUMBER

Rule: factor->LP exp RP

 

language's startsymbol is command

$:firstset value is $

command:firstset value is NUMBER LP

exp:firstset value is NUMBER LP

ADD:firstset value is ADD

term:firstset value is NUMBER LP

MINU:firstset value is MINU

MUL:firstset value is MUL

factor:firstset value is NUMBER LP

NUMBER:firstset value is NUMBER

LP:firstset value is LP

RP:firstset value is RP

I0:

command->@exp

The precs is :$

     .exp goto 1

     .term goto 2

     .factor goto 3

     .NUMBER shift 4

     .LP shift 5

I1:

command->exp @

The precs is :$

exp->exp @ADD term

The precs is :$ ADD MINU

exp->exp @MINU term

The precs is :$ ADD MINU

     .ADD shift 6

     .MINU shift 7

I2:

exp->term @

The precs is :$ ADD MINU RP

term->term @MUL factor

The precs is :$ ADD MINU MUL RP

     .MUL shift 8

I3:

term->factor @

The precs is :$ ADD MINU MUL RP

I4:

factor->NUMBER @

The precs is :$ ADD MINU MUL RP

I5:

factor->LP @exp RP

The precs is :$ ADD MINU MUL RP

     .exp goto 9

     .term goto 2

     .factor goto 3

     .NUMBER shift 4

     .LP shift 5

I6:

exp->exp ADD @term

The precs is :$ ADD MINU RP

     .term goto 10

     .factor goto 3

     .NUMBER shift 4

     .LP shift 5

I7:

exp->exp MINU @term

The precs is :$ ADD MINU RP

     .term goto 11

     .factor goto 3

     .NUMBER shift 4

     .LP shift 5

I8:

term->term MUL @factor

The precs is :$ ADD MINU MUL RP

     .factor goto 12

     .NUMBER shift 4

     .LP shift 5

I9:

factor->LP exp @RP

The precs is :$ ADD MINU MUL RP

exp->exp @ADD term

The precs is :ADD MINU RP

exp->exp @MINU term

The precs is :ADD MINU RP

     .RP shift 13

     .ADD shift 6

     .MINU shift 7

I10:

exp->exp ADD term @

The precs is :$ ADD MINU RP

term->term @MUL factor

The precs is :$ ADD MINU MUL RP

     .MUL shift 8

I11:

exp->exp MINU term @

The precs is :$ ADD MINU RP

term->term @MUL factor

The precs is :$ ADD MINU MUL RP

     .MUL shift 8

I12:

term->term MUL factor @

The precs is :$ ADD MINU MUL RP

I13:

factor->LP exp RP @

The precs is :$ ADD MINU MUL RP

The action String count is

8

0:

1:

       DD = D(1) + D(3);

 

       printf("Hello/n");

 

2:

       DD = D(1) - D(3);

       printf("reduce: exp->exp MINU term/n");

 

3:

       DD = D(1);

       printf("reduce: exp->term/n");

 

4:

       DD = D(1)*D(3);

       printf("reduce: term->term MUL factor/n");

 

 

5:

       DD = D(1);

       printf("reduce:term->factor/n");

 

 

6:

       DD = D(1);

       printf("reduce:factor->NUMBER/n");

 

 

7:

       DD = D(2);

       printf("reduce:factor->LP exp RP/n");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值