diff --git a/grammar.y b/grammar.y index 0acc0c9..d930f2a 100644 --- a/grammar.y +++ b/grammar.y @@ -4,6 +4,7 @@ // Prologue %{ #include + #include "symbol_table.c" %} %token ID 101 @@ -53,7 +54,7 @@ %token RELEASE 614 %token COMMENT 700 %% -B : '{' E '}'; //Braced Expressions can have braces removed to get regular expressions +B : '{'{CreateScope(cur,line,column)} E '}'; //Braced Expressions can have braces removed to get regular expressions D : '[' l ']'; //Declaration Lists Brackets can be taken out to get a list of Declarations E : Maybe_D U; //An expression can start with an optional D followed by an undeclared segment Maybe_D : D diff --git a/runner.c b/runner.c index 435cd24..a2be6b6 100644 --- a/runner.c +++ b/runner.c @@ -81,7 +81,8 @@ int run(FILE *alpha) { } if(token == 1999){ printf("On line number %d and column number %d we have an invalid character:%s\n",line_number,column_number,yytext); - return -1;} + //return -1; +} column_number += yyleng; } diff --git a/symbol_table.c b/symbol_table.c index e87ebd8..2a7729f 100644 --- a/symbol_table.c +++ b/symbol_table.c @@ -101,6 +101,37 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr){ } } +SymbolTable * getParent(SymbolTable* st){ + return st->ParentScope; + } + +ListOfTable * getChildren(SymbolTable* st){ + return st->Children_Scope; + } +SymbolTable * getFirstChild(ListOfTable * lt){ + return lt->table; + } +ListOfTable * getRestOfChildren(ListOfTable * lt){ + return lt->next; + } +TableNode * getFirstEntry(SymbolTable * st){ + return st->entries; + } +TableNode * getNextEntry(TableNode * tn){ + return tn->next; + } +char * getType(TableNode * tn){ + return tn->theType; + } +char * getName(TableNode * tn){ + return tn->theName; + } +int getLine(SymbolTable * st){ + return st->line; + } +int getColumn(SymbolTable *st){ + return st->column; + } //uncomment the below main function along with the headers above for a simple standalone test of table and entry creation /* diff --git a/symbol_table.h b/symbol_table.h index 57ae1bc..0d30f59 100644 --- a/symbol_table.h +++ b/symbol_table.h @@ -17,11 +17,11 @@ typedef struct TableNode{ }TableNode; typedef struct SymbolTable{ - TableNode* entries; - struct SymbolTable* Parent_Scope; - struct ListOfTable* Children_Scope; - int Line_Number; - int Column_Number; + TableNode* entries; + struct SymbolTable* Parent_Scope; + struct ListOfTable* Children_Scope; + int Line_Number; + int Column_Number; }SymbolTable; diff --git a/test_keywords.st b/test_keywords.st new file mode 100644 index 0000000..e69de29 diff --git a/test_operators.st b/test_operators.st new file mode 100644 index 0000000..e69de29 diff --git a/test_real_alpha_2.st b/test_real_alpha_2.st new file mode 100644 index 0000000..e69de29