diff options
author | kugwa <kugwa2000@gmail.com> | 2015-12-30 18:15:58 +0800 |
---|---|---|
committer | kugwa <kugwa2000@gmail.com> | 2015-12-30 18:15:58 +0800 |
commit | b99d125d8c69eded44c15c883bd0a6e8d4cc2c77 (patch) | |
tree | 65891b529bd9916a0279d368fba4d573e26609c8 /src/symbol-table.c | |
parent | fb439f1b706f21e94bdfe2195af9d0f3c9bc4246 (diff) | |
download | compiler2015-b99d125d8c69eded44c15c883bd0a6e8d4cc2c77.tar.gz compiler2015-b99d125d8c69eded44c15c883bd0a6e8d4cc2c77.tar.zst compiler2015-b99d125d8c69eded44c15c883bd0a6e8d4cc2c77.zip |
Complete the NORMAL_ID case in generate_global_variable()
Diffstat (limited to 'src/symbol-table.c')
-rw-r--r-- | src/symbol-table.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/symbol-table.c b/src/symbol-table.c index 6d9c466..09c84a3 100644 --- a/src/symbol-table.c +++ b/src/symbol-table.c @@ -23,6 +23,7 @@ void ccmmc_symbol_table_init(CcmmcSymbolTable *table) { table->all = NULL; table->all_last = NULL; + table->this_scope = NULL; table->current = NULL; } @@ -45,6 +46,16 @@ void ccmmc_symbol_table_open_scope(CcmmcSymbolTable *table) table->current = scope; } +// used by code-generation phase +void ccmmc_symbol_table_reopen_scope(CcmmcSymbolTable *table) +{ + if (table->this_scope == NULL) + table->this_scope = table->all; + else + table->this_scope = table->this_scope->all_next; + table->current = table->this_scope; +} + // pop a scope from the stack void ccmmc_symbol_table_close_scope(CcmmcSymbolTable *table) { |