summaryrefslogtreecommitdiffstats
path: root/src/symbol-table.c
diff options
context:
space:
mode:
authorkugwa <kugwa2000@gmail.com>2015-12-30 18:15:58 +0800
committerkugwa <kugwa2000@gmail.com>2015-12-30 18:15:58 +0800
commitb99d125d8c69eded44c15c883bd0a6e8d4cc2c77 (patch)
tree65891b529bd9916a0279d368fba4d573e26609c8 /src/symbol-table.c
parentfb439f1b706f21e94bdfe2195af9d0f3c9bc4246 (diff)
downloadcompiler2015-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.c11
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)
{