1 | <?php |
||
5 | class Token |
||
6 | { |
||
7 | const TOKEN_ADD = "+"; |
||
8 | const TOKEN_SUB = "-"; |
||
9 | const TOKEN_MUL = "*"; |
||
10 | const TOKEN_DIV = "/"; |
||
11 | const TOKEN_OPEN = "("; |
||
12 | const TOKEN_CLOSE = ")"; |
||
13 | const TOKEN_COMA = ","; |
||
14 | const TOKEN_SEMICOLON = ";"; |
||
15 | const TOKEN_GT = ">"; |
||
16 | const TOKEN_LT = "<"; |
||
17 | const TOKEN_LE = "<="; |
||
18 | const TOKEN_GE = ">="; |
||
19 | const TOKEN_EQ = "="; |
||
20 | const TOKEN_NE = "<>"; |
||
21 | const TOKEN_CONCAT = "&"; |
||
22 | const TOKEN_ARG = "arg"; |
||
23 | |||
24 | protected static $ptgMap = array( |
||
25 | self::TOKEN_MUL => 'ptgMul', |
||
26 | self::TOKEN_DIV => 'ptgDiv', |
||
27 | self::TOKEN_ADD => 'ptgAdd', |
||
28 | self::TOKEN_SUB => 'ptgSub', |
||
29 | self::TOKEN_LT => 'ptgLT', |
||
30 | self::TOKEN_GT => 'ptgGT', |
||
31 | self::TOKEN_LE => 'ptgLE', |
||
32 | self::TOKEN_GE => 'ptgGE', |
||
33 | self::TOKEN_EQ => 'ptgEQ', |
||
34 | self::TOKEN_NE => 'ptgNE', |
||
35 | self::TOKEN_CONCAT => 'ptgConcat', |
||
36 | ); |
||
37 | |||
38 | protected static $deterministicMap = array( |
||
39 | self::TOKEN_MUL => 1, |
||
40 | self::TOKEN_DIV => 1, |
||
41 | self::TOKEN_ADD => 1, |
||
42 | self::TOKEN_SUB => 1, |
||
43 | self::TOKEN_LE => 1, |
||
44 | self::TOKEN_GE => 1, |
||
45 | self::TOKEN_EQ => 1, |
||
46 | self::TOKEN_NE => 1, |
||
47 | self::TOKEN_CONCAT => 1, |
||
48 | self::TOKEN_COMA => 1, |
||
49 | self::TOKEN_SEMICOLON => 1, |
||
50 | self::TOKEN_OPEN => 1, |
||
51 | self::TOKEN_CLOSE => 1 |
||
52 | ); |
||
53 | |||
54 | protected static $lookaheadMap = array( |
||
55 | self::TOKEN_GT => array('='), |
||
56 | self::TOKEN_LT => array('=', '>'), |
||
57 | ); |
||
58 | |||
59 | protected static $comparisonTokens = array( |
||
60 | self::TOKEN_LT, |
||
61 | self::TOKEN_GT, |
||
62 | self::TOKEN_LE, |
||
63 | self::TOKEN_GE, |
||
64 | self::TOKEN_EQ, |
||
65 | self::TOKEN_NE |
||
66 | ); |
||
67 | |||
68 | /** |
||
69 | * Reference A1 or $A$1 |
||
70 | * @param $token |
||
71 | * |
||
72 | * @return boolean |
||
73 | */ |
||
74 | public static function isReference($token) |
||
78 | |||
79 | /** |
||
80 | * External reference Sheet1!A1 or Sheet1:Sheet2!A1 or 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1 |
||
81 | * @param $token |
||
82 | * |
||
83 | * @return boolean |
||
84 | */ |
||
85 | public static function isExternalReference($token) |
||
90 | |||
91 | /** |
||
92 | * @param $token |
||
93 | * |
||
94 | * @return boolean |
||
95 | */ |
||
96 | public static function isAnyReference($token) |
||
100 | |||
101 | /** |
||
102 | * @param $token |
||
103 | * |
||
104 | * @return boolean |
||
105 | */ |
||
106 | public static function isAnyRange($token) |
||
110 | |||
111 | /** |
||
112 | * Range A1:A2 or A1..A2 |
||
113 | * @param $token |
||
114 | * |
||
115 | * @return boolean |
||
116 | */ |
||
117 | public static function isRange($token) |
||
121 | |||
122 | /** |
||
123 | * Range A1:A2 or $A$1:$A$2 |
||
124 | * @param $token |
||
125 | * |
||
126 | * @return boolean |
||
127 | */ |
||
128 | public static function isRangeWithColon($token) |
||
132 | |||
133 | /** |
||
134 | * Range A1..A2 or $A$1..$A$2 |
||
135 | * @param $token |
||
136 | * |
||
137 | * @return boolean |
||
138 | */ |
||
139 | public static function isRangeWithDots($token) |
||
143 | |||
144 | /** |
||
145 | * External range: |
||
146 | * Sheet1!A1:B2 or Sheet1:Sheet2!A1:B2 |
||
147 | * 'Sheet1'!A1:B2 or 'Sheet1:Sheet2'!A1:B2 |
||
148 | * |
||
149 | * @param $token |
||
150 | * |
||
151 | * @return boolean |
||
152 | */ |
||
153 | public static function isExternalRange($token) |
||
167 | |||
168 | /** |
||
169 | * String |
||
170 | * @param $token |
||
171 | * |
||
172 | * @return boolean |
||
173 | */ |
||
174 | public static function isString($token) |
||
178 | |||
179 | /** |
||
180 | * @param $token |
||
181 | * |
||
182 | * @return boolean |
||
183 | */ |
||
184 | public static function isFunctionCall($token) |
||
192 | |||
193 | /** |
||
194 | * @param $token |
||
195 | * |
||
196 | * @return bool |
||
197 | */ |
||
198 | public static function isMulOrDiv($token) |
||
202 | |||
203 | /** |
||
204 | * @param $token |
||
205 | * |
||
206 | * @return bool |
||
207 | */ |
||
208 | public static function isAddOrSub($token) |
||
212 | |||
213 | /** |
||
214 | * @param $token |
||
215 | * |
||
216 | * @return bool |
||
217 | */ |
||
218 | public static function isCommaOrSemicolon($token) |
||
222 | |||
223 | /** |
||
224 | * @param $token |
||
225 | * |
||
226 | * @return bool |
||
227 | */ |
||
228 | public static function isComparison($token) |
||
232 | |||
233 | /** |
||
234 | * @param $token |
||
235 | * |
||
236 | * @return bool |
||
237 | */ |
||
238 | public static function isLtOrGt($token) |
||
243 | |||
244 | /** |
||
245 | * @param $token |
||
246 | * |
||
247 | * @return bool |
||
248 | */ |
||
249 | public static function isConcat($token) |
||
253 | |||
254 | /** |
||
255 | * @param $token |
||
256 | * |
||
257 | * @return string|null |
||
258 | */ |
||
259 | public static function getPtg($token) |
||
267 | |||
268 | /** |
||
269 | * @param $token |
||
270 | * |
||
271 | * @return bool |
||
272 | */ |
||
273 | public static function isDeterministic($token) |
||
277 | |||
278 | /** |
||
279 | * @param $token |
||
280 | * @param $lookahead |
||
281 | * |
||
282 | * @return bool |
||
283 | */ |
||
284 | public static function isPossibleLookahead($token, $lookahead) |
||
292 | |||
293 | /** |
||
294 | * @param $token |
||
295 | * |
||
296 | * @return bool |
||
297 | */ |
||
298 | public static function isArg($token) |
||
302 | } |
||
303 |