From ed4f8e0e2e20cb16f40844895f79b69da96caf35 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 13 Jun 2024 17:46:17 -0400 Subject: vxrefbas: WIP. --- vxrefbas.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'vxrefbas.c') diff --git a/vxrefbas.c b/vxrefbas.c index 21e8067..acc830c 100644 --- a/vxrefbas.c +++ b/vxrefbas.c @@ -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; -- cgit v1.2.3