txlyre 2 weeks ago
parent
commit
85412ab06e
1 changed files with 11 additions and 5 deletions
  1. 11 5
      qic.c

+ 11 - 5
qic.c

@@ -1849,8 +1849,18 @@ node_t *parse_call(list_t *tokens, size_t *pos) {
   return a;
   return a;
 }
 }
 
 
+node_t *parse_dereference(list_t *tokens, size_t *pos) {
+  if (MATCH(RAISE)) {
+    node_t *a = parse_dereference(tokens, pos);
+
+    return NODE1(DEREFERENCE, a);
+  }
+
+  return parse_call(tokens, pos);
+}
+
 node_t *parse_postfix(list_t *tokens, size_t *pos) {
 node_t *parse_postfix(list_t *tokens, size_t *pos) {
-  node_t *a = parse_call(tokens, pos);
+  node_t *a = parse_dereference(tokens, pos);
 
 
   if (CLIFF)
   if (CLIFF)
     return a;
     return a;
@@ -1916,10 +1926,6 @@ node_t *parse_unary(list_t *tokens, size_t *pos) {
     node_t *a = parse_unary(tokens, pos);
     node_t *a = parse_unary(tokens, pos);
 
 
     return NODE1(BNOT, a);
     return NODE1(BNOT, a);
-  } else if (MATCH(RAISE)) {
-    node_t *a = parse_unary(tokens, pos);
-
-    return NODE1(DEREFERENCE, a);
   } else if (MATCH(PLUSPLUS)) {
   } else if (MATCH(PLUSPLUS)) {
     node_t *a = parse_postfix(tokens, pos);
     node_t *a = parse_postfix(tokens, pos);