entries are working but not freeing memory so potential for leaks

This commit is contained in:
Partho Bhattacharya
2025-02-28 18:16:44 -05:00
parent 2695334db9
commit 63212a3d63
4 changed files with 18 additions and 14 deletions

Binary file not shown.

View File

@ -10,8 +10,8 @@
extern char* yytext;
extern int yychar;
SymbolTable * st;
char* cur_value;
char* cur_type;
//char* cur_value;
//char* cur_type;
int token_tracker;
extern int line_number;
extern int column_number;
@ -120,8 +120,8 @@ idlist:
;
sblock:
L_BRACE {st = CreateScope(st,1,1);} statement_list {st = getParent(st);} R_BRACE
| L_BRACE {st = CreateScope(st,1,1);} dblock statement_list {st = getParent(st);} R_BRACE
L_BRACE {st = CreateScope(st,2,2);} statement_list {st = getParent(st);} R_BRACE
| L_BRACE {st = CreateScope(st,2,2);} dblock statement_list {st = getParent(st);} R_BRACE
;
dblock:
@ -143,22 +143,24 @@ declaration_list:
declaration:
ID COLON ID {
printf("declaration rule encountered");
CreateEntry(st,strdup($1),strdup($3));
// printf("declaration rule encountered");
// if(cur_value != NULL){
// char* delete1 = cur_value;
printf("delete1 var assigned to cur_value");
// printf("delete1 var assigned to cur_value");
// free(delete1);
printf("delete1 var freed");
// printf("delete1 var freed");
// }
// if(cur_type != NULL){
// char* delete2 = cur_type;
// free(delete2);}
// int len = strlen($1);
printf("length determined");
// printf("length determined");
// cur_value = malloc(len + 1);
printf("space allocated");
// printf("space allocated");
// strcpy(cur_value, $1);
printf("string copied over");
// printf("string copied over");
// len = strlen($3);
// cur_type = malloc(len + 1);
@ -255,9 +257,9 @@ void yyerror(const char *err) {
}
int main() {
char *str = strdup("taco");
cur_value = NULL;
cur_type = NULL;
//char *str = strdup("taco");
//cur_value = NULL;
//cur_type = NULL;
token_tracker = 1;
st=CreateScope(NULL,1,1);

View File

@ -12,6 +12,8 @@
#ifndef DEBUG
#define DEBUG 0
#endif
%}
STARCOM [^\*]|\*+[^\)\*]+
@ -79,7 +81,7 @@ SCHAR \\n|\\t|\\\"|[^\"\n\\]
"false" {if(DEBUG) {printf( "C_FALSE: %s (%d)\n", yytext, C_FALSE);} else {return C_FALSE;}}
"null" {if(DEBUG) {printf( "C_NULL: %s (%d)\n", yytext, C_NULL);} else {return C_NULL;}}
{ID} {if(DEBUG) {printf( "ID: %s (%d)\n", yytext, ID);} else {return ID;}}
{ID} {if(DEBUG) {printf( "ID: %s (%d)\n", yytext, ID);} else {yylval.words = strdup(yytext); return ID;}}
\n {line_number++; column_number = 1;}
\t {column_number++;}

BIN
parser

Binary file not shown.