src/Pure/Isar/isar_syn.ML
changeset 42204 b3277168c1e7
parent 41944 b97091ae583a
child 42299 06e93f257d0e
equal deleted inserted replaced
42203:9c9c97a5040d 42204:b3277168c1e7
   173 val trans_pat =
   173 val trans_pat =
   174   Scan.optional (Parse.$$$ "(" |-- Parse.!!! (Parse.xname --| Parse.$$$ ")")) "logic"
   174   Scan.optional (Parse.$$$ "(" |-- Parse.!!! (Parse.xname --| Parse.$$$ ")")) "logic"
   175     -- Parse.string;
   175     -- Parse.string;
   176 
   176 
   177 fun trans_arrow toks =
   177 fun trans_arrow toks =
   178   ((Parse.$$$ "\\<rightharpoonup>" || Parse.$$$ "=>") >> K Syntax.ParseRule ||
   178   ((Parse.$$$ "\\<rightharpoonup>" || Parse.$$$ "=>") >> K Syntax.Parse_Rule ||
   179     (Parse.$$$ "\\<leftharpoondown>" || Parse.$$$ "<=") >> K Syntax.PrintRule ||
   179     (Parse.$$$ "\\<leftharpoondown>" || Parse.$$$ "<=") >> K Syntax.Print_Rule ||
   180     (Parse.$$$ "\\<rightleftharpoons>" || Parse.$$$ "==") >> K Syntax.ParsePrintRule) toks;
   180     (Parse.$$$ "\\<rightleftharpoons>" || Parse.$$$ "==") >> K Syntax.Parse_Print_Rule) toks;
   181 
   181 
   182 val trans_line =
   182 val trans_line =
   183   trans_pat -- Parse.!!! (trans_arrow -- trans_pat)
   183   trans_pat -- Parse.!!! (trans_arrow -- trans_pat)
   184     >> (fn (left, (arr, right)) => arr (left, right));
   184     >> (fn (left, (arr, right)) => arr (left, right));
   185 
   185 
   186 val _ =
   186 val _ =
   187   Outer_Syntax.command "translations" "declare syntax translation rules" Keyword.thy_decl
   187   Outer_Syntax.command "translations" "declare syntax translation rules" Keyword.thy_decl
   188     (Scan.repeat1 trans_line >> (Toplevel.theory o Sign.add_trrules));
   188     (Scan.repeat1 trans_line >> (Toplevel.theory o Isar_Cmd.translations));
   189 
   189 
   190 val _ =
   190 val _ =
   191   Outer_Syntax.command "no_translations" "remove syntax translation rules" Keyword.thy_decl
   191   Outer_Syntax.command "no_translations" "remove syntax translation rules" Keyword.thy_decl
   192     (Scan.repeat1 trans_line >> (Toplevel.theory o Sign.del_trrules));
   192     (Scan.repeat1 trans_line >> (Toplevel.theory o Isar_Cmd.no_translations));
   193 
   193 
   194 
   194 
   195 (* axioms and definitions *)
   195 (* axioms and definitions *)
   196 
   196 
   197 val _ =
   197 val _ =