qbe

Internal scc patchset buffer for QBE
Log | Files | Refs | README | LICENSE

commit 8733d14e6e719f1f3b0d677b1938d846baf13fd0
parent 095ebf62f10ca073b29fe1434ea3cf59dab44bbb
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date:   Mon, 12 Oct 2015 18:28:19 -0400

add & binop to minic

Diffstat:
Mminic/minic.y | 7++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/minic/minic.y b/minic/minic.y @@ -312,6 +312,7 @@ expr(Node *n) ['*'] = "mul", ['/'] = "div", ['%'] = "rem", + ['&'] = "and", ['<'] = "cslt", /* meeeeh, careful with pointers/long */ ['l'] = "csle", ['e'] = "ceq", @@ -571,12 +572,11 @@ mkstmt(int t, void *p1, void *p2, void *p3) %token IF ELSE WHILE BREAK RETURN %right '=' +%left '&' %left EQ NE %left '<' '>' LE GE %left '+' '-' %left '*' '/' '%' -%nonassoc '&' -%nonassoc '[' %type <u> type %type <s> stmt stmts @@ -584,7 +584,7 @@ mkstmt(int t, void *p1, void *p2, void *p3) %% -prog: func prog | fdcl prog | ; +prog: func prog | fdcl prog | idcl prog | ; fdcl: type IDENT '(' ')' ';' { @@ -660,6 +660,7 @@ expr: pref | expr GE expr { $$ = mknode('l', $3, $1); } | expr EQ expr { $$ = mknode('e', $1, $3); } | expr NE expr { $$ = mknode('n', $1, $3); } + | expr '&' expr { $$ = mknode('&', $1, $3); } ; pref: post