diff options
author | kdx <kikoodx@paranoici.org> | 2023-06-11 03:51:05 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-06-11 03:51:05 +0200 |
commit | 6d375a705510f3e7a92f300f2534b5d682f2a564 (patch) | |
tree | 462a1e4d339b210f6d1a8a695b25fc82afde3130 | |
parent | 0fc731ad0f750e944513b77abfa0a8938667a31c (diff) | |
download | golem-6d375a705510f3e7a92f300f2534b5d682f2a564.tar.gz |
slp statement
-rw-r--r-- | samples/move.golem | 9 | ||||
-rw-r--r-- | src/main.c | 14 |
2 files changed, 23 insertions, 0 deletions
diff --git a/samples/move.golem b/samples/move.golem new file mode 100644 index 0000000..2efbe80 --- /dev/null +++ b/samples/move.golem @@ -0,0 +1,9 @@ +define input = 0xbffe; +define screen = 0xbfff; + +main() + loop { + slp; + update(); + draw(); + } @@ -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"); |