汉化"/>
java关键字汉化
public class Tokens {
...
/** The names of all tokens.*/
//private Name[] tokenName = new Name[TokenKind.values().length]; private Name[] tokenName = new Name[2 * TokenKind.values().length];
// 添加了中文关键字,长度*2 ...
/* 原代码protected Tokens(Context context) {context.put(tokensKey, this);names = Names.instance(context);for (TokenKind t : TokenKind.values()) {if (t.name != null)enterKeyword(t.name, t);elsetokenName[t.ordinal()] = null;}key = new TokenKind[maxKey+1];for (int i = 0; i <= maxKey; i++) key[i] = TokenKind.IDENTIFIER;for (TokenKind t : TokenKind.values()) {if (t.name != null)key[tokenName[t.ordinal()].getIndex()] = t;}}private void enterKeyword(String s, TokenKind token) {Name n = names.fromString(s);tokenName[token.ordinal()] = n;if (n.getIndex() > maxKey) maxKey = n.getIndex();}*/
protected Tokens(Context context) {
context.put(tokensKey, this);
names = Names.instance(context);
for (TokenKind t : TokenKind.values()) {
if (t.name != null) {
Name n = names.fromString(t.name);
tokenName[2 * t.ordinal()] = n;
if (n.getIndex() > maxKey) maxKey = n.getIndex();
if (t.name_cn != null) {
Name n_cn = names.fromString(t.name_cn);
tokenName[2 * t.ordinal() + 1] = n_cn;
if (n_cn.getIndex() > maxKey) maxKey = n_cn.getIndex();
}
else {
tokenName[2 * t.ordinal() + 1] = null;
}
}
//enterKeyword(t.name, t); //直接不用了,重新写了 else {
tokenName[2 * t.ordinal()] = null;
tokenName[2 * t.ordinal() + 1] = null;
}
}
key = new TokenKind[maxKey+1];
for (int i = 0; i <= maxKey; i++) key[i] = TokenKind.IDENTIFIER;
for (TokenKind t : TokenKind.values()) {
if (t.name != null) {
key[tokenName[2 * t.ordinal()].getIndex()] = t;
if (t.name_cn != null) {
key[tokenName[2 * t.ordinal() + 1].getIndex()] = t;
}
}
}
}
}
...
/*** This enum defines all tokens used by the javac scanner. A token is* optionally associated with a name.*/
//添加中文关键词表,在英文单词,后面加一个中文词 // e.g. ABSTRACT("abstract"), --> ABSTRACT("abstract", "象"), // ASSERT("assert", Tag.NAMED), --> ASSERT("assert", "断", Tag.NAMED), // 具体实现可看结尾的构造函数,比较简单 public enum TokenKind implements Formattable, Filter {
EOF(),
ERROR(),
IDENTIFIER(Tag.NAMED),
ABSTRACT("abstract", "象"),
ASSERT("assert", "断", Tag.NAMED),
BOOLEAN("boolean", "不二", Tag.NAMED),
BREAK("break", "破"),
BYTE("byte", "字", Tag.NAMED),
CASE("case", "例"),
CATCH("catch", "捕"),
CHAR("char", "符", Tag.NAMED),
CLASS("class", "类"),
CONST("const", "常"),
CONTINUE("continue", "继"),
DEFAULT("default", "默"),
DO("do", "运"),
DOUBLE("double", "双", Tag.NAMED),
ELSE("else", "另"),
ENUM("enum", "举", Tag.NAMED),
EXTENDS("extends", "承"),
FINAL("final", "终"),
FINALLY("finally", "末"),
FLOAT("float", "浮", Tag.NAMED),
FOR("for", "为"),
GOTO("goto", "去"),
IF("if", "如"),
IMPLEMENTS("implements", "成"),
IMPORT("import", "进"),
INSTANCEOF("instanceof", "是"),
INT("int", "整", Tag.NAMED),
INTERFACE("interface", "接"),
LONG("long", "长", Tag.NAMED),
NATIVE("native", "原"),
NEW("new", "新"),
PACKAGE("package", "包"),
PRIVATE("private", "私"),
PROTECTED("protected", "保"),
PUBLIC("public", "公"),
RETURN("return", "返"),
SHORT("short", "短", Tag.NAMED),
STATIC("static", "固"),
STRICTFP("strictfp", "严"),
SUPER("super", "超", Tag.NAMED),
SWITCH("switch", "分"),
SYNCHRONIZED("synchronized", "同"),
THIS("this", "此", Tag.NAMED),
THROW("throw", "抛"),
THROWS("throws", "弃"),
TRANSIENT("transient", "暂"),
TRY("try", "试"),
VOID("void", "空", Tag.NAMED),
VOLATILE("volatile", "易"),
WHILE("while", "当"),
INTLITERAL(Tag.NUMERIC),
LONGLITERAL(Tag.NUMERIC),
FLOATLITERAL(Tag.NUMERIC),
DOUBLELITERAL(Tag.NUMERIC),
CHARLITERAL(Tag.NUMERIC),
STRINGLITERAL(Tag.STRING),
TRUE("true", "真", Tag.NAMED),
FALSE("false", "假", Tag.NAMED),
NULL("null", "无", Tag.NAMED),
UNDERSCORE("_", Tag.NAMED),
ARROW("->"),
COLCOL("::"),
LPAREN("("),
RPAREN(")"),
LBRACE("{"),
RBRACE("}"),
LBRACKET("["),
RBRACKET("]"),
SEMI(";"),
COMMA(","),
DOT("."),
ELLIPSIS("..."),
EQ("="),
GT(">"),
LT("
BANG("!"),
TILDE("~"),
QUES("?"),
COLON(":"),
EQEQ("=="),
LTEQ("<="),
GTEQ(">="),
BANGEQ("!="),
AMPAMP("&&"),
BARBAR("||"),
PLUSPLUS("++"),
SUBSUB("--"),
PLUS("+"),
SUB("-"),
STAR("*"),
SLASH("/"),
AMP("&"),
BAR("|"),
CARET("^"),
PERCENT("%"),
LTLT("<
GTGT(">>"),
GTGTGT(">>>"),
PLUSEQ("+="),
SUBEQ("-="),
STAREQ("*="),
SLASHEQ("/="),
AMPEQ("&="),
BAREQ("|="),
CARETEQ("^="),
PERCENTEQ("%="),
LTLTEQ("<<="),
GTGTEQ(">>="),
GTGTGTEQ(">>>="),
MONKEYS_AT("@"),
CUSTOM;
public final String name;
public final String name_cn; //添加的中文关键词的String public final Tag tag;
//因为添加了一个中文关键字的String,初始化得简单修改 TokenKind() {
//this(null, Tag.DEFAULT); //原代码 this(null, null, Tag.DEFAULT); //新代码 }
TokenKind(String name) {
//this(name, Tag.DEFAULT); //原代码 this(name, null, Tag.DEFAULT); //新代码 }
TokenKind(Tag tag) {
//this(null, tag); //原代码 this(null, null, tag); //新代码 }
// 原有的构造函数,改为调用新的构造函数 TokenKind(String name, Tag tag) {
//this.name = name; //this.tag = tag; this(name, null, tag);
}
// 添加新的构造形式 TokenKind(String name, String name_cn) {
//this.name = name; //this.tag = tag; this(name, name_cn, Tag.DEFAULT);
}
// 新添加的构造函数 TokenKind(String name, String name_cn, Tag tag) {
this.name = name;
this.name_cn = name_cn;
this.tag = tag;
}
更多推荐
java关键字汉化
发布评论