clarified modules: more robust Isabelle symbols;
authorwenzelm
Sun, 09 Feb 2025 12:35:29 +0100
changeset 82120 a4aa45999dd7
parent 82119 b7929e1dc4fb
child 82121 fdaa32d96393
clarified modules: more robust Isabelle symbols;
src/Pure/General/symbol.scala
src/Pure/General/word.scala
src/Pure/Isar/token.scala
--- a/src/Pure/General/symbol.scala	Sun Feb 09 12:14:09 2025 +0100
+++ b/src/Pure/General/symbol.scala	Sun Feb 09 12:35:29 2025 +0100
@@ -525,6 +525,12 @@
     val close_decoded: Symbol = decode(close)
 
 
+    /* brackets */
+
+    val open_brackets_decoded = decode(open_brackets)
+    val close_brackets_decoded = decode(close_brackets)
+
+
     /* control symbols */
 
     val control_decoded: Set[Symbol] =
@@ -629,6 +635,15 @@
   def is_symbolic_char(sym: Symbol): Boolean = symbols.sym_chars.contains(sym)
 
 
+  /* brackets */
+
+  val open_brackets = """([{\<guillemotleft>\<open>\<langle>\<lceil>\<lfloor>\<lparr>\<lbrakk>\<lbrace>\<llangle>"""
+  val close_brackets = """)]}\<guillemotright>\<close>\<rangle>\<rceil>\<rfloor>\<rparr>\<rbrakk>\<rbrace>\<rrangle>"""
+
+  def open_brackets_decoded = symbols.open_brackets_decoded
+  def close_brackets_decoded = symbols.close_brackets_decoded
+
+
   /* control symbols */
 
   val control_prefix = "\\<^"
--- a/src/Pure/General/word.scala	Sun Feb 09 12:14:09 2025 +0100
+++ b/src/Pure/General/word.scala	Sun Feb 09 12:35:29 2025 +0100
@@ -77,10 +77,4 @@
     explode(Character.isWhitespace _, text)
 
   def informal(text: String): String = implode(explode('_', text))
-
-
-  /* brackets */
-
-  val open_brackets = "([{«‹⟨⌈⌊⦇⟦⦃⟪"
-  val close_brackets = ")]}»›⟩⌉⌋⦈⟧⦄⟫"
 }
--- a/src/Pure/Isar/token.scala	Sun Feb 09 12:14:09 2025 +0100
+++ b/src/Pure/Isar/token.scala	Sun Feb 09 12:35:29 2025 +0100
@@ -295,8 +295,8 @@
     source.startsWith(Symbol.open) ||
     source.startsWith(Symbol.open_decoded))
 
-  def is_open_bracket: Boolean = is_keyword && Word.open_brackets.exists(is_keyword)
-  def is_close_bracket: Boolean = is_keyword && Word.close_brackets.exists(is_keyword)
+  def is_open_bracket: Boolean = is_keyword && Symbol.open_brackets_decoded.exists(is_keyword)
+  def is_close_bracket: Boolean = is_keyword && Symbol.close_brackets_decoded.exists(is_keyword)
 
   def is_begin: Boolean = is_keyword("begin")
   def is_end: Boolean = is_command("end")