void parse_Expression_dash() { printf("Enter Expression_dash\n"); if (nextToken == T_PLUS) { nextToken = getToken(); parse_Term(); /* ここで + の処理 */ parse_Expression_dash(); } else if (nextToken == T_MINUS) { nextToken = getToken(); parse_Term(); /* ここで - の処理 */ parse_Expression_dash(); } else { } }
void parse_Expression() { printf("Enter Expressions\n"); if (nextToken == T_PLUS) { nextToken = getToken(); parse_Term(); /* ここで 0 Term + をスタックにつむ */ parse_Expression_dash(); } else if (nextToken == T_MINUS) { nextToken = getToken(); parse_Term(); /* ここで 0 Term - をスタックにつむ */ parse_Expression_dash(); } else { parse_Term(); parse_Expression_dash(); } }
void parse_Expression_dash() { /* E' → +TE'|ε */ if (nextToken == T_PLUS) { nextToken = getToken(); parse_Term(); /* T_PLUS のコード生成はじまり */ printf("POP B\n"); printf("POP A\n"); printf("PLUS\n"); printf("PUSH C\n"); /* T_PLUS のコード生成おわり */ parse_Expression_dash(); } }
void parse_Expression() { /* E → TE' */ parse_Term(); parse_Expression_dash(); }