diff options
Diffstat (limited to 'vxrefbas.c')
-rw-r--r-- | vxrefbas.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -7,10 +7,8 @@ #include "bas.h" -/* FIXME: lists don't work correctly yet, DIM/READ/INPUT. - Example: 10 DIM A$(10):? B$ ...it thinks B$ was also DIMed. */ - int target_var, lastline, assign, is_for, is_next, is_dim, is_read, is_input; +int in_dim, in_read, in_input; int refcounts[128]; void print_help(void) { @@ -48,16 +46,23 @@ CALLBACK(new_command) { case CMD_NEXT: is_next = 1; break; case CMD_DIM: - is_dim = 1; break; + in_dim = 1; break; case CMD_READ: - is_read= 1; break; + in_read= 1; break; case CMD_INPUT: - is_input= 1; break; + in_input= 1; break; default: break; } } +CALLBACK(end_stmt) { + in_dim = in_read = in_input = 0; +} + CALLBACK(handle_var) { + if(in_dim) is_dim = 1; + if(in_input) is_input = 1; + if(in_read) is_read = 1; if(lastline == lineno) return; if((tok & 0x7f) == target_var) { refcounts[target_var]++; @@ -82,6 +87,7 @@ int main(int argc, char **argv) { on_start_line = new_line; on_end_line = end_line; on_cmd_token = new_command; + on_end_stmt = end_stmt; target_var = 0; vnpos = vnstart; |