-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathToken.java
More file actions
39 lines (33 loc) · 1.25 KB
/
Token.java
File metadata and controls
39 lines (33 loc) · 1.25 KB
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
// Token.java
import java.lang.Enum;
enum Token {
BOOL("bool"),CHAR("char"), ELSE("else"), FALSE("false"), FLOAT("float"),
STRING("string"), IF("if"), INT("int"), TRUE("true"), WHILE("while"),
RETURN("return"), VOID("void"), FUN("fun"), THEN("then"), LET("let"),
IN("in"), END("end"), READ("read"), PRINT("print"), DO("do"),
EOF("<<EOF>>"),
LBRACE("{"), RBRACE("}"), LBRACKET("["), RBRACKET("]"),
LPAREN("("), RPAREN(")"), SEMICOLON(";"), COMMA(","),
ASSIGN("="), EQUAL("=="), LT("<"), LTEQ("<="), GT(">"),
GTEQ(">="), NOT("!"), NOTEQ("!="), PLUS("+"), MINUS("-"),
MULTIPLY("*"), DIVIDE("/"), AND("&"), OR("|"), ID(""),
NUMBER(""), STRLITERAL("");
private String value;
private Token (String v) {
value = v;
}
public String value( ) { return value; }
public Token setValue(String v) {
this.value = v;
return this;
}
public static Token idORkeyword (String name) {
for (Token token : Token.values()) {
if (token.value().equals(name))
return token;
if (token == Token.EOF)
break;
}
return ID.setValue(name);
} // keyword or ID
}