diff options
| author | Paul Buetow <paul@buetow.org> | 2008-11-04 23:24:42 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-11-04 23:24:42 +0000 |
| commit | d2713783c48ca9fbdd6f4ea3aab03fe856fdd52a (patch) | |
| tree | 3d78a409ab9949319285d26403dd6b9d8bf2067f | |
| parent | f0b2170a9c769425082604c9e9252ba422902f3e (diff) | |
big step forward for arrays in fype.
| -rw-r--r-- | docs/help.txt | 2 | ||||
| -rw-r--r-- | docs/stats.txt | 2 | ||||
| -rw-r--r-- | docs/version.txt | 2 | ||||
| -rw-r--r-- | src/build.h | 2 | ||||
| -rw-r--r-- | src/core/convert.c | 30 | ||||
| -rw-r--r-- | src/core/function.c | 94 | ||||
| -rw-r--r-- | src/core/interpret.c | 1 | ||||
| -rw-r--r-- | src/core/token.c | 3 | ||||
| -rw-r--r-- | src/data/array.c | 11 | ||||
| -rw-r--r-- | src/data/array.h | 1 | ||||
| -rw-r--r-- | tags | 3 |
11 files changed, 84 insertions, 67 deletions
diff --git a/docs/help.txt b/docs/help.txt index 21d596e..1327bde 100644 --- a/docs/help.txt +++ b/docs/help.txt @@ -1,4 +1,4 @@ -Fype v0.1-devel Build 9338 +Fype v0.1-devel Build 9347 (c) Paul C. Buetow (2005 - 2008) <fype@dev.buetow.org> -e Executes given code string (see synopses) -h Prints this help diff --git a/docs/stats.txt b/docs/stats.txt index ca8db03..2a52d18 100644 --- a/docs/stats.txt +++ b/docs/stats.txt @@ -1,4 +1,4 @@ ===> Num of C source files : 44 -===> Num of C source lines : 7950 +===> Num of C source lines : 7965 ===> Num of Fype source examples : 14 ===> Num of Fype source lines : 362 diff --git a/docs/version.txt b/docs/version.txt index 520eab4..e3059ba 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -Fype v0.1-devel Build 9338 +Fype v0.1-devel Build 9347 diff --git a/src/build.h b/src/build.h index 4249787..8b24407 100644 --- a/src/build.h +++ b/src/build.h @@ -35,7 +35,7 @@ #ifndef BUILD_H #define BUILD_H -#define BUILDNR 9344 +#define BUILDNR 9347 #define OS_FREEBSD #endif diff --git a/src/core/convert.c b/src/core/convert.c index d156007..ee9ab9b 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -147,36 +147,6 @@ convert_to_string(Token *p_token) { void convert_to_array(Token *p_token) { ERROR("not yet implemented"); - switch (token_get_tt(p_token)) { - case TT_INTEGER: - { - token_set_tt(p_token, TT_STRING); - char c_tmp[1024]; - sprintf(c_tmp, "%d", token_get_ival(p_token)); - int i_len = strlen(c_tmp); - p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); - strcpy(p_token->c_val, c_tmp); - p_token->c_val[i_len] = 0; - } - break; - case TT_DOUBLE: - { - token_set_tt(p_token, TT_STRING); - char c_tmp[1024]; - sprintf(c_tmp, "%f", token_get_dval(p_token)); - int i_len = strlen(c_tmp); - p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); - strcpy(p_token->c_val, c_tmp); - p_token->c_val[i_len] = 0; - } - case TT_STRING: - break; - case TT_ARRAY: - break; - default: - ERROR("Datatype conversion error"); - break; - } } void diff --git a/src/core/function.c b/src/core/function.c index fbdf53d..8d5dbf6 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -186,14 +186,10 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atoi(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_INTEGER); break; - /* - case TT_ARRAY: - token_set_ival(p_token_store, - atoi(token_get_val(p_token_next)) + - atoi(token_get_val(p_token_store))); - token_set_tt(p_token_store, TT_INTEGER); - break; - */ + case TT_ARRAY: + array_append(p_token_store->p_array, + p_token_next->p_array); + break; NO_DEFAULT; } break; @@ -215,6 +211,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atoi(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("TT_ARRAY - TT_ARRAY not yet implemented"); + break; NO_DEFAULT; } break; @@ -236,6 +235,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atoi(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("TT_ARRAY * TT_ARRAY not yet implemented"); + break; NO_DEFAULT; } break; @@ -257,6 +259,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atof(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_DOUBLE); break; + case TT_ARRAY: + ERROR("TT_ARRAY / TT_ARRAY not yet implemented"); + break; NO_DEFAULT; } break; @@ -278,6 +283,8 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, strcmp(token_get_val(p_token_next), token_get_val(p_token_store)) == 0); token_set_tt(p_token_store, TT_INTEGER); + case TT_ARRAY: + ERROR("TT_ARRAY eq TT_ARRAY not yet implemented"); break; NO_DEFAULT; } @@ -301,6 +308,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, token_get_val(p_token_store)) != 0); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -323,6 +333,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, token_get_val(p_token_store)) <= 0); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -345,6 +358,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, token_get_val(p_token_store)) >= 0); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -367,6 +383,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, token_get_val(p_token_store)) < 0); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -389,27 +408,8 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, token_get_val(p_token_store)) > 0); token_set_tt(p_token_store, TT_INTEGER); break; - NO_DEFAULT; - } - break; - case TT_AND: - switch (tt_highest) { - case TT_INTEGER: - token_set_ival(p_token_store, - (int) token_get_ival(p_token_next) & - token_get_ival(p_token_store)); - break; - case TT_DOUBLE: - token_set_ival(p_token_store, - (int) token_get_dval(p_token_next) & - (int) token_get_dval(p_token_store)); - token_set_tt(p_token_store, TT_INTEGER); - break; - case TT_STRING: - token_set_ival(p_token_store, - atoi(token_get_val(p_token_next)) & - atoi(token_get_val(p_token_store))); - token_set_tt(p_token_store, TT_INTEGER); + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); break; NO_DEFAULT; } @@ -433,6 +433,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atoi(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -455,6 +458,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atoi(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -477,6 +483,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atoi(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -499,6 +508,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op, atoi(token_get_val(p_token_store))); token_set_tt(p_token_store, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } break; @@ -617,6 +629,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, if (atoi(token_get_val(p_token)) == 0) _FUNCTION_ERROR("Assert failed", p_token); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } @@ -636,6 +651,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, convert_to_integer(p_token); token_set_ival(p_token, token_get_ival(p_token) - 1); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } @@ -684,6 +702,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, convert_to_integer(p_token); token_set_ival(p_token, token_get_ival(p_token) + 1); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } @@ -716,6 +737,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, token_set_ival(p_token, -atoi(token_get_val(p_token))); token_set_tt(p_token, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } @@ -739,6 +763,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, token_set_ival(p_token, !atoi(token_get_val(p_token))); token_set_tt(p_token, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } } @@ -759,6 +786,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, case TT_STRING: printf("%s", token_get_val(p_token)); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } } @@ -780,6 +810,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, break; case TT_STRING: printf("%s", token_get_val(p_token)); + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; break; } } @@ -827,6 +860,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, token_set_ival(p_token, !atoi(token_get_val(p_token))); token_set_tt(p_token, TT_INTEGER); break; + case TT_ARRAY: + ERROR("ARRAY bla yet implemented"); + break; NO_DEFAULT; } diff --git a/src/core/interpret.c b/src/core/interpret.c index 098111b..c6b66de 100644 --- a/src/core/interpret.c +++ b/src/core/interpret.c @@ -801,6 +801,7 @@ _term(Interpret *p_interpret) { case TT_INTEGER: case TT_DOUBLE: case TT_STRING: + case TT_ARRAY: stack_push(p_interpret->p_stack, p_interpret->p_token); _NEXT return (1); diff --git a/src/core/token.c b/src/core/token.c index 6a9d966..3a2e413 100644 --- a/src/core/token.c +++ b/src/core/token.c @@ -398,7 +398,8 @@ token_print_val(Token *p_token) { printf("(%s, %s)", tt_get_name(tt), token_get_val(p_token)); break; case TT_ARRAY: - printf("(%s, size:%d)", tt_get_name(tt), array_get_size(p_token->p_array)); + printf("(%s, size:%d)", tt_get_name(tt), + array_get_size(p_token->p_array)); break; default: ERROR("Ouups(%s)!", tt_get_name(tt)); diff --git a/src/data/array.c b/src/data/array.c index 8e3419a..9bd0101 100644 --- a/src/data/array.c +++ b/src/data/array.c @@ -56,14 +56,14 @@ array_new_size(int i_size) { } void -_array_new_copy_cb(void *p_array, void *p_void) { +_unshift_cb(void *p_array, void *p_void) { array_unshift(p_array, p_void); } Array* array_new_copy(Array *p_array) { Array *p_array_cpy = array_new_size(array_get_size(p_array)); - array_iterate2(p_array, _array_new_copy_cb, p_array_cpy); + array_iterate2(p_array, _unshift_cb, p_array_cpy); return (p_array_cpy); } @@ -239,6 +239,13 @@ array_push(Array *p_array, void *p_void) { } void +array_append(Array *p_array, Array *p_array_append) { + int i_size = array_get_size(p_array) + array_get_size(p_array_append); + array_resize(p_array, i_size); + array_iterate2(p_array_append, _unshift_cb, p_array); +} + +void array_iterate(Array *p_array, void (*func)(void *)) { if (!p_array) return; diff --git a/src/data/array.h b/src/data/array.h index 63d8cc9..a6648bf 100644 --- a/src/data/array.h +++ b/src/data/array.h @@ -74,6 +74,7 @@ _Bool array_defined(Array *p_array, int i_index); void array_print_int(Array *p_array); void array_splice(Array *p_array, int i_index, Array *p_array2); void array_push(Array *p_array, void *p_void); +void array_append(Array *p_array, Array *p_array_append); void array_unshift(Array *p_array, void *p_void); void array_iterate(Array *p_array, void (*func)(void *)); void array_iterate2(Array *p_array, void (*func)(void *, void *), @@ -6,7 +6,6 @@ _GARBAGE_ERROR ./src/core/garbage.c /^#define _GARBAGE_ERROR(m) \\$/ _Garbage ./src/core/garbage.c /^} _Garbage;$/ _INTERPRET_ERROR ./src/core/interpret.c /^#define _INTERPRET_ERROR(m,t) \\$/ _add_semicolon_to_list ./src/core/scanner.c /^_add_semicolon_to_list(Scanner *p_scanner) {$/ -_array_new_copy_cb ./src/data/array.c /^_array_new_copy_cb(void *p_array, void *p_void) {$/ _block ./src/core/interpret.c /^_block(Interpret *p_interpret) {$/ _block_get ./src/core/interpret.c /^_block_get(Interpret *p_interpret, List *p_list_bl/ _block_skip ./src/core/interpret.c /^_block_skip(Interpret *p_interpret) {$/ @@ -36,6 +35,7 @@ _term ./src/core/interpret.c /^_term(Interpret *p_interpret) {$/ _tree_print ./src/data/tree.c /^_tree_print(TreeNode *p_treenode, int i_indent) {$/ _tree_print_cb ./src/data/tree.c /^_tree_print_cb(void *p_void, void *p_indent) {$/ _tree_print_cb2 ./src/data/tree.c /^_tree_print_cb2(void *p_void, void *p_indent) {$/ +_unshift_cb ./src/data/array.c /^_unshift_cb(void *p_array, void *p_void) {$/ _var_assign ./src/core/interpret.c /^_var_assign(Interpret *p_interpret) {$/ _var_decl ./src/core/interpret.c /^_var_decl(Interpret *p_interpret) {$/ _var_list ./src/core/interpret.c /^_var_list(Interpret *p_interpret) {$/ @@ -48,6 +48,7 @@ argv_run ./src/argv.c /^argv_run(Fype *p_fype, int i_argc, char **pc_argv)/ argv_switch ./src/argv.c /^argv_switch(char c_arg, Tupel *p_tupel_argv, unsig/ argv_synopsis ./src/argv.c /^argv_synopsis(Tupel *p_tupel_argv) {$/ argv_tupel_delete ./src/argv.c /^argv_tupel_delete(Tupel *p_tupel_argv) {$/ +array_append ./src/data/array.c /^array_append(Array *p_array, Array *p_array_append/ array_defined ./src/data/array.c /^array_defined(Array *p_array, int i_index) {$/ array_delete ./src/data/array.c /^array_delete(Array *p_array) {$/ array_delete_iterate ./src/data/array.c /^array_delete_iterate(Array *p_array, void (*func)(/ |
