From a9fac00618a7dcba3b7d1c199018fea6671db383 Mon Sep 17 00:00:00 2001 From: "benjamin.franksen" <benjamin.franksen@helmholtz-berlin.de> Date: Sat, 5 Oct 2013 12:26:10 +0000 Subject: [PATCH] snc: treat sizeof as a prefix operator when given an expression --- src/snc/snl.lem | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/snc/snl.lem b/src/snc/snl.lem index 7fabfa8a..fa5a5fdd 100644 --- a/src/snc/snl.lem +++ b/src/snc/snl.lem @@ -82,7 +82,7 @@ in the file LICENSE that is included with this distribution. %left LSHIFT RSHIFT. %left ADD SUB. %left ASTERISK SLASH MOD. -%right NOT TILDE INCR DECR PRE. // omitted duplicates: ADD SUB ASTERISK AMPERSAND +%right NOT TILDE INCR DECR SIZEOF PRE. // omitted duplicates: ADD SUB ASTERISK AMPERSAND %left LBRACKET LPAREN POINTER PERIOD POST. // omitted duplicates: INCR DECR program ::= @@ -405,7 +405,6 @@ expr(p) ::= variable(v). { p = expr(E_VAR, v); } expr(p) ::= LPAREN(t) comma_expr(x) RPAREN. { p = expr(E_PAREN, t, x); } expr(p) ::= expr(x) LPAREN(t) args(y) RPAREN. { p = expr(E_FUNC, t, x, y); } expr(p) ::= EXIT(n) LPAREN(t) args(y) RPAREN. { p = expr(E_FUNC, t, expr(E_VAR, n), y); } -expr(p) ::= SIZEOF(n) LPAREN(t) expr(y) RPAREN. { p = expr(E_FUNC, t, expr(E_VAR, n), y); } expr(p) ::= SIZEOF(n) LPAREN(t) type_expr(y) RPAREN. { p = expr(E_FUNC, t, expr(E_VAR, n), y); } expr(p) ::= expr(x) LBRACKET(t) expr(y) RBRACKET. { p = expr(E_SUBSCR, t, x, y); } expr(p) ::= expr(x) PERIOD(t) member(y). { p = expr(E_SELECT, t, x, y); } @@ -422,6 +421,7 @@ expr(p) ::= NOT(t) expr(x). [PRE] { p = expr(E_PRE, t, x); } expr(p) ::= TILDE(t) expr(x). [PRE] { p = expr(E_PRE, t, x); } expr(p) ::= INCR(t) expr(x). [PRE] { p = expr(E_PRE, t, x); } expr(p) ::= DECR(t) expr(x). [PRE] { p = expr(E_PRE, t, x); } +expr(p) ::= SIZEOF(t) expr(x). [PRE] { p = expr(E_FUNC, t, expr(E_VAR, t), x); } // Type Cast expr(p) ::= LPAREN(t) type_expr(c) RPAREN expr(x). [PRE] { p = expr(E_CAST, t, c, x); } -- GitLab