#pragma once typedef struct Symbol { char *name; struct Symbol *upper; } Symbol; typedef struct Table { struct Table *previous; } Table; typedef struct Scope { int level; } Scope; void scope_enter( Scope *scope ); void scope_exit( Scope *scope ); Symbol scope_install_symbol( Scope *scope, const char *name ); Symbol scope_lookup_symbol( Scope *scope, const char *name ); Symbol scope_install_label( Scope *scope, const char *name ); Symbol scope_lookup_label( Scope *scope, const char *name ); Symbol scope_install_label( Scope *scope, const char *name ); Symbol scope_lookup_label( Scope *scope, const char *name ); Symbol scope_install_constant( Scope *scope, const char *name ); Symbol scope_lookup_constant( Scope *scope, const char *name ); Symbol scope_install_temporary( Scope *scope, const char *name ); Symbol scope_lookip_temporary( Scope *scope, const char *name );