summaryrefslogtreecommitdiff
path: root/src/core/token.c
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-08-25 18:48:28 +0000
committerPaul Buetow <paul@buetow.org>2008-08-25 18:48:28 +0000
commitec9899c0399f42473d311c7d0a46769d3d933c06 (patch)
tree8396b366b5e1b665f60f5502d484985b0950a94e /src/core/token.c
parentcf9029ee902eda028f3efcb77e8c2aed25205b94 (diff)
bugs fixed, initial array
Diffstat (limited to 'src/core/token.c')
-rw-r--r--src/core/token.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/core/token.c b/src/core/token.c
index 437ed6c..1a2aec9 100644
--- a/src/core/token.c
+++ b/src/core/token.c
@@ -57,11 +57,14 @@ get_tt(char *c_token) {
CHECK("proc") TT_PROC;
CHECK("func") TT_FUNC;
CHECK("my") TT_MY;
- CHECK("not") TT_NOT;
+ CHECK("arr") TT_ARR;
+ CHECK("!") TT_NOT;
CHECK("!=") TT_NEQ;
CHECK("=~") TT_RE;
CHECK("(") TT_PARANT_L;
CHECK(")") TT_PARANT_R;
+ CHECK("[") TT_PARANT_AL;
+ CHECK("]") TT_PARANT_AR;
CHECK("*") TT_MULT;
CHECK("+") TT_ADD;
CHECK("++") TT_INCR;
@@ -102,6 +105,7 @@ tt_get_name(TokenType tt_cur) {
CASE(TT_IDENT, "TT_IDENT")
CASE(TT_DOUBLE,"TT_DOUBLE")
CASE(TT_STRING,"TT_STRING")
+ CASE(TT_ARRAY,"TT_ARRAY")
CASE(TT_INTEGER,"TT_INTEGER")
CASE(TT_BOOL,"TT_BOOL")
CASE(END_ASSIGNABLES, "END_ASSIGNABLES")
@@ -119,6 +123,7 @@ tt_get_name(TokenType tt_cur) {
CASE(TT_PROC,"TT_PROC")
CASE(TT_FUNC,"TT_FUNC")
CASE(TT_MY,"TT_MY")
+ CASE(TT_ARR,"TT_ARR")
CASE(TT_WHILE,"TT_WHILE")
CASE(TT_UNTIL,"TT_UNTIL")
CASE(TT_NEXT,"TT_NEXT")
@@ -131,6 +136,8 @@ tt_get_name(TokenType tt_cur) {
CASE(START_PARANTS, "START_PARANTS")
CASE(TT_PARANT_CL,"TT_PARANT_CL")
CASE(TT_PARANT_CR,"TT_PARANT_CR")
+ CASE(TT_PARANT_AL,"TT_PARANT_AL")
+ CASE(TT_PARANT_AR,"TT_PARANT_AR")
CASE(TT_PARANT_L,"TT_PARANT_L")
CASE(TT_PARANT_R,"TT_PARANT_R")
CASE(END_PARANTS, "END_PARANTS")
@@ -186,6 +193,7 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_fi
p_token->i_line_nr = i_line_nr;
p_token->i_pos_nr = i_pos_nr;
p_token->c_filename = c_filename;
+ p_token->p_array = NULL;
switch (tt_cur) {
case TT_INTEGER:
@@ -196,6 +204,11 @@ token_new(char *c_val, TokenType tt_cur, int i_line_nr, int i_pos_nr, char *c_fi
p_token->d_val = atof(c_val);
break;
}
+ case TT_ARRAY:
+ {
+ p_token->p_array = array_new();
+ break;
+ }
NO_DEFAULT;
}
@@ -231,6 +244,15 @@ token_new_string(char *c_val) {
return (p_token);
}
+Token*
+token_new_array(int i_size) {
+ Token *p_token = token_new_dummy();
+ token_set_tt(p_token, TT_ARRAY);
+ array_resize(p_token->p_array, i_size);
+
+ return (p_token);
+}
+
Token*
token_new_(char *c_val, TokenType tt_cur, char *c_filename) {
@@ -322,6 +344,9 @@ token_delete(Token *p_token) {
if (p_token->c_val)
free(p_token->c_val);
+ if (p_token->p_array)
+ array_delete(p_token->p_array);
+
free(p_token);
}
#ifdef DEBUG_TOKEN_REFCOUNT