equal
deleted
inserted
replaced
94 fun merge _ = AList.merge (op = : string * string -> bool) (K true); |
94 fun merge _ = AList.merge (op = : string * string -> bool) (K true); |
95 ); |
95 ); |
96 |
96 |
97 fun add_attribute (attr as (name, _)) = |
97 fun add_attribute (attr as (name, _)) = |
98 let |
98 let |
99 fun add_parser ("", parser) attrs = attrs @ [("", parser)] |
99 fun add_parser ("", parser) attrs = attrs |> rev |> AList.update (op =) ("", parser) |> rev |
100 | add_parser (name, parser) attrs = (name, Args.$$$ name |-- parser) :: attrs; |
100 | add_parser (name, parser) attrs = (name, Args.$$$ name |-- parser) :: attrs; |
101 fun error "" = error ("Code attribute already declared") |
101 in CodeAttr.map (fn attrs => if not (name = "") andalso AList.defined (op =) attrs name |
102 | error name = error ("Code attribute " ^ name ^ " already declared") |
102 then error ("Code attribute " ^ name ^ " already declared") else add_parser attr attrs) |
103 in CodeAttr.map (fn attrs => if AList.defined (op =) attrs name |
|
104 then error name else add_parser attr attrs) |
|
105 end; |
103 end; |
106 |
104 |
107 val _ = |
105 val _ = |
108 let |
106 let |
109 val code_attr = Attrib.syntax (Scan.peek (fn context => |
107 val code_attr = Attrib.syntax (Scan.peek (fn context => |
635 fun add_del_attribute (name, (add, del)) = |
633 fun add_del_attribute (name, (add, del)) = |
636 add_attribute (name, Args.del |-- Scan.succeed (mk_attribute del) |
634 add_attribute (name, Args.del |-- Scan.succeed (mk_attribute del) |
637 || Scan.succeed (mk_attribute add)) |
635 || Scan.succeed (mk_attribute add)) |
638 in |
636 in |
639 TypeInterpretation.init |
637 TypeInterpretation.init |
640 #> add_del_attribute ("func", (add_eqn, del_eqn)) |
638 #> add_del_attribute ("", (add_eqn, del_eqn)) |
641 #> add_simple_attribute ("nbe", add_nonlinear_eqn) |
639 #> add_simple_attribute ("nbe", add_nonlinear_eqn) |
642 #> add_del_attribute ("inline", (add_inline, del_inline)) |
640 #> add_del_attribute ("inline", (add_inline, del_inline)) |
643 #> add_del_attribute ("post", (add_post, del_post)) |
641 #> add_del_attribute ("post", (add_post, del_post)) |
644 end)); |
642 end)); |
645 |
643 |