From b74b9a8ef45137611e53e779d932d9d222e8eb35 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Thu, 19 Aug 2021 18:49:25 +0000 Subject: added symbol struct and memory management --- miniany/cc.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'miniany/cc.c') diff --git a/miniany/cc.c b/miniany/cc.c index cf4f880..d77def0 100644 --- a/miniany/cc.c +++ b/miniany/cc.c @@ -278,25 +278,39 @@ void parseExpression( ) } } -/* struct Symbol { char *name; + struct Symbol *next; }; struct Symbol *symbol; -*/ -void newSymbol( char *s ) +struct Symbol *createSymbol( char *s ) { + struct Symbol *sym; + sym = (struct Symbol *)malloc( sizeof ( struct Symbol ) ); + sym->name = strdup( s ); + sym->next = NULL; + + return sym; +} + +void freeSymbol( struct Symbol *sym ) +{ + free( sym->name ); + free( (char *)sym ); } void parseDeclaration( ) { + struct Symbol *sym; + expect( S_INT, "int" ); expect( S_IDENT, "identifier" ); putstring( "Adding glob: " ); putstring( ident ); putnl( ); - newSymbol( ident ); + sym = createSymbol( ident ); + freeSymbol( sym ); expect( S_SEMICOLON, ";" ); } @@ -325,7 +339,7 @@ int main( int argc, char **argv ) row = 1; pushback = 0; DEBUG_SCANNER = 1; - /* symbol = NULL; */ + symbol = NULL; ident = "12345678901234567890"; token = getToken( ); -- cgit v1.2.3-54-g00ecf