diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -178,6 +178,7 @@ typedef enum { NOD_EXPR_STMT, NOD_RETURN_STMT, NOD_BREAK_STMT, + NOD_SLP_STMT, NOD_WRT_STMT, NOD_ASSIGN_STMT, NOD_IFELSE_STMT, @@ -302,6 +303,7 @@ static Node *block_stmt(Token **rest, Token *tok); 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 *wrt_stmt(Token **rest, Token *tok); static Node *assign_stmt(Token **rest, Token *tok); static Node *ifelse_stmt(Token **rest, Token *tok); @@ -593,6 +595,8 @@ stmt(Token **rest, Token *tok) return block_stmt(rest, tok); if (equal(tok, "if")) return ifelse_stmt(rest, tok); + if (equal(tok, "slp")) + return slp_stmt(rest, tok); if (equal(tok, "wrt")) return wrt_stmt(rest, tok); if (equal(tok, "loop")) @@ -663,6 +667,13 @@ break_stmt(Token **rest, Token *tok) } static Node * +slp_stmt(Token **rest, Token *tok) +{ + *rest = skip(skip(tok, "slp"), ";"); + return new_node(NOD_SLP_STMT); +} + +static Node * wrt_stmt(Token **rest, Token *tok) { tok = skip(tok, "wrt"); @@ -898,6 +909,9 @@ gen_stmt(Node *node, Node *fname, int break_lbl) error("break statement outside of loop"); printf("\tJMP ,__lbl_%x\n", break_lbl); break; + case NOD_SLP_STMT: + printf("\tSLP\n"); + break; case NOD_WRT_STMT: gen_expr(node->lhs); printf("\tWRT\n"); |