summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/javac/JavaTokens.scala
blob: 3e0637d37400df32380f0a4b6509fa727ff34e0a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/* NSC -- new Scala compiler
 * Copyright 2005-2010 LAMP/EPFL
 * @author  Martin Odersky
 */
// $Id$

package scala.tools.nsc
package javac

object JavaTokens {

  /** special tokens */
  final val EMPTY = -3
  final val UNDEF = -2
  final val ERROR = -1
  final val EOF = 0

  /** literals */
  final val CHARLIT = 1
  final val INTLIT = 2
  final val LONGLIT = 3
  final val FLOATLIT = 4
  final val DOUBLELIT = 5
  final val STRINGLIT = 6
  def isLiteral(code : Int) =
    code >= CHARLIT && code <= STRINGLIT

  /** identifiers */
  final val IDENTIFIER = 10
  def isIdentifier(code : Int) =
    code == IDENTIFIER

  /** keywords */
  final val ABSTRACT = 20
  final val ASSERT = 21
  final val BOOLEAN = 22
  final val BREAK = 23
  final val BYTE = 24
  final val CASE = 25
  final val CATCH = 26
  final val CHAR = 27
  final val CLASS = 28
  final val CONST = 29
  final val CONTINUE = 30
  final val DEFAULT = 31
  final val DO = 32
  final val DOUBLE = 33
  final val ELSE = 34
  final val ENUM = 35
  final val EXTENDS = 36
  final val FINAL = 37
  final val FINALLY = 38
  final val FLOAT = 39
  final val FOR = 40
  final val IF = 41
  final val GOTO = 42
  final val IMPLEMENTS = 43
  final val IMPORT = 44
  final val INSTANCEOF = 45
  final val INT = 46
  final val INTERFACE = 47
  final val LONG = 48
  final val NATIVE = 49
  final val NEW = 50
  final val PACKAGE = 51
  final val PRIVATE = 52
  final val PROTECTED = 53
  final val PUBLIC = 54
  final val RETURN = 55
  final val SHORT = 56
  final val STATIC = 57
  final val STRICTFP = 58
  final val SUPER = 59
  final val SWITCH = 60
  final val SYNCHRONIZED = 61
  final val THIS = 62
  final val THROW = 63
  final val THROWS = 64
  final val TRANSIENT = 65
  final val TRY = 66
  final val VOID = 67
  final val VOLATILE = 68
  final val WHILE = 69

  def isKeyword(code : Int) =
    code >= ABSTRACT && code <= WHILE

  /** special symbols */
  final val COMMA = 70
  final val SEMI = 71
  final val DOT = 72
  final val AT = 73
  final val COLON = 74
  final val ASSIGN = 75
  final val EQEQ = 76
  final val BANGEQ = 77
  final val LT = 78
  final val GT = 79
  final val LTEQ = 80
  final val GTEQ = 81
  final val BANG = 82
  final val QMARK = 83
  final val AMP = 84
  final val BAR = 85
  final val PLUS = 86
  final val MINUS = 87
  final val ASTERISK = 88
  final val SLASH = 89
  final val PERCENT = 90
  final val HAT = 91
  final val LTLT = 92
  final val GTGT = 93
  final val GTGTGT = 94
  final val AMPAMP = 95
  final val BARBAR = 96
  final val PLUSPLUS = 97
  final val MINUSMINUS = 98
  final val TILDE = 99
  final val DOTDOTDOT = 100
  final val AMPEQ = 104
  final val BAREQ = 105
  final val PLUSEQ = 106
  final val MINUSEQ = 107
  final val ASTERISKEQ = 1010
  final val SLASHEQ = 109
  final val PERCENTEQ = 110
  final val HATEQ = 111
  final val LTLTEQ = 112
  final val GTGTEQ = 113
  final val GTGTGTEQ = 114

  def isSymbol(code : Int) =
    code >= COMMA && code <= GTGTGTEQ

  /** parenthesis */
  final val LPAREN = 115
  final val RPAREN = 116
  final val LBRACKET = 117
  final val RBRACKET = 118
  final val LBRACE = 119
  final val RBRACE = 120

  def isBrace(code : Int) =
    code >= LPAREN && code <= RBRACE
  def isOpenBrace(code : Int) = isBrace(code) && (code % 2 == 0)
  def isCloseBrace(code : Int) = isBrace(code) && (code % 2 == 1)

  def isSpace(at : Char) = at match {
    case ' ' | '\t' => true
    case _ => false
  }
  import util.Chars._

  def isNewLine(at : Char) = at match {
    case CR | LF | FF => true
    case _ => false
  }
}