ref: a8b9e699e5f953f3521cbe2e3e9ad431f307823c
dir: /expr.c/
#include <stdint.h> #include <stdio.h> #include "cc.h" #include "code.h" #include "tokens.h" #include "symbol.h" struct ctype *expr(void); static struct ctype * primary(void) { register struct ctype *tp; switch (yytoken) { case IDEN: if (yylval.sym == NULL) error("'%s' undeclared", yytext); emitsym(yylval.sym); tp = yylval.sym->type; next(); break; case CONSTANT: next(); /* TODO: do something */ break; case '(': next(); tp = expr(); expect(')'); break; default: error("unexpected '%s'", yytoken); } return tp; } static struct ctype * postfix(void) { struct ctype * tp; tp = primary(); } struct ctype * expr(void) { register struct ctype *tp; do tp = postfix(); while (yytoken == ','); return tp; }