效果
生成的符号属性和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");