Helo。在Yacc中打印僞變量
我在學習yacc
,我在理解某些問題時遇到了一些問題。
這是我.y
文件的一部分:
statement: statement expression '\n' {$$=insert_expression_list($1, $2); printf("1\n");}
| expression '\n' {$$=insert_expression_list(NULL, $1); myprogram=$$; printf("1.1\n");}
;
expression: infix_expression {$$=insert_i_expression($1); printf("2\n");}
| unary_expression {$$=insert_u_expression($1);}
| NUMBER {$$=insert_NUMBER($1); printf("test %d\n", $1); }
;
infix_expression: expression '+' expression {printf("3 %d + %d\n", $1, $3); $$=insert_infix_expression($1, is_PLUS, $3);}
| expression '-' expression {$$=insert_infix_expression($1, is_MINUS, $3);}
;
unary_expression: '-' expression %prec UMINUS {$$=insert_unary_expression($2);}
;
正如你可以看到我想打印一些「調試」信息。 這是包含1+2+5
的文件的輸出。
test 1
test 2
3 -2147318816 + -2147318800
2
test 5
3 -2147069008 + -2147068992
2
1.1
的問題是在infix_expression: expression '+' expression {printf("3 %d + %d\n", $1, $3);
這不是打印這些值的正確方法是什麼?在NUMBER {$$=insert_NUMBER($1); printf("test %d\n", $1); }
如我所料值印刷...
謝謝。將盡力做到這一點。 – Favolas