commit 9e36c90c046cc1bd1b9ba069f669ee3828596766
parent 04e4de26ba4989ab84136e52169fc7bead5e8cf3
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Fri, 5 Nov 2021 04:19:33 +0100
cc1: Simplify stmt()
Diffstat:
1 file changed, 38 insertions(+), 16 deletions(-)
diff --git a/src/cmd/cc/cc1/stmt.c b/src/cmd/cc/cc1/stmt.c
@@ -365,22 +365,44 @@ compound(Symbol *lbreak, Symbol *lcont, Switch *lswitch)
static void
stmt(Symbol *lbreak, Symbol *lcont, Switch *lswitch)
{
- void (*fun)(Symbol *, Symbol *, Switch *);
-
switch (yytoken) {
- case '{': fun = compound; break;
- case RETURN: fun = Return; break;
- case WHILE: fun = While; break;
- case FOR: fun = For; break;
- case DO: fun = Dowhile; break;
- case IF: fun = If; break;
- case BREAK: fun = Break; break;
- case CONTINUE: fun = Continue; break;
- case GOTO: fun = Goto; break;
- case SWITCH: fun = Swtch; break;
- case CASE: fun = Case; break;
- case DEFAULT: fun = Default; break;
- default: fun = stmtexp; break;
+ case '{':
+ compound(lbreak, lcont, lswitch);
+ break;
+ case RETURN:
+ Return(lbreak, lcont, lswitch);
+ break;
+ case WHILE:
+ While(lbreak, lcont, lswitch);
+ break;
+ case FOR:
+ For(lbreak, lcont, lswitch);
+ break;
+ case DO:
+ Dowhile(lbreak, lcont, lswitch);
+ break;
+ case IF:
+ If(lbreak, lcont, lswitch);
+ break;
+ case BREAK:
+ Break(lbreak, lcont, lswitch);
+ break;
+ case CONTINUE:
+ Continue(lbreak, lcont, lswitch);
+ break;
+ case GOTO:
+ Goto(lbreak, lcont, lswitch);
+ break;
+ case SWITCH:
+ Swtch(lbreak, lcont, lswitch);
+ break;
+ case CASE:
+ Case(lbreak, lcont, lswitch);
+ break;
+ case DEFAULT:
+ Default(lbreak, lcont, lswitch);
+ break;
+ default:
+ stmtexp(lbreak, lcont, lswitch);
}
- (*fun)(lbreak, lcont, lswitch);
}