diff options
author | Martin Odersky <odersky@gmail.com> | 2008-05-20 20:31:20 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2008-05-20 20:31:20 +0000 |
commit | 00e18ddfec3d3d592b5a140af3a73e4c06a135fe (patch) | |
tree | 0142cbb81eafb673eecb1ec8ace361d89818afd0 /src/compiler/scala/tools/nsc/javac/JavaTokens.scala | |
parent | 2c7e43ae7adc82438924c2dba9fd725c216c3048 (diff) | |
download | scala-00e18ddfec3d3d592b5a140af3a73e4c06a135fe.tar.gz scala-00e18ddfec3d3d592b5a140af3a73e4c06a135fe.tar.bz2 scala-00e18ddfec3d3d592b5a140af3a73e4c06a135fe.zip |
1) Fix in backend to print meaningful filenames...
1) Fix in backend to print meaningful filenames (previously it was
"[wrote DataOutputStream@6747]" 2) Treat java varargs as Scala varargs
3) Allow parsing of Java source files
Diffstat (limited to 'src/compiler/scala/tools/nsc/javac/JavaTokens.scala')
-rwxr-xr-x | src/compiler/scala/tools/nsc/javac/JavaTokens.scala | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/javac/JavaTokens.scala b/src/compiler/scala/tools/nsc/javac/JavaTokens.scala new file mode 100755 index 0000000000..53db4060b1 --- /dev/null +++ b/src/compiler/scala/tools/nsc/javac/JavaTokens.scala @@ -0,0 +1,157 @@ +/* NSC -- new Scala compiler + * Copyright 2005-2006 LAMP/EPFL + * @author Martin Odersky + */ +// $Id: Tokens.scala 12886 2007-09-17 16:36:10Z mcdirmid $ + +package scala.tools.nsc.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 scala.tools.nsc.util.SourceFile._ + + def isNewLine(at : Char) = at match { + case CR | LF | FF => true + case _ => false + } +} |