PageRenderTime 56ms CodeModel.GetById 10ms RepoModel.GetById 1ms app.codeStats 0ms

/core/src/main/java/com/reportgear/report/model/script/ExprParser.java

http://reportgear.googlecode.com/
Java | 722 lines | 486 code | 145 blank | 91 comment | 88 complexity | f05aa4c7cce4b4d1fcc9ffd7ccbfba67 MD5 | raw file
  1. package com.reportgear.report.model.script;
  2. // $ANTLR 3.2 Sep 23, 2009 12:02:23 D:\\antlr\\Expr.g 2010-01-27 21:34:16
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.antlr.runtime.BitSet;
  6. import org.antlr.runtime.NoViableAltException;
  7. import org.antlr.runtime.Parser;
  8. import org.antlr.runtime.RecognitionException;
  9. import org.antlr.runtime.RecognizerSharedState;
  10. import org.antlr.runtime.Token;
  11. import org.antlr.runtime.TokenStream;
  12. public class ExprParser extends Parser {
  13. public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "PLUS", "SUB",
  14. "FUNCNAME", "WS", "StringLiteral", "NumberLiteral", "VAR", "COLUMNROW", "Digit", "DigitNoZero", "HexDigit",
  15. "UnicodeEscape", "OctalEscape", "EscapeSequence", "BooleanLiteral", "'*'", "'/'", "'('", "')'", "','" };
  16. public static final int T__23 = 23;
  17. public static final int NumberLiteral = 9;
  18. public static final int T__22 = 22;
  19. public static final int T__21 = 21;
  20. public static final int T__20 = 20;
  21. public static final int SUB = 5;
  22. public static final int Digit = 12;
  23. public static final int EOF = -1;
  24. public static final int HexDigit = 14;
  25. public static final int StringLiteral = 8;
  26. public static final int T__19 = 19;
  27. public static final int DigitNoZero = 13;
  28. public static final int WS = 7;
  29. public static final int COLUMNROW = 11;
  30. public static final int UnicodeEscape = 15;
  31. public static final int PLUS = 4;
  32. public static final int VAR = 10;
  33. public static final int FUNCNAME = 6;
  34. public static final int EscapeSequence = 17;
  35. public static final int OctalEscape = 16;
  36. public static final int BooleanLiteral = 18;
  37. // delegates
  38. // delegators
  39. public ExprParser(TokenStream input) {
  40. this(input, new RecognizerSharedState());
  41. }
  42. public ExprParser(TokenStream input, RecognizerSharedState state) {
  43. super(input, state);
  44. }
  45. public String[] getTokenNames() {
  46. return ExprParser.tokenNames;
  47. }
  48. public String getGrammarFileName() {
  49. return "D:\\antlr\\Expr.g";
  50. }
  51. private ScriptContext scriptContext = ScriptContext.INSTANCE;
  52. // $ANTLR start "expr"
  53. // D:\\antlr\\Expr.g:17:1: expr returns [Object value] : ( (e= multExpr (
  54. // PLUS e= multExpr | '-' e= multExpr | PLUS e= strValue )* ) | (e= strValue
  55. // ( PLUS e= multExpr | PLUS e= strValue )* ) );
  56. public final Object expr() throws RecognitionException {
  57. Object value = null;
  58. Object e = null;
  59. try {
  60. // D:\\antlr\\Expr.g:18:5: ( (e= multExpr ( PLUS e= multExpr | '-'
  61. // e= multExpr | PLUS e= strValue )* ) | (e= strValue ( PLUS e=
  62. // multExpr | PLUS e= strValue )* ) )
  63. int alt3 = 2;
  64. int LA3_0 = input.LA(1);
  65. if ((LA3_0 == FUNCNAME || (LA3_0 >= NumberLiteral && LA3_0 <= COLUMNROW) || LA3_0 == 21)) {
  66. alt3 = 1;
  67. } else if ((LA3_0 == StringLiteral)) {
  68. alt3 = 2;
  69. } else {
  70. NoViableAltException nvae = new NoViableAltException("", 3, 0, input);
  71. throw nvae;
  72. }
  73. switch (alt3) {
  74. case 1:
  75. // D:\\antlr\\Expr.g:19:6: (e= multExpr ( PLUS e= multExpr | '-'
  76. // e= multExpr | PLUS e= strValue )* )
  77. {
  78. // D:\\antlr\\Expr.g:19:6: (e= multExpr ( PLUS e= multExpr | '-'
  79. // e= multExpr | PLUS e= strValue )* )
  80. // D:\\antlr\\Expr.g:20:7: e= multExpr ( PLUS e= multExpr | '-'
  81. // e= multExpr | PLUS e= strValue )*
  82. {
  83. pushFollow(FOLLOW_multExpr_in_expr68);
  84. e = multExpr();
  85. state._fsp--;
  86. value = e;
  87. // D:\\antlr\\Expr.g:21:10: ( PLUS e= multExpr | '-' e=
  88. // multExpr | PLUS e= strValue )*
  89. loop1: do {
  90. int alt1 = 4;
  91. int LA1_0 = input.LA(1);
  92. if ((LA1_0 == PLUS)) {
  93. int LA1_2 = input.LA(2);
  94. if ((LA1_2 == FUNCNAME || (LA1_2 >= NumberLiteral && LA1_2 <= COLUMNROW) || LA1_2 == 21)) {
  95. alt1 = 1;
  96. } else if ((LA1_2 == StringLiteral)) {
  97. alt1 = 3;
  98. }
  99. } else if ((LA1_0 == SUB)) {
  100. alt1 = 2;
  101. }
  102. switch (alt1) {
  103. case 1:
  104. // D:\\antlr\\Expr.g:21:14: PLUS e= multExpr
  105. {
  106. match(input, PLUS, FOLLOW_PLUS_in_expr85);
  107. pushFollow(FOLLOW_multExpr_in_expr89);
  108. e = multExpr();
  109. state._fsp--;
  110. value = ObjectUtils.add(value, e);
  111. }
  112. break;
  113. case 2:
  114. // D:\\antlr\\Expr.g:24:14: '-' e= multExpr
  115. {
  116. match(input, SUB, FOLLOW_SUB_in_expr106);
  117. pushFollow(FOLLOW_multExpr_in_expr110);
  118. e = multExpr();
  119. state._fsp--;
  120. value = ObjectUtils.sub(value, e);
  121. }
  122. break;
  123. case 3:
  124. // D:\\antlr\\Expr.g:27:12: PLUS e= strValue
  125. {
  126. match(input, PLUS, FOLLOW_PLUS_in_expr125);
  127. pushFollow(FOLLOW_strValue_in_expr130);
  128. e = strValue();
  129. state._fsp--;
  130. value = String.valueOf(value) + e;
  131. }
  132. break;
  133. default:
  134. break loop1;
  135. }
  136. } while (true);
  137. }
  138. }
  139. break;
  140. case 2:
  141. // D:\\antlr\\Expr.g:33:9: (e= strValue ( PLUS e= multExpr |
  142. // PLUS e= strValue )* )
  143. {
  144. // D:\\antlr\\Expr.g:33:9: (e= strValue ( PLUS e= multExpr |
  145. // PLUS e= strValue )* )
  146. // D:\\antlr\\Expr.g:34:10: e= strValue ( PLUS e= multExpr |
  147. // PLUS e= strValue )*
  148. {
  149. pushFollow(FOLLOW_strValue_in_expr186);
  150. e = strValue();
  151. state._fsp--;
  152. value = e;
  153. // D:\\antlr\\Expr.g:35:10: ( PLUS e= multExpr | PLUS e=
  154. // strValue )*
  155. loop2: do {
  156. int alt2 = 3;
  157. int LA2_0 = input.LA(1);
  158. if ((LA2_0 == PLUS)) {
  159. int LA2_2 = input.LA(2);
  160. if ((LA2_2 == FUNCNAME || (LA2_2 >= NumberLiteral && LA2_2 <= COLUMNROW) || LA2_2 == 21)) {
  161. alt2 = 1;
  162. } else if ((LA2_2 == StringLiteral)) {
  163. alt2 = 2;
  164. }
  165. }
  166. switch (alt2) {
  167. case 1:
  168. // D:\\antlr\\Expr.g:36:11: PLUS e= multExpr
  169. {
  170. match(input, PLUS, FOLLOW_PLUS_in_expr210);
  171. pushFollow(FOLLOW_multExpr_in_expr214);
  172. e = multExpr();
  173. state._fsp--;
  174. value = value + String.valueOf(e);
  175. }
  176. break;
  177. case 2:
  178. // D:\\antlr\\Expr.g:40:11: PLUS e= strValue
  179. {
  180. match(input, PLUS, FOLLOW_PLUS_in_expr239);
  181. pushFollow(FOLLOW_strValue_in_expr243);
  182. e = strValue();
  183. state._fsp--;
  184. value = value + String.valueOf(e);
  185. }
  186. break;
  187. default:
  188. break loop2;
  189. }
  190. } while (true);
  191. }
  192. }
  193. break;
  194. }
  195. } catch (RecognitionException re) {
  196. reportError(re);
  197. recover(input, re);
  198. } finally {
  199. }
  200. return value;
  201. }
  202. // $ANTLR end "expr"
  203. // $ANTLR start "multExpr"
  204. // D:\\antlr\\Expr.g:47:1: multExpr returns [Object value] : e= atom ( '*'
  205. // e= atom | '/' e= atom )* ;
  206. public final Object multExpr() throws RecognitionException {
  207. Object value = null;
  208. Object e = null;
  209. try {
  210. // D:\\antlr\\Expr.g:48:5: (e= atom ( '*' e= atom | '/' e= atom )* )
  211. // D:\\antlr\\Expr.g:48:9: e= atom ( '*' e= atom | '/' e= atom )*
  212. {
  213. pushFollow(FOLLOW_atom_in_multExpr293);
  214. e = atom();
  215. state._fsp--;
  216. value = e;
  217. // D:\\antlr\\Expr.g:49:6: ( '*' e= atom | '/' e= atom )*
  218. loop4: do {
  219. int alt4 = 3;
  220. int LA4_0 = input.LA(1);
  221. if ((LA4_0 == 19)) {
  222. alt4 = 1;
  223. } else if ((LA4_0 == 20)) {
  224. alt4 = 2;
  225. }
  226. switch (alt4) {
  227. case 1:
  228. // D:\\antlr\\Expr.g:50:7: '*' e= atom
  229. {
  230. match(input, 19, FOLLOW_19_in_multExpr312);
  231. pushFollow(FOLLOW_atom_in_multExpr316);
  232. e = atom();
  233. state._fsp--;
  234. value = ObjectUtils.mult(value, e);
  235. }
  236. break;
  237. case 2:
  238. // D:\\antlr\\Expr.g:53:8: '/' e= atom
  239. {
  240. match(input, 20, FOLLOW_20_in_multExpr327);
  241. pushFollow(FOLLOW_atom_in_multExpr331);
  242. e = atom();
  243. state._fsp--;
  244. value = ObjectUtils.div(value, e);
  245. }
  246. break;
  247. default:
  248. break loop4;
  249. }
  250. } while (true);
  251. }
  252. } catch (RecognitionException re) {
  253. reportError(re);
  254. recover(input, re);
  255. } finally {
  256. }
  257. return value;
  258. }
  259. // $ANTLR end "multExpr"
  260. // $ANTLR start "func"
  261. // D:\\antlr\\Expr.g:60:1: func returns [Object value] : FUNCNAME '(' ( ( WS
  262. // )* | e= args ) ')' ;
  263. public final Object func() throws RecognitionException {
  264. Object value = null;
  265. Token FUNCNAME1 = null;
  266. List<Object> e = null;
  267. try {
  268. // D:\\antlr\\Expr.g:61:2: ( FUNCNAME '(' ( ( WS )* | e= args ) ')'
  269. // )
  270. // D:\\antlr\\Expr.g:61:5: FUNCNAME '(' ( ( WS )* | e= args ) ')'
  271. {
  272. FUNCNAME1 = (Token) match(input, FUNCNAME, FOLLOW_FUNCNAME_in_func362);
  273. match(input, 21, FOLLOW_21_in_func364);
  274. // D:\\antlr\\Expr.g:62:3: ( ( WS )* | e= args )
  275. int alt6 = 2;
  276. int LA6_0 = input.LA(1);
  277. if ((LA6_0 == WS || LA6_0 == 22)) {
  278. alt6 = 1;
  279. } else if ((LA6_0 == FUNCNAME || (LA6_0 >= StringLiteral && LA6_0 <= COLUMNROW) || LA6_0 == 21)) {
  280. alt6 = 2;
  281. } else {
  282. NoViableAltException nvae = new NoViableAltException("", 6, 0, input);
  283. throw nvae;
  284. }
  285. switch (alt6) {
  286. case 1:
  287. // D:\\antlr\\Expr.g:62:5: ( WS )*
  288. {
  289. // D:\\antlr\\Expr.g:62:5: ( WS )*
  290. loop5: do {
  291. int alt5 = 2;
  292. int LA5_0 = input.LA(1);
  293. if ((LA5_0 == WS)) {
  294. alt5 = 1;
  295. }
  296. switch (alt5) {
  297. case 1:
  298. // D:\\antlr\\Expr.g:62:5: WS
  299. {
  300. match(input, WS, FOLLOW_WS_in_func371);
  301. }
  302. break;
  303. default:
  304. break loop5;
  305. }
  306. } while (true);
  307. value = scriptContext.getFuncValue((FUNCNAME1 != null ? FUNCNAME1.getText() : null), null);
  308. }
  309. break;
  310. case 2:
  311. // D:\\antlr\\Expr.g:64:4: e= args
  312. {
  313. pushFollow(FOLLOW_args_in_func385);
  314. e = args();
  315. state._fsp--;
  316. value = scriptContext.getFuncValue((FUNCNAME1 != null ? FUNCNAME1.getText() : null), e);
  317. }
  318. break;
  319. }
  320. match(input, 22, FOLLOW_22_in_func394);
  321. }
  322. } catch (RecognitionException re) {
  323. reportError(re);
  324. recover(input, re);
  325. } finally {
  326. }
  327. return value;
  328. }
  329. // $ANTLR end "func"
  330. // $ANTLR start "args"
  331. // D:\\antlr\\Expr.g:70:1: args returns [List<Object> value] : (e= expr ) (
  332. // ',' (e= strQuoted | e= expr ) )* ;
  333. public final List<Object> args() throws RecognitionException {
  334. List<Object> value = null;
  335. Object e = null;
  336. value = new ArrayList<Object>();
  337. try {
  338. // D:\\antlr\\Expr.g:74:6: ( (e= expr ) ( ',' (e= strQuoted | e=
  339. // expr ) )* )
  340. // D:\\antlr\\Expr.g:74:8: (e= expr ) ( ',' (e= strQuoted | e= expr
  341. // ) )*
  342. {
  343. // D:\\antlr\\Expr.g:74:8: (e= expr )
  344. // D:\\antlr\\Expr.g:74:9: e= expr
  345. {
  346. pushFollow(FOLLOW_expr_in_args423);
  347. e = expr();
  348. state._fsp--;
  349. value.add(e);
  350. }
  351. // D:\\antlr\\Expr.g:75:7: ( ',' (e= strQuoted | e= expr ) )*
  352. loop8: do {
  353. int alt8 = 2;
  354. int LA8_0 = input.LA(1);
  355. if ((LA8_0 == 23)) {
  356. alt8 = 1;
  357. }
  358. switch (alt8) {
  359. case 1:
  360. // D:\\antlr\\Expr.g:76:8: ',' (e= strQuoted | e= expr )
  361. {
  362. match(input, 23, FOLLOW_23_in_args443);
  363. // D:\\antlr\\Expr.g:76:12: (e= strQuoted | e= expr )
  364. int alt7 = 2;
  365. int LA7_0 = input.LA(1);
  366. if ((LA7_0 == StringLiteral)) {
  367. alt7 = 1;
  368. } else if ((LA7_0 == FUNCNAME || (LA7_0 >= NumberLiteral && LA7_0 <= COLUMNROW) || LA7_0 == 21)) {
  369. alt7 = 2;
  370. } else {
  371. NoViableAltException nvae = new NoViableAltException("", 7, 0, input);
  372. throw nvae;
  373. }
  374. switch (alt7) {
  375. case 1:
  376. // D:\\antlr\\Expr.g:77:9: e= strQuoted
  377. {
  378. pushFollow(FOLLOW_strQuoted_in_args457);
  379. e = strQuoted();
  380. state._fsp--;
  381. value.add(e);
  382. }
  383. break;
  384. case 2:
  385. // D:\\antlr\\Expr.g:79:9: e= expr
  386. {
  387. pushFollow(FOLLOW_expr_in_args480);
  388. e = expr();
  389. state._fsp--;
  390. value.add(e);
  391. }
  392. break;
  393. }
  394. }
  395. break;
  396. default:
  397. break loop8;
  398. }
  399. } while (true);
  400. }
  401. } catch (RecognitionException re) {
  402. reportError(re);
  403. recover(input, re);
  404. } finally {
  405. }
  406. return value;
  407. }
  408. // $ANTLR end "args"
  409. // $ANTLR start "strValue"
  410. // D:\\antlr\\Expr.g:84:1: strValue returns [Object value] : StringLiteral ;
  411. public final Object strValue() throws RecognitionException {
  412. Object value = null;
  413. Token StringLiteral2 = null;
  414. try {
  415. // D:\\antlr\\Expr.g:85:2: ( StringLiteral )
  416. // D:\\antlr\\Expr.g:85:8: StringLiteral
  417. {
  418. StringLiteral2 = (Token) match(input, StringLiteral, FOLLOW_StringLiteral_in_strValue533);
  419. String v = (StringLiteral2 != null ? StringLiteral2.getText() : null);
  420. value = v.substring(1, v.length() - 1);
  421. }
  422. } catch (RecognitionException re) {
  423. reportError(re);
  424. recover(input, re);
  425. } finally {
  426. }
  427. return value;
  428. }
  429. // $ANTLR end "strValue"
  430. // $ANTLR start "strQuoted"
  431. // D:\\antlr\\Expr.g:91:1: strQuoted returns [Object value] : StringLiteral
  432. // ;
  433. public final Object strQuoted() throws RecognitionException {
  434. Object value = null;
  435. Token StringLiteral3 = null;
  436. try {
  437. // D:\\antlr\\Expr.g:92:2: ( StringLiteral )
  438. // D:\\antlr\\Expr.g:92:8: StringLiteral
  439. {
  440. StringLiteral3 = (Token) match(input, StringLiteral, FOLLOW_StringLiteral_in_strQuoted555);
  441. value = (StringLiteral3 != null ? StringLiteral3.getText() : null);
  442. }
  443. } catch (RecognitionException re) {
  444. reportError(re);
  445. recover(input, re);
  446. } finally {
  447. }
  448. return value;
  449. }
  450. // $ANTLR end "strQuoted"
  451. // $ANTLR start "atom"
  452. // D:\\antlr\\Expr.g:97:1: atom returns [Object value] : ( NumberLiteral |
  453. // VAR | func | COLUMNROW | '(' expr ')' );
  454. public final Object atom() throws RecognitionException {
  455. Object value = null;
  456. Token NumberLiteral4 = null;
  457. Token VAR5 = null;
  458. Token COLUMNROW7 = null;
  459. Object func6 = null;
  460. Object expr8 = null;
  461. try {
  462. // D:\\antlr\\Expr.g:98:6: ( NumberLiteral | VAR | func | COLUMNROW
  463. // | '(' expr ')' )
  464. int alt9 = 5;
  465. switch (input.LA(1)) {
  466. case NumberLiteral: {
  467. alt9 = 1;
  468. }
  469. break;
  470. case VAR: {
  471. alt9 = 2;
  472. }
  473. break;
  474. case FUNCNAME: {
  475. alt9 = 3;
  476. }
  477. break;
  478. case COLUMNROW: {
  479. alt9 = 4;
  480. }
  481. break;
  482. case 21: {
  483. alt9 = 5;
  484. }
  485. break;
  486. default:
  487. NoViableAltException nvae = new NoViableAltException("", 9, 0, input);
  488. throw nvae;
  489. }
  490. switch (alt9) {
  491. case 1:
  492. // D:\\antlr\\Expr.g:98:11: NumberLiteral
  493. {
  494. NumberLiteral4 = (Token) match(input, NumberLiteral, FOLLOW_NumberLiteral_in_atom584);
  495. value = (NumberLiteral4 != null ? NumberLiteral4.getText() : null);
  496. }
  497. break;
  498. case 2:
  499. // D:\\antlr\\Expr.g:99:10: VAR
  500. {
  501. VAR5 = (Token) match(input, VAR, FOLLOW_VAR_in_atom597);
  502. value = scriptContext.getVariable((VAR5 != null ? VAR5.getText() : null));
  503. }
  504. break;
  505. case 3:
  506. // D:\\antlr\\Expr.g:100:11: func
  507. {
  508. pushFollow(FOLLOW_func_in_atom611);
  509. func6 = func();
  510. state._fsp--;
  511. value = func6;
  512. }
  513. break;
  514. case 4:
  515. // D:\\antlr\\Expr.g:101:11: COLUMNROW
  516. {
  517. COLUMNROW7 = (Token) match(input, COLUMNROW, FOLLOW_COLUMNROW_in_atom625);
  518. value = scriptContext.getCellValue((COLUMNROW7 != null ? COLUMNROW7.getText() : null));
  519. }
  520. break;
  521. case 5:
  522. // D:\\antlr\\Expr.g:102:11: '(' expr ')'
  523. {
  524. match(input, 21, FOLLOW_21_in_atom639);
  525. pushFollow(FOLLOW_expr_in_atom641);
  526. expr8 = expr();
  527. state._fsp--;
  528. match(input, 22, FOLLOW_22_in_atom643);
  529. value = expr8;
  530. }
  531. break;
  532. }
  533. } catch (RecognitionException re) {
  534. reportError(re);
  535. recover(input, re);
  536. } finally {
  537. }
  538. return value;
  539. }
  540. // $ANTLR end "atom"
  541. // Delegated rules
  542. public static final BitSet FOLLOW_multExpr_in_expr68 = new BitSet(new long[] { 0x0000000000000032L });
  543. public static final BitSet FOLLOW_PLUS_in_expr85 = new BitSet(new long[] { 0x0000000000200E40L });
  544. public static final BitSet FOLLOW_multExpr_in_expr89 = new BitSet(new long[] { 0x0000000000000032L });
  545. public static final BitSet FOLLOW_SUB_in_expr106 = new BitSet(new long[] { 0x0000000000200E40L });
  546. public static final BitSet FOLLOW_multExpr_in_expr110 = new BitSet(new long[] { 0x0000000000000032L });
  547. public static final BitSet FOLLOW_PLUS_in_expr125 = new BitSet(new long[] { 0x0000000000000100L });
  548. public static final BitSet FOLLOW_strValue_in_expr130 = new BitSet(new long[] { 0x0000000000000032L });
  549. public static final BitSet FOLLOW_strValue_in_expr186 = new BitSet(new long[] { 0x0000000000000012L });
  550. public static final BitSet FOLLOW_PLUS_in_expr210 = new BitSet(new long[] { 0x0000000000200E40L });
  551. public static final BitSet FOLLOW_multExpr_in_expr214 = new BitSet(new long[] { 0x0000000000000012L });
  552. public static final BitSet FOLLOW_PLUS_in_expr239 = new BitSet(new long[] { 0x0000000000000100L });
  553. public static final BitSet FOLLOW_strValue_in_expr243 = new BitSet(new long[] { 0x0000000000000012L });
  554. public static final BitSet FOLLOW_atom_in_multExpr293 = new BitSet(new long[] { 0x0000000000180002L });
  555. public static final BitSet FOLLOW_19_in_multExpr312 = new BitSet(new long[] { 0x0000000000200E40L });
  556. public static final BitSet FOLLOW_atom_in_multExpr316 = new BitSet(new long[] { 0x0000000000180002L });
  557. public static final BitSet FOLLOW_20_in_multExpr327 = new BitSet(new long[] { 0x0000000000200E40L });
  558. public static final BitSet FOLLOW_atom_in_multExpr331 = new BitSet(new long[] { 0x0000000000180002L });
  559. public static final BitSet FOLLOW_FUNCNAME_in_func362 = new BitSet(new long[] { 0x0000000000200000L });
  560. public static final BitSet FOLLOW_21_in_func364 = new BitSet(new long[] { 0x0000000000600FC0L });
  561. public static final BitSet FOLLOW_WS_in_func371 = new BitSet(new long[] { 0x0000000000400080L });
  562. public static final BitSet FOLLOW_args_in_func385 = new BitSet(new long[] { 0x0000000000400000L });
  563. public static final BitSet FOLLOW_22_in_func394 = new BitSet(new long[] { 0x0000000000000002L });
  564. public static final BitSet FOLLOW_expr_in_args423 = new BitSet(new long[] { 0x0000000000800002L });
  565. public static final BitSet FOLLOW_23_in_args443 = new BitSet(new long[] { 0x0000000000600FC0L });
  566. public static final BitSet FOLLOW_strQuoted_in_args457 = new BitSet(new long[] { 0x0000000000800002L });
  567. public static final BitSet FOLLOW_expr_in_args480 = new BitSet(new long[] { 0x0000000000800002L });
  568. public static final BitSet FOLLOW_StringLiteral_in_strValue533 = new BitSet(new long[] { 0x0000000000000002L });
  569. public static final BitSet FOLLOW_StringLiteral_in_strQuoted555 = new BitSet(new long[] { 0x0000000000000002L });
  570. public static final BitSet FOLLOW_NumberLiteral_in_atom584 = new BitSet(new long[] { 0x0000000000000002L });
  571. public static final BitSet FOLLOW_VAR_in_atom597 = new BitSet(new long[] { 0x0000000000000002L });
  572. public static final BitSet FOLLOW_func_in_atom611 = new BitSet(new long[] { 0x0000000000000002L });
  573. public static final BitSet FOLLOW_COLUMNROW_in_atom625 = new BitSet(new long[] { 0x0000000000000002L });
  574. public static final BitSet FOLLOW_21_in_atom639 = new BitSet(new long[] { 0x0000000000600FC0L });
  575. public static final BitSet FOLLOW_expr_in_atom641 = new BitSet(new long[] { 0x0000000000400000L });
  576. public static final BitSet FOLLOW_22_in_atom643 = new BitSet(new long[] { 0x0000000000000002L });
  577. }