txlyre 14 часов назад
Родитель
Сommit
706f568d6d
1 измененных файлов с 5 добавлено и 75 удалено
  1. 5 75
      qic.c

+ 5 - 75
qic.c

@@ -380,8 +380,6 @@ typedef struct {
     T_DEFER,
     T_REQUIRE,
     T_TRY,
-    T_CATCH,
-    T_FINALLY,
     T_THROW,
     T_GOTO,
     T_CLASS,
@@ -903,10 +901,6 @@ token_t *next_token(char *source, size_t *pos) {
       return TK(REQUIRE);
     else if (strcmp(name, "try") == 0)
       return TK(TRY);
-    else if (strcmp(name, "catch") == 0)
-      return TK(CATCH);
-    else if (strcmp(name, "finally") == 0)
-      return TK(FINALLY);
     else if (strcmp(name, "throw") == 0)
       return TK(THROW);
     else if (strcmp(name, "goto") == 0)
@@ -1165,7 +1159,7 @@ struct _node_t {
     N_LOGOR,
     N_LOGAND,
 
-    N_CATCH,
+    N_TRY,
 
     N_EXPRS_END,
 
@@ -1191,7 +1185,6 @@ struct _node_t {
     N_DEFER,
     N_PASS,
     N_REQUIRE,
-    N_TRY,
     N_THROW,
     N_LABEL,
     N_GOTO,
@@ -1573,10 +1566,10 @@ node_t *parse_primary(list_t *tokens, size_t *pos) {
     MATCH(AND);
 
     return NODET(REFERENCE, tokens->data[(*pos)++]);
-  } else if (MATCH(CATCH)) {
+  } else if (MATCH(TRY)) {
     node_t *a = parse_expr(tokens, pos);
 
-    return NODE1(CATCH, a);
+    return NODE1(TRY, a);
   } else if (MATCH(FUNC))
     return parse_func(tokens, pos, 1);
   else if (MATCH(LPAR)) {
@@ -2769,27 +2762,7 @@ node_t *_parse_stmt(list_t *tokens, size_t *pos, int allow_comma) {
     return NODE1(DEFER, a);
   } else if (MATCH(PASS))
     return NODE0(PASS);
-  else if (MATCH(TRY)) {
-    node_t *a = BLOCK();
-    token_t *t = NULL;
-
-    EXPECT(CATCH, "catch");
-
-    if (!AT(COLON) && !AT(LCB) && !CLIFF) {
-      if (!AT(NAME))
-        PARSE_ERROR("expected identifier");
-
-      t = tokens->data[(*pos)++];
-    }
-
-    node_t *b = BLOCK();
-    node_t *c = NULL;
-
-    if (MATCH(FINALLY))
-      c = BLOCK();
-
-    return NODE3t(TRY, a, b, c, t);
-  } else if (MATCH(THROW)) {
+  else if (MATCH(THROW)) {
     node_t *a = NULL;
 
     if (!CLIFF && !AT(COMMA) && !AT(RPAR) && !AT(RCB) && !AT(EOF))
@@ -6568,49 +6541,6 @@ void compile_node(buffer_t *gbuf, buffer_t *buf, list_t *ctx, table_t *ltab,
     EMIT("qi_old_scope(state);\n");
   } break;
 
-  case N_TRY:
-    EMIT("qi_try(state, {\n");
-    LBPUSH();
-    CTXPUSH("gap");
-    CTXPUSH("trap");
-    compile_node(gbuf, buf, ctx, table_new(), list_new(), list_new(), lbl,
-                 node->a);
-    CTXPOP();
-    CTXPOP();
-    LBPOP();
-    EMIT("}, {\n");
-    if (node->t)
-      EMIT("qi_decl(state, \"%s\", trap->value);\n", node->t->text);
-    LBPUSH();
-    CTXPUSH("gap");
-    compile_node(gbuf, buf, ctx, table_new(), list_new(), list_new(), lbl,
-                 node->b);
-    CTXPOP();
-    LBPOP();
-
-    if (node->c) {
-      NEWGID();
-
-      buffer_t *tbuf = buffer_new();
-
-      buffer_fmt(tbuf, "void __%s%d(qi_state_t *state) {\n", PREFIX, gid);
-      LBPUSH();
-      CTXPUSH("gap");
-      compile_node(gbuf, tbuf, ctx, table_new(), list_new(), list_new(), lbl,
-                   node->c);
-      CTXPOP();
-      LBPOP();
-
-      buffer_fmt(tbuf, "\n}\n");
-
-      buffer_appendb(gbuf, tbuf);
-
-      EMIT("}, __%s%d);\n", PREFIX, gid);
-    } else {
-      EMIT("}, NULL);\n");
-    }
-    break;
-
   case N_THROW:
     if (!node->a) {
       EMIT("qi_throw(state, state->nil);");
@@ -6631,7 +6561,7 @@ void compile_node(buffer_t *gbuf, buffer_t *buf, list_t *ctx, table_t *ltab,
     }
     break;
 
-  case N_CATCH: {
+  case N_TRY: {
     NEWGID();
 
     buffer_t *tbuf = buffer_new();