src/Pure/Syntax/printer.ML
changeset 49821 d15fe10593ff
parent 49690 a6814de45b69
child 51949 f6858bb224c9
--- a/src/Pure/Syntax/printer.ML	Thu Oct 11 19:25:36 2012 +0200
+++ b/src/Pure/Syntax/printer.ML	Thu Oct 11 20:38:02 2012 +0200
@@ -92,8 +92,7 @@
 datatype symb =
   Arg of int |
   TypArg of int |
-  String of string |
-  Space of string |
+  String of bool * string |
   Break of int |
   Block of int * symb list;
 
@@ -113,11 +112,12 @@
           (if Lexicon.is_terminal s then 1000 else p);
 
         fun xsyms_to_syms (Syntax_Ext.Delim s :: xsyms) =
-              apfst (cons (String s)) (xsyms_to_syms xsyms)
+              apfst (cons (String (not (exists Symbol.is_block_ctrl (Symbol.explode s)), s)))
+                (xsyms_to_syms xsyms)
           | xsyms_to_syms (Syntax_Ext.Argument s_p :: xsyms) =
               apfst (cons (arg s_p)) (xsyms_to_syms xsyms)
           | xsyms_to_syms (Syntax_Ext.Space s :: xsyms) =
-              apfst (cons (Space s)) (xsyms_to_syms xsyms)
+              apfst (cons (String (false, s))) (xsyms_to_syms xsyms)
           | xsyms_to_syms (Syntax_Ext.Bg i :: xsyms) =
               let
                 val (bsyms, xsyms') = xsyms_to_syms xsyms;
@@ -133,7 +133,6 @@
         fun nargs (Arg _ :: syms) = nargs syms + 1
           | nargs (TypArg _ :: syms) = nargs syms + 1
           | nargs (String _ :: syms) = nargs syms
-          | nargs (Space _ :: syms) = nargs syms
           | nargs (Break _ :: syms) = nargs syms
           | nargs (Block (_, bsyms) :: syms) = nargs syms + nargs bsyms
           | nargs [] = 0;
@@ -202,17 +201,14 @@
               (pretty true curried (Config.put pretty_priority p ctxt)
                 tabs trf markup_trans markup_extern t @ Ts, args')
           end
-      | synT m (String s :: symbs, args) =
+      | synT m (String (do_mark, s) :: symbs, args) =
           let
             val (Ts, args') = synT m (symbs, args);
             val T =
-              if exists Symbol.is_block_ctrl (Symbol.explode s)
-              then Pretty.str s
-              else Pretty.marks_str (m, s);
+              if do_mark
+              then Pretty.marks_str (m @ [Lexicon.literal_markup s], s)
+              else Pretty.str s;
           in (T :: Ts, args') end
-      | synT m (Space s :: symbs, args) =
-          let val (Ts, args') = synT m (symbs, args);
-          in (Pretty.str s :: Ts, args') end
       | synT m (Block (i, bsymbs) :: symbs, args) =
           let
             val (bTs, args') = synT m (bsymbs, args);
@@ -229,7 +225,7 @@
 
     and parT m (pr, args, p, p': int) = #1 (synT m
           (if p > p' orelse (show_brackets andalso p' <> 1000 andalso not (is_chain pr))
-           then [Block (1, Space "(" :: pr @ [Space ")"])]
+           then [Block (1, String (false, "(") :: pr @ [String (false, ")")])]
            else pr, args))
 
     and atomT a = Pretty.marks_str (markup_extern a)