summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTing-Wei Lan <lantw44@gmail.com>2015-10-21 15:55:24 +0800
committerTing-Wei Lan <lantw44@gmail.com>2015-10-21 15:55:24 +0800
commitc96e3923d339fa7095c0d28da01009f95ae86340 (patch)
tree06ec8e4ed87745f4c82e3451ffba350ba8353d2d
parent40b7d032402279a5758415a9c98afa4892d76ebf (diff)
downloadcompiler2015-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.l8
-rw-r--r--symbol-table.c5
-rw-r--r--symbol-table.h2
3 files changed, 7 insertions, 8 deletions
diff --git a/lexer.l b/lexer.l
index ee934bb..b7c3585 100644
--- a/lexer.l
+++ b/lexer.l
@@ -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);