src/Tools/jEdit/src/proofdocument/Token.scala
changeset 34482 0f4b34445f40
parent 34481 660c639870a4
child 34483 0923926022d7
equal deleted inserted replaced
34481:660c639870a4 34482:0f4b34445f40
     7 
     7 
     8 package isabelle.proofdocument
     8 package isabelle.proofdocument
     9 import isabelle.prover.Command
     9 import isabelle.prover.Command
    10 
    10 
    11 object Token {
    11 object Token {
    12   object Kind {
    12   object Kind extends Enumeration {
    13     val COMMAND_START = "COMMAND_START"
    13     val COMMAND_START = Value("COMMAND_START")
    14     val COMMENT = "COMMENT"
    14     val COMMENT = Value("COMMENT")
       
    15     val OTHER = Value("OTHER")
    15   }
    16   }
    16 
    17 
    17   def checkStart(t : Token, P : (Int) => Boolean)
    18   def checkStart(t : Token, P : (Int) => Boolean)
    18     = t != null && P(t.start)
    19   = t != null && P(t.start)
    19 
    20 
    20   def checkStop(t : Token, P : (Int) => Boolean)
    21   def checkStop(t : Token, P : (Int) => Boolean)
    21     = t != null && P(t.stop)
    22   = t != null && P(t.stop)
    22 
    23 
    23   def scan(s : Token, f : Token => Boolean) : Token = {
    24   def scan(s : Token, f : Token => Boolean) : Token = {
    24     var current = s
    25     var current = s
    25     while (current != null) {
    26     while (current != null) {
    26       val next = current.next
    27       val next = current.next
    27       if (next == null || f(next))
    28       if (next == null || f(next))
    28         return current
    29       return current
    29       current = next
    30       current = next
    30     }
    31     }
    31     return null
    32     return null
    32   }
    33   }
    33 
    34 
    34 }
    35 }
    35 
    36 
    36 class Token(var start : Int, var stop : Int, var kind : String) {
    37 class Token(var start : Int, var stop : Int, var kind : Token.Kind.Value) {
    37   var next : Token = null
    38   var next : Token = null
    38   var previous : Token = null
    39   var previous : Token = null
    39   var command : Command = null
    40   var command : Command = null
    40   
    41   
    41   def length = stop - start
    42   def length = stop - start
    47   
    48   
    48   override def hashCode() : Int = (31 + start) * 31 + stop
    49   override def hashCode() : Int = (31 + start) * 31 + stop
    49 
    50 
    50   override def equals(obj : Any) : Boolean = {
    51   override def equals(obj : Any) : Boolean = {
    51     if (super.equals(obj))
    52     if (super.equals(obj))
    52       return true;
    53     return true;
    53     
    54     
    54     if (null == obj)
    55     if (null == obj)
    55       return false;
    56     return false;
    56     
    57     
    57     obj match {
    58     obj match {
    58       case other: Token => 
    59       case other: Token => 
    59         (start == other.start) && (stop == other.stop)
    60         (start == other.start) && (stop == other.stop)
    60       case other: Any => false  
    61       case other: Any => false