src/Pure/Isar/isar_syn.ML
changeset 25578 11ee8b183477
parent 25536 01753a944433
child 25585 19cd3474fdf3
equal deleted inserted replaced
25577:d739f48ef40c 25578:11ee8b183477
   744 val _ =
   744 val _ =
   745   OuterSyntax.improper_command "kill" "kill current history node" K.control
   745   OuterSyntax.improper_command "kill" "kill current history node" K.control
   746     (Scan.succeed (Toplevel.no_timing o Toplevel.print o IsarCmd.kill));
   746     (Scan.succeed (Toplevel.no_timing o Toplevel.print o IsarCmd.kill));
   747 
   747 
   748 
   748 
       
   749 (* nested command *)
       
   750 
       
   751 val _ =
       
   752   OuterSyntax.improper_command "Isabelle.command" "nested Isabelle command" K.control
       
   753     (P.position P.string :|-- (fn (str, pos) =>
       
   754       (case OuterSyntax.parse pos str of
       
   755         [transition] => Scan.succeed (K transition)
       
   756       | _ => Scan.fail_with (K "exactly one nested Isabelle command expected"))
       
   757       handle ERROR msg => Scan.fail_with (K ("malformed nested command\n" ^ msg))));
       
   758 
       
   759 
   749 
   760 
   750 (** diagnostic commands (for interactive mode only) **)
   761 (** diagnostic commands (for interactive mode only) **)
   751 
   762 
   752 val opt_modes = Scan.optional (P.$$$ "(" |-- P.!!! (Scan.repeat1 P.xname --| P.$$$ ")")) [];
   763 val opt_modes = Scan.optional (P.$$$ "(" |-- P.!!! (Scan.repeat1 P.xname --| P.$$$ ")")) [];
   753 val opt_bang = Scan.optional (P.$$$ "!" >> K true) false;
   764 val opt_bang = Scan.optional (P.$$$ "!" >> K true) false;