1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.expression.spel.standard;
18
19
20
21
22
23
24
25
26 class Token {
27
28 TokenKind kind;
29
30 String data;
31
32 int startPos;
33
34 int endPos;
35
36
37
38
39
40
41
42
43 Token(TokenKind tokenKind, int startPos, int endPos) {
44 this.kind = tokenKind;
45 this.startPos = startPos;
46 this.endPos = endPos;
47 }
48
49 Token(TokenKind tokenKind, char[] tokenData, int startPos, int endPos) {
50 this(tokenKind, startPos, endPos);
51 this.data = new String(tokenData);
52 }
53
54
55 public TokenKind getKind() {
56 return this.kind;
57 }
58
59 @Override
60 public String toString() {
61 StringBuilder s = new StringBuilder();
62 s.append("[").append(this.kind.toString());
63 if (this.kind.hasPayload()) {
64 s.append(":").append(this.data);
65 }
66 s.append("]");
67 s.append("(").append(this.startPos).append(",").append(this.endPos).append(")");
68 return s.toString();
69 }
70
71 public boolean isIdentifier() {
72 return (this.kind == TokenKind.IDENTIFIER);
73 }
74
75 public boolean isNumericRelationalOperator() {
76 return (this.kind == TokenKind.GT || this.kind == TokenKind.GE || this.kind == TokenKind.LT ||
77 this.kind == TokenKind.LE || this.kind==TokenKind.EQ || this.kind==TokenKind.NE);
78 }
79
80 public String stringValue() {
81 return this.data;
82 }
83
84 public Token asInstanceOfToken() {
85 return new Token(TokenKind.INSTANCEOF, this.startPos, this.endPos);
86 }
87
88 public Token asMatchesToken() {
89 return new Token(TokenKind.MATCHES, this.startPos, this.endPos);
90 }
91
92 public Token asBetweenToken() {
93 return new Token(TokenKind.BETWEEN, this.startPos, this.endPos);
94 }
95
96 }