yacc中相似规则的匹配
在yacc+lex程序中,使用yacc文件中的这些规则(以及更多规则)yacc中相似规则的匹配,c,yacc,lex,C,Yacc,Lex,在yacc+lex程序中,使用yacc文件中的这些规则(以及更多规则) stmt : ';' | expr ';' { /*code*/ } | IF '(' expr ')' stmt { /*code*/ } | IF '(' expr ')' stmt ELSE stmt { /*code*/ } . . . . 如果输入类似于: if(1<2) {return 5;} if(1<2) {return 5;}
stmt : ';'
| expr ';' { /*code*/ }
| IF '(' expr ')' stmt { /*code*/ }
| IF '(' expr ')' stmt ELSE stmt { /*code*/ }
.
.
.
.
如果输入类似于:
if(1<2) {return 5;}
if(1<2) {return 5;} else {return 2;}
if(1在yacc脚本中,if语句定义如下:
if_statement : IF b_expr
statement
else_part
;
else_part : ELSE
statement
| empty
;
expr
是如何定义的?@BobJarvis我刚刚添加了expr的定义
if_statement : IF b_expr
statement
else_part
;
else_part : ELSE
statement
| empty
;