From 4e8ae7af8a67dd4f34b2d1e891f6062fde9a1536 Mon Sep 17 00:00:00 2001 From: Wang Renxin Date: Fri, 10 Feb 2017 17:31:31 +0800 Subject: [PATCH] *fixed a parameter lookup bug when calling a sub routine. --- HISTORY | 3 +++ core/my_basic.c | 32 +++++++++++++++++++++++++------- output/my_basic.exe | Bin 380416 -> 380416 bytes 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/HISTORY b/HISTORY index d7e3281..7e25dc4 100755 --- a/HISTORY +++ b/HISTORY @@ -1,3 +1,6 @@ +Feb. 10 2017 +Fixed a parameter lookup bug when calling a sub routine + Feb. 8 2017 Fixed a processing bug with the ELSEIF statement diff --git a/core/my_basic.c b/core/my_basic.c index 5756e79..8c1fc09 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -747,6 +747,10 @@ typedef enum _symbol_state_e { _SS_OPERATOR } _symbol_state_e; +#define _ROUTINE_STATE_NONE 0 +#define _ROUTINE_STATE_DEF 1 +#define _ROUTINE_STATE_PARAMS 2 + typedef struct _parsing_context_t { _ls_node_t* imported; char current_char; @@ -1737,6 +1741,7 @@ static bool_t _is_valid_class_accessor_following_routine(mb_interpreter_t* s, _v static void _init_routine(mb_interpreter_t* s, _routine_t* routine, char* n, mb_routine_func_t f); static int _begin_routine(mb_interpreter_t* s); static bool_t _end_routine(mb_interpreter_t* s); +static void _begin_routine_definition(mb_interpreter_t* s); static void _begin_routine_parameter_list(mb_interpreter_t* s); static void _end_routine_parameter_list(mb_interpreter_t* s); static _object_t* _duplicate_parameter(void* data, void* extra, _running_context_t* running); @@ -5067,7 +5072,7 @@ static int _create_symbol(mb_interpreter_t* s, _ls_node_t* l, char* sym, _object break; case _DT_VAR: - if(context->routine_params_state) + if(context->routine_params_state == _ROUTINE_STATE_PARAMS) glbsyminscope = _ht_find(running->var_dict, sym); else glbsyminscope = _search_identifier_in_scope_chain(s, 0, sym, _PATHING_NONE, 0, 0); @@ -5419,10 +5424,11 @@ _end_import: glbsyminscope = _find_func(s, sym, &mod); if(glbsyminscope) { if(context->last_symbol && context->last_symbol->type == _DT_ROUTINE) { - if(_sl == 1 && sym[0] == '(') - _begin_routine_parameter_list(s); - } - if(context->routine_params_state) { + if(_sl == 1 && sym[0] == '(') { + if(context->routine_params_state == _ROUTINE_STATE_DEF) + _begin_routine_parameter_list(s); + } + } else if(context->routine_params_state == _ROUTINE_STATE_PARAMS) { if(_sl == 1 && sym[0] == ')') _end_routine_parameter_list(s); } @@ -5435,6 +5441,8 @@ _end_import: } else { ptr = (intptr_t)glbsyminscope->data; memcpy(*value, &ptr, sizeof(intptr_t)); + if(ptr == (intptr_t)_core_def) + _begin_routine_definition(s); } #else /* MB_ENABLE_MODULE */ ptr = (intptr_t)glbsyminscope->data; @@ -8076,6 +8084,16 @@ static bool_t _end_routine(mb_interpreter_t* s) { return true; } +/* Begin parsing the definition of a routine */ +static void _begin_routine_definition(mb_interpreter_t* s) { + _parsing_context_t* context = 0; + + mb_assert(s); + + context = s->parsing_context; + context->routine_params_state = _ROUTINE_STATE_DEF; +} + /* Begin parsing the parameter list of a routine */ static void _begin_routine_parameter_list(mb_interpreter_t* s) { _parsing_context_t* context = 0; @@ -8083,7 +8101,7 @@ static void _begin_routine_parameter_list(mb_interpreter_t* s) { mb_assert(s); context = s->parsing_context; - context->routine_params_state++; + context->routine_params_state = _ROUTINE_STATE_PARAMS; } /* End parsing the parameter list of a routine */ @@ -8093,7 +8111,7 @@ static void _end_routine_parameter_list(mb_interpreter_t* s) { mb_assert(s); context = s->parsing_context; - context->routine_params_state--; + context->routine_params_state = _ROUTINE_STATE_NONE; } /* Duplicate a parameter from a parameter list to variable dictionary */ diff --git a/output/my_basic.exe b/output/my_basic.exe index f4bad76ea524a823dcb8ffb0703fb7d8838e65ea..2857147aefd7eeb4195028b2cef5f54864fa14c6 100755 GIT binary patch delta 18343 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 C%Z+FN delta 18292 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 HxNG}ARrN$h