src/Pure/General/symbol.scala
changeset 54734 b91afc3aa3e6
parent 53400 673eb869e6ee
child 55033 8e8243975860
equal deleted inserted replaced
54733:92fa590bdfe0 54734:b91afc3aa3e6
    49         val c2 = s(1)
    49         val c2 = s(1)
    50         !(c1 == '\r' && c2 == '\n' || Character.isSurrogatePair(c1, c2))
    50         !(c1 == '\r' && c2 == '\n' || Character.isSurrogatePair(c1, c2))
    51       case _ => !s.endsWith(">") || s == "\\<>" || s == "\\<^>"
    51       case _ => !s.endsWith(">") || s == "\\<>" || s == "\\<^>"
    52     }
    52     }
    53 
    53 
    54   def is_physical_newline(s: Symbol): Boolean =
    54   def is_newline(s: Symbol): Boolean =
    55     s == "\n" || s == "\r" || s == "\r\n"
    55     s == "\n" || s == "\r" || s == "\r\n"
    56 
    56 
    57   class Matcher(text: CharSequence)
    57   class Matcher(text: CharSequence)
    58   {
    58   {
    59     private val matcher = symbol_total.pattern.matcher(text)
    59     private val matcher = symbol_total.pattern.matcher(text)
   100 
   100 
   101   def advance_line_column(pos: (Int, Int), text: CharSequence): (Int, Int) =
   101   def advance_line_column(pos: (Int, Int), text: CharSequence): (Int, Int) =
   102   {
   102   {
   103     var (line, column) = pos
   103     var (line, column) = pos
   104     for (sym <- iterator(text)) {
   104     for (sym <- iterator(text)) {
   105       if (is_physical_newline(sym)) { line += 1; column = 1 }
   105       if (is_newline(sym)) { line += 1; column = 1 }
   106       else column += 1
   106       else column += 1
   107     }
   107     }
   108     (line, column)
   108     (line, column)
   109   }
   109   }
   110 
   110 
   356       "\\<tau>", "\\<upsilon>", "\\<phi>", "\\<chi>", "\\<psi>",
   356       "\\<tau>", "\\<upsilon>", "\\<phi>", "\\<chi>", "\\<psi>",
   357       "\\<omega>", "\\<Gamma>", "\\<Delta>", "\\<Theta>", "\\<Lambda>",
   357       "\\<omega>", "\\<Gamma>", "\\<Delta>", "\\<Theta>", "\\<Lambda>",
   358       "\\<Xi>", "\\<Pi>", "\\<Sigma>", "\\<Upsilon>", "\\<Phi>",
   358       "\\<Xi>", "\\<Pi>", "\\<Sigma>", "\\<Upsilon>", "\\<Phi>",
   359       "\\<Psi>", "\\<Omega>")
   359       "\\<Psi>", "\\<Omega>")
   360 
   360 
   361     val blanks = recode_set(" ", "\t", "\n", "\u000B", "\f", "\r", "\r\n", "\\<^newline>")
   361     val blanks = recode_set(" ", "\t", "\n", "\u000B", "\f", "\r", "\r\n")
   362 
   362 
   363     val sym_chars =
   363     val sym_chars =
   364       Set("!", "#", "$", "%", "&", "*", "+", "-", "/", "<", "=", ">", "?", "@", "^", "_", "|", "~")
   364       Set("!", "#", "$", "%", "&", "*", "+", "-", "/", "<", "=", ">", "?", "@", "^", "_", "|", "~")
   365 
   365 
   366     val symbolic = recode_set((for { (sym, _) <- symbols; if raw_symbolic(sym) } yield sym): _*)
   366     val symbolic = recode_set((for { (sym, _) <- symbols; if raw_symbolic(sym) } yield sym): _*)