equal
deleted
inserted
replaced
72 kind match { case k: Command_Span => k.pos case _ => Position.none } |
72 kind match { case k: Command_Span => k.pos case _ => Position.none } |
73 |
73 |
74 def keyword_pos(start: Token.Pos): Token.Pos = |
74 def keyword_pos(start: Token.Pos): Token.Pos = |
75 kind match { |
75 kind match { |
76 case _: Command_Span => |
76 case _: Command_Span => |
77 (start /: content.iterator.takeWhile(tok => !tok.is_command))(_.advance(_)) |
77 content.iterator.takeWhile(tok => !tok.is_command).foldLeft(start)(_.advance(_)) |
78 case _ => start |
78 case _ => start |
79 } |
79 } |
80 |
80 |
81 def is_kind(keywords: Keyword.Keywords, pred: String => Boolean, other: Boolean): Boolean = |
81 def is_kind(keywords: Keyword.Keywords, pred: String => Boolean, other: Boolean): Boolean = |
82 keywords.kinds.get(name) match { |
82 keywords.kinds.get(name) match { |
87 def is_begin: Boolean = content.exists(_.is_begin) |
87 def is_begin: Boolean = content.exists(_.is_begin) |
88 def is_end: Boolean = content.exists(_.is_end) |
88 def is_end: Boolean = content.exists(_.is_end) |
89 |
89 |
90 def content_reader: CharSequenceReader = Scan.char_reader(Token.implode(content)) |
90 def content_reader: CharSequenceReader = Scan.char_reader(Token.implode(content)) |
91 |
91 |
92 def length: Int = (0 /: content)(_ + _.source.length) |
92 def length: Int = content.foldLeft(0)(_ + _.source.length) |
93 |
93 |
94 def compact_source: (String, Span) = |
94 def compact_source: (String, Span) = |
95 { |
95 { |
96 val source = Token.implode(content) |
96 val source = Token.implode(content) |
97 val content1 = new mutable.ListBuffer[Token] |
97 val content1 = new mutable.ListBuffer[Token] |