changeset 54734 | b91afc3aa3e6 |
parent 53400 | 673eb869e6ee |
child 55033 | 8e8243975860 |
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): _*) |