1 //
2 // Copyright (c) 2006, Brian Frank and Andy Frank
3 // Licensed under the Academic Free License version 3.0
4 //
5 // History:
6 // 16 Apr 06 Brian Frank Creation
7 //
8
9 **
10 ** TokenVal stores an instance of a Token at a specific Location.
11 **
12 class TokenVal : Location
13 {
14
15 new make(Token kind, Obj val := null)
16 : super.makeUninit()
17 {
18 this.kind = kind
19 this.val = val
20 }
21
22 override Int hash()
23 {
24 return kind.hash
25 }
26
27 override Bool equals(Obj obj)
28 {
29 that := obj as TokenVal
30 if (that == null) return false
31 return (kind === that.kind) && (val == that.val)
32 }
33
34 override Str toStr()
35 {
36 if (kind === Token.identifier) return val.toStr
37 return kind.symbol
38 }
39
40 Token kind // enum for Token type
41 Obj val // Str, Int, Float, Duration, or Str[]
42 Bool newline // have we processed one or more newlines since the last token
43 }
2 // Copyright (c) 2006, Brian Frank and Andy Frank
3 // Licensed under the Academic Free License version 3.0
4 //
5 // History:
6 // 16 Apr 06 Brian Frank Creation
7 //
8
9 **
10 ** TokenVal stores an instance of a Token at a specific Location.
11 **
12 class TokenVal : Location
13 {
14
15 new make(Token kind, Obj val := null)
16 : super.makeUninit()
17 {
18 this.kind = kind
19 this.val = val
20 }
21
22 override Int hash()
23 {
24 return kind.hash
25 }
26
27 override Bool equals(Obj obj)
28 {
29 that := obj as TokenVal
30 if (that == null) return false
31 return (kind === that.kind) && (val == that.val)
32 }
33
34 override Str toStr()
35 {
36 if (kind === Token.identifier) return val.toStr
37 return kind.symbol
38 }
39
40 Token kind // enum for Token type
41 Obj val // Str, Int, Float, Duration, or Str[]
42 Bool newline // have we processed one or more newlines since the last token
43 }