diff -r 6040db6b929d -r e149e3e320a3 src/Pure/Syntax/syntax_ext.ML --- a/src/Pure/Syntax/syntax_ext.ML Wed Sep 21 20:33:44 2016 +0200 +++ b/src/Pure/Syntax/syntax_ext.ML Wed Sep 21 22:43:06 2016 +0200 @@ -251,9 +251,10 @@ val is_meta = member (op =) ["(", ")", "/", "_", "\", Symbol.open_, Symbol.close]; -val scan_delim_char = - $$ "'" |-- scan_one ((not o Symbol.is_blank) andf Symbol.not_eof) || - scan_one ((not o is_meta) andf (not o Symbol.is_blank) andf Symbol.not_eof); +val scan_delim = + scan_one Symbol.is_control ::: Symbol_Pos.scan_cartouche "Mixfix error: " || + $$ "'" |-- scan_one ((not o Symbol.is_blank) andf Symbol.not_eof) >> single || + scan_one ((not o is_meta) andf (not o Symbol.is_blank) andf Symbol.not_eof) >> single; val scan_sym = $$ "_" >> K (Argument ("", 0)) || @@ -265,7 +266,7 @@ $$ "/" -- $$ "/" >> K (Brk ~1) || $$ "/" |-- scan_many Symbol.is_space >> (Brk o length) || scan_many1 Symbol.is_space >> (Space o Symbol_Pos.content) || - Scan.repeat1 scan_delim_char >> (Delim o Symbol_Pos.content); + Scan.repeat1 scan_delim >> (Delim o Symbol_Pos.content o flat); val scan_symb = Scan.trace scan_sym >> (fn (syms, trace) => SOME (syms, #1 (Symbol_Pos.range trace))) ||