168 |
168 |
169 val sortT = Type ("sort", []); |
169 val sortT = Type ("sort", []); |
170 val classesT = Type ("classes", []); |
170 val classesT = Type ("classes", []); |
171 val typesT = Type ("types", []); |
171 val typesT = Type ("types", []); |
172 |
172 |
173 val type_ext = |
173 val type_ext = syn_ext |
174 Ext { |
174 [logic, "type"] |
175 roots = [logic, "type"], |
175 [Mfix ("_", tfreeT --> typeT, "", [], max_pri), |
176 mfix = [ |
176 Mfix ("_", tvarT --> typeT, "", [], max_pri), |
177 Mfix ("_", tfreeT --> typeT, "", [], max_pri), |
177 Mfix ("_", idT --> typeT, "", [], max_pri), |
178 Mfix ("_", tvarT --> typeT, "", [], max_pri), |
178 Mfix ("_::_", [tfreeT, sortT] ---> typeT, "_ofsort", [max_pri, 0], max_pri), |
179 Mfix ("_", idT --> typeT, "", [], max_pri), |
179 Mfix ("_::_", [tvarT, sortT] ---> typeT, "_ofsort", [max_pri, 0], max_pri), |
180 Mfix ("_::_", [tfreeT, sortT] ---> typeT, "_ofsort", [max_pri, 0], max_pri), |
180 Mfix ("_", idT --> sortT, "", [], max_pri), |
181 Mfix ("_::_", [tvarT, sortT] ---> typeT, "_ofsort", [max_pri, 0], max_pri), |
181 Mfix ("{}", sortT, "_emptysort", [], max_pri), |
182 Mfix ("_", idT --> sortT, "", [], max_pri), |
182 Mfix ("{_}", classesT --> sortT, "_sort", [], max_pri), |
183 Mfix ("{}", sortT, "_emptysort", [], max_pri), |
183 Mfix ("_", idT --> classesT, "", [], max_pri), |
184 Mfix ("{_}", classesT --> sortT, "_sort", [], max_pri), |
184 Mfix ("_,_", [idT, classesT] ---> classesT, "_classes", [], max_pri), |
185 Mfix ("_", idT --> classesT, "", [], max_pri), |
185 Mfix ("_ _", [typeT, idT] ---> typeT, "_tapp", [max_pri, 0], max_pri), (* FIXME ambiguous *) |
186 Mfix ("_,_", [idT, classesT] ---> classesT, "_classes", [], max_pri), |
186 Mfix ("((1'(_'))_)", [typesT, idT] ---> typeT, "_tappl", [], max_pri), (* FIXME ambiguous *) |
187 Mfix ("_ _", [typeT, idT] ---> typeT, "_tapp", [max_pri, 0], max_pri), (* FIXME ambiguous *) |
187 Mfix ("_", typeT --> typesT, "", [], max_pri), |
188 Mfix ("((1'(_'))_)", [typesT, idT] ---> typeT, "_tappl", [], max_pri), (* FIXME ambiguous *) |
188 Mfix ("_,/ _", [typeT, typesT] ---> typesT, "_types", [], max_pri), |
189 Mfix ("_", typeT --> typesT, "", [], max_pri), |
189 Mfix ("(_/ => _)", [typeT, typeT] ---> typeT, "fun", [1, 0], 0), |
190 Mfix ("_,/ _", [typeT, typesT] ---> typesT, "_types", [], max_pri), |
190 Mfix ("([_]/ => _)", [typesT, typeT] ---> typeT, "_bracket", [0, 0], 0)] |
191 Mfix ("(_/ => _)", [typeT, typeT] ---> typeT, "fun", [1, 0], 0), |
191 ["_K", "_explode", "_implode"] |
192 Mfix ("([_]/ => _)", [typesT, typeT] ---> typeT, "_bracket", [0, 0], 0)], |
192 ([("_tapp", tappl_ast_tr), ("_tappl", tappl_ast_tr), ("_bracket", bracket_ast_tr)], |
193 extra_consts = ["_K"], |
193 [], |
194 parse_ast_translation = [("_tapp", tappl_ast_tr), ("_tappl", tappl_ast_tr), |
194 [], |
195 ("_bracket", bracket_ast_tr)], |
195 [("fun", fun_ast_tr')]) |
196 parse_translation = [], |
196 ([], []); |
197 print_translation = [], |
|
198 print_ast_translation = [("fun", fun_ast_tr')]}; |
|
199 |
197 |
200 |
198 |
201 end; |
199 end; |
202 |
200 |