summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc
diff options
context:
space:
mode:
authorSimon Ochsenreither <simon@ochsenreither.de>2014-02-02 03:20:13 +0100
committerSimon Ochsenreither <simon@ochsenreither.de>2014-02-10 09:20:28 +0100
commite008708e51a366258b6a0e646290b7dc94e62187 (patch)
tree922e5fc8f1b34a019a3be8707779d64ec2168bd7 /src/compiler/scala/tools/nsc
parent5b3f0e693b063c775b7c9bc4c831643f8df4beea (diff)
downloadscala-e008708e51a366258b6a0e646290b7dc94e62187.tar.gz
scala-e008708e51a366258b6a0e646290b7dc94e62187.tar.bz2
scala-e008708e51a366258b6a0e646290b7dc94e62187.zip
SI-8226 Deduplicate Scala's Tokens and JavaTokens
Diffstat (limited to 'src/compiler/scala/tools/nsc')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/CommonTokens.scala112
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Tokens.scala150
-rw-r--r--src/compiler/scala/tools/nsc/javac/JavaParsers.scala6
-rw-r--r--src/compiler/scala/tools/nsc/javac/JavaScanners.scala4
-rw-r--r--src/compiler/scala/tools/nsc/javac/JavaTokens.scala176
5 files changed, 233 insertions, 215 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/CommonTokens.scala b/src/compiler/scala/tools/nsc/ast/parser/CommonTokens.scala
new file mode 100644
index 0000000000..5fcb02814b
--- /dev/null
+++ b/src/compiler/scala/tools/nsc/ast/parser/CommonTokens.scala
@@ -0,0 +1,112 @@
+package scala.tools.nsc
+package ast.parser
+
+/** Common code between Scala's Tokens and JavaTokens. */
+abstract class CommonTokens {
+
+ def isIdentifier(code: Int): Boolean
+ def isLiteral(code: Int): Boolean
+
+ /** 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
+
+ /** keywords */
+ final val NEW = 20
+ final val THIS = 21
+ final val SUPER = 23
+
+ final val NULL = 24
+ final val TRUE = 25
+ final val FALSE = 26
+
+ // J: INSTANCEOF = 27
+ // J: CONST = 28
+
+ /** modifiers */
+ // S: IMPLICIT = 40
+ // S: OVERRIDE = 41
+ // J: PUBLIC = 42
+ final val PROTECTED = 43
+ final val PRIVATE = 44
+ // S: SEALED = 45
+ final val ABSTRACT = 46
+ // J: DEFAULT = 47
+ // J: STATIC = 48
+ final val FINAL = 49
+ // J: TRANSIENT = 50
+ // J: VOLATILE = 51
+ // J: SYNCHRONIZED = 52
+ // J: NATIVE = 53
+ // J: STRICTFP = 54
+ // S: LAZY = 55
+ // J: THROWS = 56
+ // S: MACRO = 57
+
+ /** templates */
+ final val PACKAGE = 60
+ final val IMPORT = 61
+ final val CLASS = 62
+ // S: CASECLASS = 63
+ // S: OBJECT = 64
+ // S: CASEOBJECT = 65
+ // S: TRAIT, J: INTERFACE = 66
+ // J: ENUM = 67
+ final val EXTENDS = 68
+ // S: WITH, J: IMPLEMENTS = 69
+ // S: TYPE = 70
+ // S: FORSOME = 71
+ // S: DEF = 72
+ // S: VAL = 73
+ // S: VAR = 74
+
+ /** control structures */
+ final val IF = 80
+ // S: THEN = 81
+ final val ELSE = 82
+ final val WHILE = 83
+ final val DO = 84
+ final val FOR = 85
+ // S: YIELD = 86
+ // J: BREAK = 87
+ // J: CONTINUE = 88
+ // J: GOTO = 89
+ final val THROW = 90
+ final val TRY = 91
+ final val CATCH = 92
+ final val FINALLY = 93
+ // J: SWITCH = 94
+ // S: MATCH = 95
+ final val CASE = 96
+ final val RETURN = 97
+ // J: ASSERT = 98
+
+ /** parenthesis */
+ final val LPAREN = 100
+ final val RPAREN = 101
+ final val LBRACKET = 102
+ final val RBRACKET = 103
+ final val LBRACE = 104
+ final val RBRACE = 105
+
+ /** special symbols */
+ final val COMMA = 120
+ final val SEMI = 121
+ final val DOT = 122
+ final val COLON = 123
+ final val EQUALS = 124
+ final val AT = 125
+ // S: <special symbols> = 130 - 139
+ // J: <special symbols> = 140 - 179
+ // J: <primitive types> = 180 - 189
+}
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Tokens.scala b/src/compiler/scala/tools/nsc/ast/parser/Tokens.scala
index 5a7dc4950d..e624aec88c 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Tokens.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Tokens.scala
@@ -6,123 +6,57 @@
package scala.tools.nsc
package ast.parser
-/** Common code between JavaTokens and Tokens. Not as much (and not as concrete)
- * as one might like because JavaTokens for no clear reason chose new numbers for
- * identical token sets.
- */
-abstract class Tokens {
- /** 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 LPAREN: Int
- def RBRACE: Int
-
- def isIdentifier(code: Int): Boolean
- def isLiteral(code: Int): Boolean
-}
-
-object Tokens extends Tokens {
- final val STRINGPART = 7 // a part of an interpolated string
+object Tokens extends CommonTokens {
+ final val STRINGPART = 7 // a part of an interpolated string
final val SYMBOLLIT = 8
final val INTERPOLATIONID = 9 // the lead identifier of an interpolated string
- def isLiteral(code: Int) =
- code >= CHARLIT && code <= INTERPOLATIONID
+ def isLiteral(code: Int) = code >= CHARLIT && code <= INTERPOLATIONID
/** identifiers */
final val IDENTIFIER = 10
final val BACKQUOTED_IDENT = 11
- def isIdentifier(code: Int) = code >= IDENTIFIER && code <= BACKQUOTED_IDENT // used by ide
-
- /** keywords */
- final val IF = 20
- final val FOR = 21
- final val ELSE = 22
- final val THIS = 23
- final val NULL = 24
- final val NEW = 25
- final val WITH = 26
- final val SUPER = 27
- final val CASE = 28
- final val CASECLASS = 29
- final val CASEOBJECT = 30
- final val VAL = 31
- final val ABSTRACT = 32
- final val FINAL = 33
- final val PRIVATE = 34
- final val PROTECTED = 35
- final val OVERRIDE = 36
- final val IMPLICIT = 37
- final val VAR = 38
- final val DEF = 39
- final val TYPE = 40
- final val EXTENDS = 41
- final val TRUE = 42
- final val FALSE = 43
- final val OBJECT = 44
- final val CLASS = 45
-
- final val IMPORT = 46
- final val PACKAGE = 47
- final val YIELD = 48
- final val DO = 49
- final val TRAIT = 50
- final val SEALED = 51
- final val THROW = 52
- final val TRY = 53
- final val CATCH = 54
- final val FINALLY = 55
- final val WHILE = 56
- final val RETURN = 57
- final val MATCH = 58
- final val FORSOME = 59
- final val LAZY = 61
- final val MACRO = 62 // not yet used in 2.10
- final val THEN = 63 // not yet used in 2.10
+ def isIdentifier(code: Int) = code == IDENTIFIER || code == BACKQUOTED_IDENT // used by ide
+
+ /** modifiers */
+ final val IMPLICIT = 40
+ final val OVERRIDE = 41
+ final val SEALED = 45
+ final val LAZY = 55
+ final val MACRO = 57
+
+ /** templates */
+ final val CASECLASS = 63
+ final val OBJECT = 64
+ final val CASEOBJECT = 65
+ final val TRAIT = 66
+ final val WITH = 69
+ final val TYPE = 70
+ final val FORSOME = 71
+ final val DEF = 72
+ final val VAL = 73
+ final val VAR = 74
+
+ /** control structures */
+ final val THEN = 81
+ final val YIELD = 86
+ final val MATCH = 95
/** special symbols */
- final val COMMA = 70
- final val SEMI = 71
- final val DOT = 72
- final val USCORE = 73
- final val COLON = 74
- final val EQUALS = 75
- final val LARROW = 76
- final val ARROW = 77
- final val NEWLINE = 78
- final val NEWLINES = 79
- final val SUBTYPE = 80
- final val SUPERTYPE = 81
- final val HASH = 82
- final val AT = 83
- final val VIEWBOUND = 84
-
- /** parenthesis */
- final val LPAREN = 90
- final val RPAREN = 91
- final val LBRACKET = 92
- final val RBRACKET = 93
- final val LBRACE = 94
- final val RBRACE = 95
-
- /** XML mode */
- final val XMLSTART = 96
+ final val HASH = 130
+ final val USCORE = 131
+ final val ARROW = 132
+ final val LARROW = 133
+ final val SUBTYPE = 134
+ final val SUPERTYPE = 135
+ final val VIEWBOUND = 136
+ final val NEWLINE = 137
+ final val NEWLINES = 138
+ final val XMLSTART = 139
/** for IDE only */
- final val COMMENT = 97
-
- final val WHITESPACE = 105
- final val IGNORE = 106
- final val ESCAPE = 109
+ final val COMMENT = 200
+ final val WHITESPACE = 201
+ final val IGNORE = 202
+ final val ESCAPE = 203
}
diff --git a/src/compiler/scala/tools/nsc/javac/JavaParsers.scala b/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
index 9875d27047..a61ad392ee 100644
--- a/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
+++ b/src/compiler/scala/tools/nsc/javac/JavaParsers.scala
@@ -190,7 +190,7 @@ trait JavaParsers extends ast.parser.ParsersCommon with JavaScanners {
case GTGTGT => GTGT
case GTGTEQ => GTEQ
case GTGT => GT
- case GTEQ => ASSIGN
+ case GTEQ => EQUALS
}
if (closers isDefinedAt in.token) in.token = closers(in.token)
else accept(GT)
@@ -538,7 +538,7 @@ trait JavaParsers extends ast.parser.ParsersCommon with JavaScanners {
in.nextToken()
if (in.token == IDENTIFIER) { // if there's an ident after the comma ...
val name = ident()
- if (in.token == ASSIGN || in.token == SEMI) { // ... followed by a `=` or `;`, we know it's a real variable definition
+ if (in.token == EQUALS || in.token == SEMI) { // ... followed by a `=` or `;`, we know it's a real variable definition
buf ++= maybe
buf += varDecl(in.currentPos, mods, tpt.duplicate, name.toTermName)
maybe.clear()
@@ -563,7 +563,7 @@ trait JavaParsers extends ast.parser.ParsersCommon with JavaScanners {
def varDecl(pos: Position, mods: Modifiers, tpt: Tree, name: TermName): ValDef = {
val tpt1 = optArrayBrackets(tpt)
- if (in.token == ASSIGN && !mods.isParameter) skipTo(COMMA, SEMI)
+ if (in.token == EQUALS && !mods.isParameter) skipTo(COMMA, SEMI)
val mods1 = if (mods.isFinal) mods &~ Flags.FINAL else mods | Flags.MUTABLE
atPos(pos) {
ValDef(mods1, name, tpt1, blankExpr)
diff --git a/src/compiler/scala/tools/nsc/javac/JavaScanners.scala b/src/compiler/scala/tools/nsc/javac/JavaScanners.scala
index b7ea70e2c7..c5401219dd 100644
--- a/src/compiler/scala/tools/nsc/javac/JavaScanners.scala
+++ b/src/compiler/scala/tools/nsc/javac/JavaScanners.scala
@@ -155,7 +155,6 @@ trait JavaScanners extends ast.parser.ScannersCommon {
case AMP => "`&'"
case AMPAMP => "`&&'"
case AMPEQ => "`&='"
- case ASSIGN => "`='"
case ASTERISK => "`*'"
case ASTERISKEQ => "`*='"
case AT => "`@'"
@@ -169,6 +168,7 @@ trait JavaScanners extends ast.parser.ScannersCommon {
case DOT => "`.'"
case DOTDOTDOT => "`...'"
case EQEQ => "`=='"
+ case EQUALS => "`='"
case GT => "`>'"
case GTEQ => "`>='"
case GTGT => "`>>'"
@@ -337,7 +337,7 @@ trait JavaScanners extends ast.parser.ScannersCommon {
return
case '=' =>
- token = ASSIGN
+ token = EQUALS
in.next()
if (in.ch == '=') {
token = EQEQ
diff --git a/src/compiler/scala/tools/nsc/javac/JavaTokens.scala b/src/compiler/scala/tools/nsc/javac/JavaTokens.scala
index 953a3c6d82..9b31e6e8a2 100644
--- a/src/compiler/scala/tools/nsc/javac/JavaTokens.scala
+++ b/src/compiler/scala/tools/nsc/javac/JavaTokens.scala
@@ -6,117 +6,89 @@
package scala.tools.nsc
package javac
-object JavaTokens extends ast.parser.Tokens {
+object JavaTokens extends ast.parser.CommonTokens {
- def isLiteral(code : Int) =
+ def isLiteral(code: Int) =
code >= CHARLIT && code <= STRINGLIT
/** identifiers */
final val IDENTIFIER = 10
- def isIdentifier(code : Int) =
+ 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
+ final val INSTANCEOF = 27
+ final val CONST = 28
+
+ /** modifiers */
+ final val PUBLIC = 42
+ final val DEFAULT = 47
+ final val STATIC = 48
+ final val TRANSIENT = 50
+ final val VOLATILE = 51
+ final val SYNCHRONIZED = 52
+ final val NATIVE = 53
+ final val STRICTFP = 54
+ final val THROWS = 56
+
+ /** templates */
+ final val INTERFACE = 66
+ final val ENUM = 67
+ final val IMPLEMENTS = 69
+
+ /** control structures */
+ final val BREAK = 87
+ final val CONTINUE = 88
+ final val GOTO = 89
+ final val SWITCH = 94
+ final val ASSERT = 98
/** 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
+ final val EQEQ = 140
+ final val BANGEQ = 141
+ final val LT = 142
+ final val GT = 143
+ final val LTEQ = 144
+ final val GTEQ = 145
+ final val BANG = 146
+ final val QMARK = 147
+ final val AMP = 148
+ final val BAR = 149
+ final val PLUS = 150
+ final val MINUS = 151
+ final val ASTERISK = 152
+ final val SLASH = 153
+ final val PERCENT = 154
+ final val HAT = 155
+ final val LTLT = 156
+ final val GTGT = 157
+ final val GTGTGT = 158
+ final val AMPAMP = 159
+ final val BARBAR = 160
+ final val PLUSPLUS = 161
+ final val MINUSMINUS = 162
+ final val TILDE = 163
+ final val DOTDOTDOT = 164
+ final val AMPEQ = 165
+ final val BAREQ = 166
+ final val PLUSEQ = 167
+ final val MINUSEQ = 168
+ final val ASTERISKEQ = 169
+ final val SLASHEQ = 170
+ final val PERCENTEQ = 171
+ final val HATEQ = 172
+ final val LTLTEQ = 173
+ final val GTGTEQ = 174
+ final val GTGTGTEQ = 175
- /** 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
+ /** primitive types */
+ final val VOID = 180
+ final val BOOLEAN = 181
+ final val BYTE = 182
+ final val SHORT = 183
+ final val CHAR = 184
+ final val INT = 185
+ final val LONG = 186
+ final val FLOAT = 187
+ final val DOUBLE = 188
}