equal
deleted
inserted
replaced
99 |
99 |
100 |
100 |
101 (* print (ast) translations *) |
101 (* print (ast) translations *) |
102 |
102 |
103 fun lookup_tr' tab c = map fst (Symtab.lookup_multi (tab, c)); |
103 fun lookup_tr' tab c = map fst (Symtab.lookup_multi (tab, c)); |
104 fun extend_tr'tab tab trfuns = Library.foldr Symtab.update_multi (map mk_trfun trfuns, tab); |
104 fun extend_tr'tab tab trfuns = foldr Symtab.update_multi tab (map mk_trfun trfuns); |
105 fun merge_tr'tabs tab1 tab2 = Symtab.merge_multi' eq_trfuns (tab1, tab2); |
105 fun merge_tr'tabs tab1 tab2 = Symtab.merge_multi' eq_trfuns (tab1, tab2); |
106 |
106 |
107 |
107 |
108 |
108 |
109 (** tables of token translation functions **) |
109 (** tables of token translation functions **) |
152 |
152 |
153 |
153 |
154 (* empty, extend, merge ruletabs *) |
154 (* empty, extend, merge ruletabs *) |
155 |
155 |
156 fun extend_ruletab tab rules = |
156 fun extend_ruletab tab rules = |
157 Library.foldr Symtab.update_multi (map (fn r => (Ast.head_of_rule r, r)) rules, tab); |
157 foldr Symtab.update_multi tab (map (fn r => (Ast.head_of_rule r, r)) rules); |
158 |
158 |
159 fun merge_ruletabs tab1 tab2 = Symtab.merge_multi' (op =) (tab1, tab2); |
159 fun merge_ruletabs tab1 tab2 = Symtab.merge_multi' (op =) (tab1, tab2); |
160 |
160 |
161 |
161 |
162 |
162 |