ag: refactor fun
[uebersetzerbau-ss10.git] / ag / symtable.c
index 8c175e5e0421d1e15cd31e1c81f50fe560dc4402..850c1b08388b9252a5dac9f54ee674c0f256bf11 100755 (executable)
@@ -5,32 +5,29 @@
 
 #define DD
 
-struct symbol *new_tab(void)
+struct symbol *tab_new(void)
 {
        return SYMNULL;
 }
 
-struct symbol *clone_tab(struct symbol *tab)
+struct symbol *tab_clone(struct symbol *tab)
 {
-       struct symbol *elm;
-       struct symbol *new_tabx;
+       struct symbol *elm = tab;
+       struct symbol *ntab = tab_new();
 #ifdef DD
-       printf("clone_tab: tab(%08X)\n", tab);
+       printf("tab_clone: tab(%08X)\n", tab);
 #endif
 
-       elm = tab;
-       new_tabx = new_tab();
        while(elm != SYMNULL) {
-               new_tabx = tab_add_symbol(new_tabx, elm->ident, elm->type, 0);
+               ntab = tab_add_symbol(ntab, elm->ident, elm->type, 0);
                elm = elm->next;
        }
-
-       return new_tabx;
+       return ntab;
 }
 
 struct symbol *tab_add_symbol(struct symbol *tab, char *ident, short type, short check)
 {
-       struct symbol *elm;
+       struct symbol *elm = tab;
        struct symbol *new_elm;
 #ifdef DD
        printf("tab_add_symbol: tab(%08X), ident(%s), type(%i), check(%i)\n", tab, ident, type, check);
@@ -54,7 +51,6 @@ struct symbol *tab_add_symbol(struct symbol *tab, char *ident, short type, short
                return new_elm;
        }
 
-       elm = tab;
        while(elm->next != SYMNULL) {
                elm = elm->next;
        }
@@ -84,17 +80,17 @@ struct symbol *tab_lookup(struct symbol *tab, char *ident, short type)
 struct symbol *tab_merge(struct symbol *tab, struct symbol *to_add, short check)
 {
        struct symbol *elm = to_add;
-       struct symbol *new_tab = clone_tab(tab);
+       struct symbol *ntab = tab_clone(tab);
 #ifdef DD
-       printf("tab_merge: tab(%08X), to_add(%08X), check(%i), new_tab(%08X)\n", tab, to_add, check, new_tab);
+       printf("tab_merge: tab(%08X), to_add(%08X), check(%i), ntab(%08X)\n", tab, to_add, check, ntab);
 #endif
        
        while(elm != SYMNULL) {
-               new_tab = tab_add_symbol(new_tab, elm->ident, elm->type, check);
+               ntab = tab_add_symbol(ntab, elm->ident, elm->type, check);
                elm = elm->next;
        }
 
-       return new_tab;
+       return ntab;
 }
 
 struct symbol *tab_remove_symbol(struct symbol *tab, char *ident, short type)
@@ -134,6 +130,8 @@ void check(struct symbol *tab, char *ident, short type)
                }
        }
 
+       /* keine passende variable gefunden?
+        * => vllt gibt es ja ein passenden feldnamen */
        elm = tab_lookup(tab, ident, S_FIELD);
        if(elm == SYMNULL) {
                fprintf(stderr, "Unbekannter Identifier: \"%s\"\n", ident);