Basic support for Isabelle symbols.
authorwenzelm
Fri, 15 Aug 2008 21:53:40 +0200
changeset 27901 28083e9f8d1d
parent 27900 fdd6e68e29d9
child 27902 4a419fd52f44
Basic support for Isabelle symbols.
src/Pure/General/symbol.scala
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Pure/General/symbol.scala	Fri Aug 15 21:53:40 2008 +0200
@@ -0,0 +1,30 @@
+/*  Title:      Pure/General/symbol.scala
+    ID:         $Id$
+    Author:     Makarius
+
+Basic support for Isabelle symbols.
+*/
+
+package isabelle
+
+import java.util.regex.Pattern
+
+
+object Symbol {
+
+  /* Regular expressions */
+
+  private def compile(s: String) =
+    Pattern.compile(s, Pattern.COMMENTS | Pattern.DOTALL)
+
+  private val symbol_src = """ \\ \\? < (?:
+      \^? [A-Za-z][A-Za-z0-9_']* |
+      \^raw: [\x20-\x7e\u0100-\uffff && [^.>]]* ) >"""
+
+  private val bad_symbol_src = "(?!" + symbol_src + ")" +
+    """ \\ \\? < (?: (?! \p{Space} | ["`\\] | \(\* | \*\) | \{\* | \*\} ) . )*"""
+
+  val symbol_pattern = compile(symbol_src)
+  val bad_symbol_pattern = compile(bad_symbol_src)
+  val pattern = compile(symbol_src + "|" + bad_symbol_src + "| .")
+}