summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-03-16 05:00:39 +0100
committerkdx <kikoodx@paranoici.org>2023-03-16 05:00:39 +0100
commit06e220903dc731957205d733b9cb71f908e285a6 (patch)
treec65b40069149d99ac71d07df6c04c72aaaba5401
parentaa926bd6a868320a767d7428fffeff1b0f087dee (diff)
downloadgolem-06e220903dc731957205d733b9cb71f908e285a6.tar.gz
identify return
-rw-r--r--group.h1
-rw-r--r--identify.c11
-rw-r--r--identify.h1
-rw-r--r--main.c1
4 files changed, 14 insertions, 0 deletions
diff --git a/group.h b/group.h
index 0961a8a..a2cf087 100644
--- a/group.h
+++ b/group.h
@@ -9,6 +9,7 @@ enum {
GROUP_ASSIGN = '=',
GROUP_LET = 'l',
GROUP_DEREF = 'd',
+ GROUP_RETURN = 'r',
};
struct Token;
diff --git a/identify.c b/identify.c
index 06a864a..84700df 100644
--- a/identify.c
+++ b/identify.c
@@ -50,6 +50,17 @@ identify_let(Token **list)
}
int
+identify_return(Token **list)
+{
+ if (token_len(*list) != 2)
+ return 0;
+ if ((*list)->type != TOK_KW_RETURN)
+ return 1;
+ token_delete(list, *list);
+ return 1;
+}
+
+int
identify_assign(Token **list)
{
if (token_len(*list) != 3)
diff --git a/identify.h b/identify.h
index d1e1b04..e4ca175 100644
--- a/identify.h
+++ b/identify.h
@@ -4,4 +4,5 @@
void identify(Token *list, int (*fun)(Token**), unsigned int type, int recurse);
int identify_function(Token **list);
int identify_let(Token **list);
+int identify_return(Token **list);
int identify_assign(Token **list);
diff --git a/main.c b/main.c
index 19aca62..ef2d3b7 100644
--- a/main.c
+++ b/main.c
@@ -41,6 +41,7 @@ main(int argc, char **argv)
group_deref(&tokens);
identify(tokens, identify_function, GROUP_FUNCTION, 0);
identify(tokens, identify_let, GROUP_LET, 1);
+ identify(tokens, identify_return, GROUP_RETURN, 1);
identify(tokens, identify_assign, GROUP_ASSIGN, 1);
token_print(tokens, 1, 0);
token_destroy(tokens);