diff options
author | Ting-Wei Lan <lantw44@gmail.com> | 2015-10-21 15:55:24 +0800 |
---|---|---|
committer | Ting-Wei Lan <lantw44@gmail.com> | 2015-10-21 15:55:24 +0800 |
commit | c96e3923d339fa7095c0d28da01009f95ae86340 (patch) | |
tree | 06ec8e4ed87745f4c82e3451ffba350ba8353d2d | |
parent | 40b7d032402279a5758415a9c98afa4892d76ebf (diff) | |
download | compiler2015-c96e3923d339fa7095c0d28da01009f95ae86340.tar compiler2015-c96e3923d339fa7095c0d28da01009f95ae86340.tar.gz compiler2015-c96e3923d339fa7095c0d28da01009f95ae86340.tar.bz2 compiler2015-c96e3923d339fa7095c0d28da01009f95ae86340.tar.lz compiler2015-c96e3923d339fa7095c0d28da01009f95ae86340.tar.xz compiler2015-c96e3923d339fa7095c0d28da01009f95ae86340.tar.zst compiler2015-c96e3923d339fa7095c0d28da01009f95ae86340.zip |
Don't export linenumber global variable
-rw-r--r-- | lexer.l | 8 | ||||
-rw-r--r-- | symbol-table.c | 5 | ||||
-rw-r--r-- | symbol-table.h | 2 |
3 files changed, 7 insertions, 8 deletions
@@ -5,7 +5,7 @@ #define SIZE_OF_ARR(x) (sizeof(x)/sizeof(x[0])) -int linenumber; +static int line_number; /* You need to define for all tokens in C--, here are some examples */ typedef enum CcmmcToken_enum { @@ -99,7 +99,7 @@ ERROR . symtab * ptr; ptr = lookup(yytext); if (ptr == NULL) - insertID(yytext); + insertID(yytext, line_number); else ptr->counter++; } @@ -124,7 +124,7 @@ ERROR . {OP_NE} {} {OP_EQ} {} -{NEWLINE} linenumber++; +{NEWLINE} line_number++; {DL_LPAREN} {} {DL_RPAREN} {} @@ -138,7 +138,7 @@ ERROR . {ERROR} { fprintf(stderr, "%d: error: undefined character `%s'\n", - linenumber, yytext); + line_number, yytext); } diff --git a/symbol-table.c b/symbol-table.c index 665c39c..68597f7 100644 --- a/symbol-table.c +++ b/symbol-table.c @@ -8,7 +8,6 @@ #define TABLE_SIZE 256 symtab *hash_table[TABLE_SIZE]; -extern int linenumber; int HASH(char *str) { int idx = 0; @@ -38,7 +37,7 @@ symtab *lookup(char *name) { } -void insertID(char *name) { +void insertID(char *name, int line_number) { int hash_key; symtab *ptr; symtab *symptr = malloc(sizeof(symtab)); @@ -59,7 +58,7 @@ void insertID(char *name) { } strcpy(symptr->lexeme, name); - symptr->line = linenumber; + symptr->line = line_number; symptr->counter = 1; } diff --git a/symbol-table.h b/symbol-table.h index 774b46c..aaeaac0 100644 --- a/symbol-table.h +++ b/symbol-table.h @@ -8,7 +8,7 @@ struct symtab { typedef struct symtab symtab; symtab* lookup(char *name); -void insertID(char *name); +void insertID(char *name, int line_number); void printSymTab(void); symtab **fillTab(int *len); |