diff options
author | kdx <kikoodx@paranoici.org> | 2023-06-11 04:09:27 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-06-11 04:09:27 +0200 |
commit | f5131c24008913591c42dbb8612128172b0ca0f9 (patch) | |
tree | c1e72c7298f06d5c6ba9ac96d0244a78f49b9f16 | |
parent | 6d375a705510f3e7a92f300f2534b5d682f2a564 (diff) | |
download | golem-f5131c24008913591c42dbb8612128172b0ca0f9.tar.gz |
dbg statement
-rw-r--r-- | src/main.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -179,6 +179,7 @@ typedef enum { NOD_RETURN_STMT, NOD_BREAK_STMT, NOD_SLP_STMT, + NOD_DBG_STMT, NOD_WRT_STMT, NOD_ASSIGN_STMT, NOD_IFELSE_STMT, @@ -304,6 +305,7 @@ static Node *expr_stmt(Token **rest, Token *tok); static Node *return_stmt(Token **rest, Token *tok); static Node *break_stmt(Token **rest, Token *tok); static Node *slp_stmt(Token **rest, Token *tok); +static Node *dbg_stmt(Token **rest, Token *tok); static Node *wrt_stmt(Token **rest, Token *tok); static Node *assign_stmt(Token **rest, Token *tok); static Node *ifelse_stmt(Token **rest, Token *tok); @@ -595,6 +597,8 @@ stmt(Token **rest, Token *tok) return block_stmt(rest, tok); if (equal(tok, "if")) return ifelse_stmt(rest, tok); + if (equal(tok, "dbg")) + return dbg_stmt(rest, tok); if (equal(tok, "slp")) return slp_stmt(rest, tok); if (equal(tok, "wrt")) @@ -674,6 +678,15 @@ slp_stmt(Token **rest, Token *tok) } static Node * +dbg_stmt(Token **rest, Token *tok) +{ + tok = skip(tok, "dbg"); + Node *const node = new_unary(NOD_DBG_STMT, expr(&tok, tok)); + *rest = skip(tok, ";"); + return node; +} + +static Node * wrt_stmt(Token **rest, Token *tok) { tok = skip(tok, "wrt"); @@ -912,6 +925,12 @@ gen_stmt(Node *node, Node *fname, int break_lbl) case NOD_SLP_STMT: printf("\tSLP\n"); break; + case NOD_DBG_STMT: + gen_expr(node->lhs); + printf("\tDBG\n"); + printf("\tPOP\n"); + depth -= 1; + break; case NOD_WRT_STMT: gen_expr(node->lhs); printf("\tWRT\n"); |