PreprocessorLexer.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:35k
源码类别:

编译器/解释器

开发平台:

Others

  1. // $ANTLR 2.7.0a11: "preproc.g" -> "PreprocessorLexer.java"$
  2. package antlr.preprocessor;
  3. import java.io.InputStream;
  4. import antlr.TokenStreamException;
  5. import antlr.TokenStreamIOException;
  6. import antlr.TokenStreamRecognitionException;
  7. import antlr.CharStreamException;
  8. import antlr.CharStreamIOException;
  9. import antlr.ANTLRException;
  10. import java.io.Reader;
  11. import java.util.Hashtable;
  12. import antlr.CharScanner;
  13. import antlr.InputBuffer;
  14. import antlr.ByteBuffer;
  15. import antlr.CharBuffer;
  16. import antlr.Token;
  17. import antlr.CommonToken;
  18. import antlr.RecognitionException;
  19. import antlr.NoViableAltForCharException;
  20. import antlr.MismatchedCharException;
  21. import antlr.TokenStream;
  22. import antlr.ANTLRHashString;
  23. import antlr.LexerSharedInputState;
  24. import antlr.collections.impl.BitSet;
  25. public class PreprocessorLexer extends antlr.CharScanner implements PreprocessorTokenTypes, TokenStream
  26.  {
  27. public PreprocessorLexer(InputStream in) {
  28. this(new ByteBuffer(in));
  29. }
  30. public PreprocessorLexer(Reader in) {
  31. this(new CharBuffer(in));
  32. }
  33. public PreprocessorLexer(InputBuffer ib) {
  34. this(new LexerSharedInputState(ib));
  35. }
  36. public PreprocessorLexer(LexerSharedInputState state) {
  37. super(state);
  38. literals = new Hashtable();
  39. literals.put(new ANTLRHashString("catch", this), new Integer(23));
  40. literals.put(new ANTLRHashString("exception", this), new Integer(22));
  41. literals.put(new ANTLRHashString("class", this), new Integer(7));
  42. literals.put(new ANTLRHashString("public", this), new Integer(17));
  43. literals.put(new ANTLRHashString("tokens", this), new Integer(4));
  44. literals.put(new ANTLRHashString("returns", this), new Integer(20));
  45. literals.put(new ANTLRHashString("private", this), new Integer(16));
  46. literals.put(new ANTLRHashString("protected", this), new Integer(15));
  47. literals.put(new ANTLRHashString("extends", this), new Integer(9));
  48. caseSensitiveLiterals = true;
  49. setCaseSensitive(true);
  50. }
  51. public Token nextToken() throws TokenStreamException {
  52. Token theRetToken=null;
  53. tryAgain:
  54. for (;;) {
  55. Token _token = null;
  56. int _ttype = Token.INVALID_TYPE;
  57. resetText();
  58. try {   // for char stream error handling
  59. try {   // for lexical error handling
  60. switch ( LA(1)) {
  61. case ':':
  62. {
  63. mRULE_BLOCK(true);
  64. theRetToken=_returnToken;
  65. break;
  66. }
  67. case 't':  case 'n':  case 'r':  case ' ':
  68. {
  69. mWS(true);
  70. theRetToken=_returnToken;
  71. break;
  72. }
  73. case '(':
  74. {
  75. mSUBRULE_BLOCK(true);
  76. theRetToken=_returnToken;
  77. break;
  78. }
  79. case '/':
  80. {
  81. mCOMMENT(true);
  82. theRetToken=_returnToken;
  83. break;
  84. }
  85. case '{':
  86. {
  87. mACTION(true);
  88. theRetToken=_returnToken;
  89. break;
  90. }
  91. case '"':
  92. {
  93. mSTRING_LITERAL(true);
  94. theRetToken=_returnToken;
  95. break;
  96. }
  97. case ''':
  98. {
  99. mCHAR_LITERAL(true);
  100. theRetToken=_returnToken;
  101. break;
  102. }
  103. case '!':
  104. {
  105. mBANG(true);
  106. theRetToken=_returnToken;
  107. break;
  108. }
  109. case ';':
  110. {
  111. mSEMI(true);
  112. theRetToken=_returnToken;
  113. break;
  114. }
  115. case '}':
  116. {
  117. mRCURLY(true);
  118. theRetToken=_returnToken;
  119. break;
  120. }
  121. case 'A':  case 'B':  case 'C':  case 'D':
  122. case 'E':  case 'F':  case 'G':  case 'H':
  123. case 'I':  case 'J':  case 'K':  case 'L':
  124. case 'M':  case 'N':  case 'O':  case 'P':
  125. case 'Q':  case 'R':  case 'S':  case 'T':
  126. case 'U':  case 'V':  case 'W':  case 'X':
  127. case 'Y':  case 'Z':  case '_':  case 'a':
  128. case 'b':  case 'c':  case 'd':  case 'e':
  129. case 'f':  case 'g':  case 'h':  case 'i':
  130. case 'j':  case 'k':  case 'l':  case 'm':
  131. case 'n':  case 'o':  case 'p':  case 'q':
  132. case 'r':  case 's':  case 't':  case 'u':
  133. case 'v':  case 'w':  case 'x':  case 'y':
  134. case 'z':
  135. {
  136. mID_OR_KEYWORD(true);
  137. theRetToken=_returnToken;
  138. break;
  139. }
  140. case '=':
  141. {
  142. mASSIGN_RHS(true);
  143. theRetToken=_returnToken;
  144. break;
  145. }
  146. case '[':
  147. {
  148. mARG_ACTION(true);
  149. theRetToken=_returnToken;
  150. break;
  151. }
  152. default:
  153. {
  154. if (LA(1)==EOF_CHAR) {uponEOF(); _returnToken = makeToken(Token.EOF_TYPE);}
  155. else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());}
  156. }
  157. }
  158. if ( _returnToken==null ) continue tryAgain; // found SKIP token
  159. _ttype = _returnToken.getType();
  160. _ttype = testLiteralsTable(_ttype);
  161. _returnToken.setType(_ttype);
  162. return _returnToken;
  163. }
  164. catch (RecognitionException e) {
  165. reportError(e);
  166. consume();
  167. }
  168. }
  169. catch (CharStreamException cse) {
  170. if ( cse instanceof CharStreamIOException ) {
  171. throw new TokenStreamIOException(((CharStreamIOException)cse).io);
  172. }
  173. else {
  174. throw new TokenStreamException(cse.getMessage());
  175. }
  176. }
  177. }
  178. }
  179. public final void mRULE_BLOCK(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  180. int _ttype; Token _token=null; int _begin=text.length();
  181. _ttype = RULE_BLOCK;
  182. int _saveIndex;
  183. match(':');
  184. {
  185. if ((_tokenSet_0.member(LA(1))) && (_tokenSet_1.member(LA(2)))) {
  186. _saveIndex=text.length();
  187. mWS(false);
  188. text.setLength(_saveIndex);
  189. }
  190. else if ((_tokenSet_1.member(LA(1))) && (true)) {
  191. }
  192. else {
  193. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  194. }
  195. }
  196. mALT(false);
  197. {
  198. switch ( LA(1)) {
  199. case 't':  case 'n':  case 'r':  case ' ':
  200. {
  201. _saveIndex=text.length();
  202. mWS(false);
  203. text.setLength(_saveIndex);
  204. break;
  205. }
  206. case ';':  case '|':
  207. {
  208. break;
  209. }
  210. default:
  211. {
  212. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  213. }
  214. }
  215. }
  216. {
  217. _loop38:
  218. do {
  219. if ((LA(1)=='|')) {
  220. match('|');
  221. {
  222. if ((_tokenSet_0.member(LA(1))) && (_tokenSet_1.member(LA(2)))) {
  223. _saveIndex=text.length();
  224. mWS(false);
  225. text.setLength(_saveIndex);
  226. }
  227. else if ((_tokenSet_1.member(LA(1))) && (true)) {
  228. }
  229. else {
  230. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  231. }
  232. }
  233. mALT(false);
  234. {
  235. switch ( LA(1)) {
  236. case 't':  case 'n':  case 'r':  case ' ':
  237. {
  238. _saveIndex=text.length();
  239. mWS(false);
  240. text.setLength(_saveIndex);
  241. break;
  242. }
  243. case ';':  case '|':
  244. {
  245. break;
  246. }
  247. default:
  248. {
  249. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  250. }
  251. }
  252. }
  253. }
  254. else {
  255. break _loop38;
  256. }
  257. } while (true);
  258. }
  259. match(';');
  260. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  261. _token = makeToken(_ttype);
  262. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  263. }
  264. _returnToken = _token;
  265. }
  266. public final void mWS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  267. int _ttype; Token _token=null; int _begin=text.length();
  268. _ttype = WS;
  269. int _saveIndex;
  270. {
  271. int _cnt74=0;
  272. _loop74:
  273. do {
  274. if ((LA(1)==' ') && (true)) {
  275. match(' ');
  276. }
  277. else if ((LA(1)=='t') && (true)) {
  278. match('t');
  279. }
  280. else if ((LA(1)=='n'||LA(1)=='r') && (true)) {
  281. mNEWLINE(false);
  282. }
  283. else {
  284. if ( _cnt74>=1 ) { break _loop74; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());}
  285. }
  286. _cnt74++;
  287. } while (true);
  288. }
  289. _ttype = Token.SKIP;
  290. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  291. _token = makeToken(_ttype);
  292. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  293. }
  294. _returnToken = _token;
  295. }
  296. protected final void mALT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  297. int _ttype; Token _token=null; int _begin=text.length();
  298. _ttype = ALT;
  299. int _saveIndex;
  300. {
  301. _loop49:
  302. do {
  303. if ((_tokenSet_2.member(LA(1))) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  304. mELEMENT(false);
  305. }
  306. else {
  307. break _loop49;
  308. }
  309. } while (true);
  310. }
  311. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  312. _token = makeToken(_ttype);
  313. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  314. }
  315. _returnToken = _token;
  316. }
  317. public final void mSUBRULE_BLOCK(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  318. int _ttype; Token _token=null; int _begin=text.length();
  319. _ttype = SUBRULE_BLOCK;
  320. int _saveIndex;
  321. match('(');
  322. {
  323. if ((_tokenSet_0.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
  324. mWS(false);
  325. }
  326. else if ((_tokenSet_3.member(LA(1))) && (true)) {
  327. }
  328. else {
  329. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  330. }
  331. }
  332. mALT(false);
  333. {
  334. _loop44:
  335. do {
  336. if ((_tokenSet_4.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
  337. {
  338. switch ( LA(1)) {
  339. case 't':  case 'n':  case 'r':  case ' ':
  340. {
  341. mWS(false);
  342. break;
  343. }
  344. case '|':
  345. {
  346. break;
  347. }
  348. default:
  349. {
  350. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  351. }
  352. }
  353. }
  354. match('|');
  355. {
  356. if ((_tokenSet_0.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
  357. mWS(false);
  358. }
  359. else if ((_tokenSet_3.member(LA(1))) && (true)) {
  360. }
  361. else {
  362. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  363. }
  364. }
  365. mALT(false);
  366. }
  367. else {
  368. break _loop44;
  369. }
  370. } while (true);
  371. }
  372. {
  373. switch ( LA(1)) {
  374. case 't':  case 'n':  case 'r':  case ' ':
  375. {
  376. mWS(false);
  377. break;
  378. }
  379. case ')':
  380. {
  381. break;
  382. }
  383. default:
  384. {
  385. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  386. }
  387. }
  388. }
  389. match(')');
  390. {
  391. if ((LA(1)=='=') && (LA(2)=='>')) {
  392. match("=>");
  393. }
  394. else if ((LA(1)=='*') && (true)) {
  395. match('*');
  396. }
  397. else if ((LA(1)=='+') && (true)) {
  398. match('+');
  399. }
  400. else if ((LA(1)=='?') && (true)) {
  401. match('?');
  402. }
  403. else {
  404. }
  405. }
  406. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  407. _token = makeToken(_ttype);
  408. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  409. }
  410. _returnToken = _token;
  411. }
  412. protected final void mELEMENT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  413. int _ttype; Token _token=null; int _begin=text.length();
  414. _ttype = ELEMENT;
  415. int _saveIndex;
  416. switch ( LA(1)) {
  417. case '/':
  418. {
  419. mCOMMENT(false);
  420. break;
  421. }
  422. case '{':
  423. {
  424. mACTION(false);
  425. break;
  426. }
  427. case '"':
  428. {
  429. mSTRING_LITERAL(false);
  430. break;
  431. }
  432. case ''':
  433. {
  434. mCHAR_LITERAL(false);
  435. break;
  436. }
  437. case '(':
  438. {
  439. mSUBRULE_BLOCK(false);
  440. break;
  441. }
  442. case 'n':  case 'r':
  443. {
  444. mNEWLINE(false);
  445. break;
  446. }
  447. case '3':  case '4':  case '5':  case '6':
  448. case '7':  case '10':  case 't':  case '13':
  449. case '14':  case '16':  case '17':  case '20':
  450. case '21':  case '22':  case '23':  case '24':
  451. case '25':  case '26':  case '27':  case '30':
  452. case '31':  case '32':  case '33':  case '34':
  453. case '35':  case '36':  case '37':  case ' ':
  454. case '!':  case '#':  case '$':  case '%':
  455. case '&':  case '*':  case '+':  case ',':
  456. case '-':  case '.':  case '0':  case '1':
  457. case '2':  case '3':  case '4':  case '5':
  458. case '6':  case '7':  case '8':  case '9':
  459. case ':':  case '<':  case '=':  case '>':
  460. case '?':  case '@':  case 'A':  case 'B':
  461. case 'C':  case 'D':  case 'E':  case 'F':
  462. case 'G':  case 'H':  case 'I':  case 'J':
  463. case 'K':  case 'L':  case 'M':  case 'N':
  464. case 'O':  case 'P':  case 'Q':  case 'R':
  465. case 'S':  case 'T':  case 'U':  case 'V':
  466. case 'W':  case 'X':  case 'Y':  case 'Z':
  467. case '[':  case '\':  case ']':  case '^':
  468. case '_':  case '`':  case 'a':  case 'b':
  469. case 'c':  case 'd':  case 'e':  case 'f':
  470. case 'g':  case 'h':  case 'i':  case 'j':
  471. case 'k':  case 'l':  case 'm':  case 'n':
  472. case 'o':  case 'p':  case 'q':  case 'r':
  473. case 's':  case 't':  case 'u':  case 'v':
  474. case 'w':  case 'x':  case 'y':  case 'z':
  475. case '|':  case '}':  case '~':
  476. {
  477. {
  478. match(_tokenSet_5);
  479. }
  480. break;
  481. }
  482. default:
  483. {
  484. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  485. }
  486. }
  487. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  488. _token = makeToken(_ttype);
  489. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  490. }
  491. _returnToken = _token;
  492. }
  493. public final void mCOMMENT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  494. int _ttype; Token _token=null; int _begin=text.length();
  495. _ttype = COMMENT;
  496. int _saveIndex;
  497. {
  498. if ((LA(1)=='/') && (LA(2)=='/')) {
  499. mSL_COMMENT(false);
  500. }
  501. else if ((LA(1)=='/') && (LA(2)=='*')) {
  502. mML_COMMENT(false);
  503. }
  504. else {
  505. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  506. }
  507. }
  508. _ttype = Token.SKIP;
  509. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  510. _token = makeToken(_ttype);
  511. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  512. }
  513. _returnToken = _token;
  514. }
  515. public final void mACTION(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  516. int _ttype; Token _token=null; int _begin=text.length();
  517. _ttype = ACTION;
  518. int _saveIndex;
  519. match('{');
  520. {
  521. _loop104:
  522. do {
  523. // nongreedy exit test
  524. if ((LA(1)=='}') && (true)) break _loop104;
  525. if ((LA(1)=='n'||LA(1)=='r') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  526. mNEWLINE(false);
  527. }
  528. else if ((LA(1)=='{') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  529. mACTION(false);
  530. }
  531. else if ((LA(1)==''') && (_tokenSet_6.member(LA(2)))) {
  532. mCHAR_LITERAL(false);
  533. }
  534. else if ((LA(1)=='/') && (LA(2)=='*'||LA(2)=='/')) {
  535. mCOMMENT(false);
  536. }
  537. else if ((LA(1)=='"') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  538. mSTRING_LITERAL(false);
  539. }
  540. else if (((LA(1) >= '3' && LA(1) <= '~')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  541. matchNot(EOF_CHAR);
  542. }
  543. else {
  544. break _loop104;
  545. }
  546. } while (true);
  547. }
  548. match('}');
  549. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  550. _token = makeToken(_ttype);
  551. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  552. }
  553. _returnToken = _token;
  554. }
  555. public final void mSTRING_LITERAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  556. int _ttype; Token _token=null; int _begin=text.length();
  557. _ttype = STRING_LITERAL;
  558. int _saveIndex;
  559. match('"');
  560. {
  561. _loop89:
  562. do {
  563. switch ( LA(1)) {
  564. case '\':
  565. {
  566. mESC(false);
  567. break;
  568. }
  569. case '3':  case '4':  case '5':  case '6':
  570. case '7':  case '10':  case 't':  case 'n':
  571. case '13':  case '14':  case 'r':  case '16':
  572. case '17':  case '20':  case '21':  case '22':
  573. case '23':  case '24':  case '25':  case '26':
  574. case '27':  case '30':  case '31':  case '32':
  575. case '33':  case '34':  case '35':  case '36':
  576. case '37':  case ' ':  case '!':  case '#':
  577. case '$':  case '%':  case '&':  case ''':
  578. case '(':  case ')':  case '*':  case '+':
  579. case ',':  case '-':  case '.':  case '/':
  580. case '0':  case '1':  case '2':  case '3':
  581. case '4':  case '5':  case '6':  case '7':
  582. case '8':  case '9':  case ':':  case ';':
  583. case '<':  case '=':  case '>':  case '?':
  584. case '@':  case 'A':  case 'B':  case 'C':
  585. case 'D':  case 'E':  case 'F':  case 'G':
  586. case 'H':  case 'I':  case 'J':  case 'K':
  587. case 'L':  case 'M':  case 'N':  case 'O':
  588. case 'P':  case 'Q':  case 'R':  case 'S':
  589. case 'T':  case 'U':  case 'V':  case 'W':
  590. case 'X':  case 'Y':  case 'Z':  case '[':
  591. case ']':  case '^':  case '_':  case '`':
  592. case 'a':  case 'b':  case 'c':  case 'd':
  593. case 'e':  case 'f':  case 'g':  case 'h':
  594. case 'i':  case 'j':  case 'k':  case 'l':
  595. case 'm':  case 'n':  case 'o':  case 'p':
  596. case 'q':  case 'r':  case 's':  case 't':
  597. case 'u':  case 'v':  case 'w':  case 'x':
  598. case 'y':  case 'z':  case '{':  case '|':
  599. case '}':  case '~':
  600. {
  601. matchNot('"');
  602. break;
  603. }
  604. default:
  605. {
  606. break _loop89;
  607. }
  608. }
  609. } while (true);
  610. }
  611. match('"');
  612. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  613. _token = makeToken(_ttype);
  614. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  615. }
  616. _returnToken = _token;
  617. }
  618. public final void mCHAR_LITERAL(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  619. int _ttype; Token _token=null; int _begin=text.length();
  620. _ttype = CHAR_LITERAL;
  621. int _saveIndex;
  622. match(''');
  623. {
  624. switch ( LA(1)) {
  625. case '\':
  626. {
  627. mESC(false);
  628. break;
  629. }
  630. case '3':  case '4':  case '5':  case '6':
  631. case '7':  case '10':  case 't':  case 'n':
  632. case '13':  case '14':  case 'r':  case '16':
  633. case '17':  case '20':  case '21':  case '22':
  634. case '23':  case '24':  case '25':  case '26':
  635. case '27':  case '30':  case '31':  case '32':
  636. case '33':  case '34':  case '35':  case '36':
  637. case '37':  case ' ':  case '!':  case '"':
  638. case '#':  case '$':  case '%':  case '&':
  639. case '(':  case ')':  case '*':  case '+':
  640. case ',':  case '-':  case '.':  case '/':
  641. case '0':  case '1':  case '2':  case '3':
  642. case '4':  case '5':  case '6':  case '7':
  643. case '8':  case '9':  case ':':  case ';':
  644. case '<':  case '=':  case '>':  case '?':
  645. case '@':  case 'A':  case 'B':  case 'C':
  646. case 'D':  case 'E':  case 'F':  case 'G':
  647. case 'H':  case 'I':  case 'J':  case 'K':
  648. case 'L':  case 'M':  case 'N':  case 'O':
  649. case 'P':  case 'Q':  case 'R':  case 'S':
  650. case 'T':  case 'U':  case 'V':  case 'W':
  651. case 'X':  case 'Y':  case 'Z':  case '[':
  652. case ']':  case '^':  case '_':  case '`':
  653. case 'a':  case 'b':  case 'c':  case 'd':
  654. case 'e':  case 'f':  case 'g':  case 'h':
  655. case 'i':  case 'j':  case 'k':  case 'l':
  656. case 'm':  case 'n':  case 'o':  case 'p':
  657. case 'q':  case 'r':  case 's':  case 't':
  658. case 'u':  case 'v':  case 'w':  case 'x':
  659. case 'y':  case 'z':  case '{':  case '|':
  660. case '}':  case '~':
  661. {
  662. matchNot(''');
  663. break;
  664. }
  665. default:
  666. {
  667. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  668. }
  669. }
  670. }
  671. match(''');
  672. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  673. _token = makeToken(_ttype);
  674. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  675. }
  676. _returnToken = _token;
  677. }
  678. protected final void mNEWLINE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  679. int _ttype; Token _token=null; int _begin=text.length();
  680. _ttype = NEWLINE;
  681. int _saveIndex;
  682. {
  683. if ((LA(1)=='r') && (LA(2)=='n')) {
  684. match('r');
  685. match('n');
  686. newline();
  687. }
  688. else if ((LA(1)=='r') && (true)) {
  689. match('r');
  690. newline();
  691. }
  692. else if ((LA(1)=='n')) {
  693. match('n');
  694. newline();
  695. }
  696. else {
  697. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  698. }
  699. }
  700. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  701. _token = makeToken(_ttype);
  702. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  703. }
  704. _returnToken = _token;
  705. }
  706. public final void mBANG(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  707. int _ttype; Token _token=null; int _begin=text.length();
  708. _ttype = BANG;
  709. int _saveIndex;
  710. match('!');
  711. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  712. _token = makeToken(_ttype);
  713. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  714. }
  715. _returnToken = _token;
  716. }
  717. public final void mSEMI(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  718. int _ttype; Token _token=null; int _begin=text.length();
  719. _ttype = SEMI;
  720. int _saveIndex;
  721. match(';');
  722. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  723. _token = makeToken(_ttype);
  724. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  725. }
  726. _returnToken = _token;
  727. }
  728. public final void mRCURLY(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  729. int _ttype; Token _token=null; int _begin=text.length();
  730. _ttype = RCURLY;
  731. int _saveIndex;
  732. match('}');
  733. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  734. _token = makeToken(_ttype);
  735. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  736. }
  737. _returnToken = _token;
  738. }
  739. /** This rule picks off keywords in the lexer that need to be
  740.  *  handled specially.  For example, "header" is the start
  741.  *  of the header action (used to distinguish between options
  742.  *  block and an action).  We do not want "header" to go back
  743.  *  to the parser as a simple keyword...it must pick off
  744.  *  the action afterwards.
  745.  */
  746. public final void mID_OR_KEYWORD(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  747. int _ttype; Token _token=null; int _begin=text.length();
  748. _ttype = ID_OR_KEYWORD;
  749. int _saveIndex;
  750. Token id=null;
  751. mID(true);
  752. id=_returnToken;
  753. _ttype = id.getType();
  754. {
  755. if (((_tokenSet_7.member(LA(1))) && ((LA(2) >= '3' && LA(2) <= '~')))&&(id.getText().equals("header"))) {
  756. {
  757. if ((_tokenSet_0.member(LA(1))) && (_tokenSet_7.member(LA(2)))) {
  758. mWS(false);
  759. }
  760. else if ((_tokenSet_7.member(LA(1))) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  761. }
  762. else {
  763. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  764. }
  765. }
  766. {
  767. switch ( LA(1)) {
  768. case '"':
  769. {
  770. mSTRING_LITERAL(false);
  771. break;
  772. }
  773. case 't':  case 'n':  case 'r':  case ' ':
  774. case '{':
  775. {
  776. break;
  777. }
  778. default:
  779. {
  780. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  781. }
  782. }
  783. }
  784. {
  785. switch ( LA(1)) {
  786. case 't':  case 'n':  case 'r':  case ' ':
  787. {
  788. mWS(false);
  789. break;
  790. }
  791. case '{':
  792. {
  793. break;
  794. }
  795. default:
  796. {
  797. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  798. }
  799. }
  800. }
  801. mACTION(false);
  802. _ttype = HEADER_ACTION;
  803. }
  804. else if (((_tokenSet_8.member(LA(1))) && ((LA(2) >= '3' && LA(2) <= '~')))&&(id.getText().equals("tokens"))) {
  805. {
  806. switch ( LA(1)) {
  807. case 't':  case 'n':  case 'r':  case ' ':
  808. {
  809. mWS(false);
  810. break;
  811. }
  812. case '{':
  813. {
  814. break;
  815. }
  816. default:
  817. {
  818. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  819. }
  820. }
  821. }
  822. mCURLY_BLOCK_SCARF(false);
  823. _ttype = TOKENS_SPEC;
  824. }
  825. else if (((_tokenSet_8.member(LA(1))) && (true))&&(id.getText().equals("options"))) {
  826. {
  827. switch ( LA(1)) {
  828. case 't':  case 'n':  case 'r':  case ' ':
  829. {
  830. mWS(false);
  831. break;
  832. }
  833. case '{':
  834. {
  835. break;
  836. }
  837. default:
  838. {
  839. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  840. }
  841. }
  842. }
  843. match('{');
  844. _ttype = OPTIONS_START;
  845. }
  846. else {
  847. }
  848. }
  849. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  850. _token = makeToken(_ttype);
  851. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  852. }
  853. _returnToken = _token;
  854. }
  855. protected final void mID(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  856. int _ttype; Token _token=null; int _begin=text.length();
  857. _ttype = ID;
  858. int _saveIndex;
  859. {
  860. switch ( LA(1)) {
  861. case 'a':  case 'b':  case 'c':  case 'd':
  862. case 'e':  case 'f':  case 'g':  case 'h':
  863. case 'i':  case 'j':  case 'k':  case 'l':
  864. case 'm':  case 'n':  case 'o':  case 'p':
  865. case 'q':  case 'r':  case 's':  case 't':
  866. case 'u':  case 'v':  case 'w':  case 'x':
  867. case 'y':  case 'z':
  868. {
  869. matchRange('a','z');
  870. break;
  871. }
  872. case 'A':  case 'B':  case 'C':  case 'D':
  873. case 'E':  case 'F':  case 'G':  case 'H':
  874. case 'I':  case 'J':  case 'K':  case 'L':
  875. case 'M':  case 'N':  case 'O':  case 'P':
  876. case 'Q':  case 'R':  case 'S':  case 'T':
  877. case 'U':  case 'V':  case 'W':  case 'X':
  878. case 'Y':  case 'Z':
  879. {
  880. matchRange('A','Z');
  881. break;
  882. }
  883. case '_':
  884. {
  885. match('_');
  886. break;
  887. }
  888. default:
  889. {
  890. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  891. }
  892. }
  893. }
  894. {
  895. _loop68:
  896. do {
  897. switch ( LA(1)) {
  898. case 'a':  case 'b':  case 'c':  case 'd':
  899. case 'e':  case 'f':  case 'g':  case 'h':
  900. case 'i':  case 'j':  case 'k':  case 'l':
  901. case 'm':  case 'n':  case 'o':  case 'p':
  902. case 'q':  case 'r':  case 's':  case 't':
  903. case 'u':  case 'v':  case 'w':  case 'x':
  904. case 'y':  case 'z':
  905. {
  906. matchRange('a','z');
  907. break;
  908. }
  909. case 'A':  case 'B':  case 'C':  case 'D':
  910. case 'E':  case 'F':  case 'G':  case 'H':
  911. case 'I':  case 'J':  case 'K':  case 'L':
  912. case 'M':  case 'N':  case 'O':  case 'P':
  913. case 'Q':  case 'R':  case 'S':  case 'T':
  914. case 'U':  case 'V':  case 'W':  case 'X':
  915. case 'Y':  case 'Z':
  916. {
  917. matchRange('A','Z');
  918. break;
  919. }
  920. case '_':
  921. {
  922. match('_');
  923. break;
  924. }
  925. case '0':  case '1':  case '2':  case '3':
  926. case '4':  case '5':  case '6':  case '7':
  927. case '8':  case '9':
  928. {
  929. matchRange('0','9');
  930. break;
  931. }
  932. default:
  933. {
  934. break _loop68;
  935. }
  936. }
  937. } while (true);
  938. }
  939. _ttype = testLiteralsTable(new String(text.getBuffer(),_begin,text.length()-_begin),_ttype);
  940. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  941. _token = makeToken(_ttype);
  942. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  943. }
  944. _returnToken = _token;
  945. }
  946. protected final void mCURLY_BLOCK_SCARF(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  947. int _ttype; Token _token=null; int _begin=text.length();
  948. _ttype = CURLY_BLOCK_SCARF;
  949. int _saveIndex;
  950. match('{');
  951. {
  952. _loop64:
  953. do {
  954. // nongreedy exit test
  955. if ((LA(1)=='}') && (true)) break _loop64;
  956. if ((LA(1)=='n'||LA(1)=='r') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  957. mNEWLINE(false);
  958. }
  959. else if (((LA(1) >= '3' && LA(1) <= '~')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  960. matchNot(EOF_CHAR);
  961. }
  962. else {
  963. break _loop64;
  964. }
  965. } while (true);
  966. }
  967. match('}');
  968. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  969. _token = makeToken(_ttype);
  970. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  971. }
  972. _returnToken = _token;
  973. }
  974. public final void mASSIGN_RHS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  975. int _ttype; Token _token=null; int _begin=text.length();
  976. _ttype = ASSIGN_RHS;
  977. int _saveIndex;
  978. _saveIndex=text.length();
  979. match('=');
  980. text.setLength(_saveIndex);
  981. {
  982. _loop71:
  983. do {
  984. // nongreedy exit test
  985. if ((LA(1)==';') && (true)) break _loop71;
  986. if ((LA(1)=='"') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  987. mSTRING_LITERAL(false);
  988. }
  989. else if ((LA(1)==''') && (_tokenSet_6.member(LA(2)))) {
  990. mCHAR_LITERAL(false);
  991. }
  992. else if ((LA(1)=='n'||LA(1)=='r') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  993. mNEWLINE(false);
  994. }
  995. else if (((LA(1) >= '3' && LA(1) <= '~')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  996. matchNot(EOF_CHAR);
  997. }
  998. else {
  999. break _loop71;
  1000. }
  1001. } while (true);
  1002. }
  1003. match(';');
  1004. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  1005. _token = makeToken(_ttype);
  1006. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  1007. }
  1008. _returnToken = _token;
  1009. }
  1010. protected final void mSL_COMMENT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  1011. int _ttype; Token _token=null; int _begin=text.length();
  1012. _ttype = SL_COMMENT;
  1013. int _saveIndex;
  1014. match("//");
  1015. {
  1016. _loop81:
  1017. do {
  1018. // nongreedy exit test
  1019. if ((LA(1)=='n'||LA(1)=='r') && (true)) break _loop81;
  1020. if (((LA(1) >= '3' && LA(1) <= '~')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1021. matchNot(EOF_CHAR);
  1022. }
  1023. else {
  1024. break _loop81;
  1025. }
  1026. } while (true);
  1027. }
  1028. mNEWLINE(false);
  1029. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  1030. _token = makeToken(_ttype);
  1031. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  1032. }
  1033. _returnToken = _token;
  1034. }
  1035. protected final void mML_COMMENT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  1036. int _ttype; Token _token=null; int _begin=text.length();
  1037. _ttype = ML_COMMENT;
  1038. int _saveIndex;
  1039. match("/*");
  1040. {
  1041. _loop84:
  1042. do {
  1043. // nongreedy exit test
  1044. if ((LA(1)=='*') && (LA(2)=='/')) break _loop84;
  1045. if ((LA(1)=='n'||LA(1)=='r') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1046. mNEWLINE(false);
  1047. }
  1048. else if (((LA(1) >= '3' && LA(1) <= '~')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1049. matchNot(EOF_CHAR);
  1050. }
  1051. else {
  1052. break _loop84;
  1053. }
  1054. } while (true);
  1055. }
  1056. match("*/");
  1057. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  1058. _token = makeToken(_ttype);
  1059. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  1060. }
  1061. _returnToken = _token;
  1062. }
  1063. protected final void mESC(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  1064. int _ttype; Token _token=null; int _begin=text.length();
  1065. _ttype = ESC;
  1066. int _saveIndex;
  1067. match('\');
  1068. {
  1069. switch ( LA(1)) {
  1070. case 'n':
  1071. {
  1072. match('n');
  1073. break;
  1074. }
  1075. case 'r':
  1076. {
  1077. match('r');
  1078. break;
  1079. }
  1080. case 't':
  1081. {
  1082. match('t');
  1083. break;
  1084. }
  1085. case 'b':
  1086. {
  1087. match('b');
  1088. break;
  1089. }
  1090. case 'f':
  1091. {
  1092. match('f');
  1093. break;
  1094. }
  1095. case 'w':
  1096. {
  1097. match('w');
  1098. break;
  1099. }
  1100. case 'a':
  1101. {
  1102. match('a');
  1103. break;
  1104. }
  1105. case '"':
  1106. {
  1107. match('"');
  1108. break;
  1109. }
  1110. case ''':
  1111. {
  1112. match(''');
  1113. break;
  1114. }
  1115. case '\':
  1116. {
  1117. match('\');
  1118. break;
  1119. }
  1120. case '0':  case '1':  case '2':  case '3':
  1121. {
  1122. {
  1123. matchRange('0','3');
  1124. }
  1125. {
  1126. if (((LA(1) >= '0' && LA(1) <= '9')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1127. mDIGIT(false);
  1128. {
  1129. if (((LA(1) >= '0' && LA(1) <= '9')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1130. mDIGIT(false);
  1131. }
  1132. else if (((LA(1) >= '3' && LA(1) <= '~')) && (true)) {
  1133. }
  1134. else {
  1135. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  1136. }
  1137. }
  1138. }
  1139. else if (((LA(1) >= '3' && LA(1) <= '~')) && (true)) {
  1140. }
  1141. else {
  1142. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  1143. }
  1144. }
  1145. break;
  1146. }
  1147. case '4':  case '5':  case '6':  case '7':
  1148. {
  1149. {
  1150. matchRange('4','7');
  1151. }
  1152. {
  1153. if (((LA(1) >= '0' && LA(1) <= '9')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1154. mDIGIT(false);
  1155. }
  1156. else if (((LA(1) >= '3' && LA(1) <= '~')) && (true)) {
  1157. }
  1158. else {
  1159. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  1160. }
  1161. }
  1162. break;
  1163. }
  1164. case 'u':
  1165. {
  1166. match('u');
  1167. mXDIGIT(false);
  1168. mXDIGIT(false);
  1169. mXDIGIT(false);
  1170. mXDIGIT(false);
  1171. break;
  1172. }
  1173. default:
  1174. {
  1175. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  1176. }
  1177. }
  1178. }
  1179. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  1180. _token = makeToken(_ttype);
  1181. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  1182. }
  1183. _returnToken = _token;
  1184. }
  1185. protected final void mDIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  1186. int _ttype; Token _token=null; int _begin=text.length();
  1187. _ttype = DIGIT;
  1188. int _saveIndex;
  1189. matchRange('0','9');
  1190. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  1191. _token = makeToken(_ttype);
  1192. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  1193. }
  1194. _returnToken = _token;
  1195. }
  1196. protected final void mXDIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  1197. int _ttype; Token _token=null; int _begin=text.length();
  1198. _ttype = XDIGIT;
  1199. int _saveIndex;
  1200. switch ( LA(1)) {
  1201. case '0':  case '1':  case '2':  case '3':
  1202. case '4':  case '5':  case '6':  case '7':
  1203. case '8':  case '9':
  1204. {
  1205. matchRange('0','9');
  1206. break;
  1207. }
  1208. case 'a':  case 'b':  case 'c':  case 'd':
  1209. case 'e':  case 'f':
  1210. {
  1211. matchRange('a','f');
  1212. break;
  1213. }
  1214. case 'A':  case 'B':  case 'C':  case 'D':
  1215. case 'E':  case 'F':
  1216. {
  1217. matchRange('A','F');
  1218. break;
  1219. }
  1220. default:
  1221. {
  1222. throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());
  1223. }
  1224. }
  1225. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  1226. _token = makeToken(_ttype);
  1227. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  1228. }
  1229. _returnToken = _token;
  1230. }
  1231. public final void mARG_ACTION(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
  1232. int _ttype; Token _token=null; int _begin=text.length();
  1233. _ttype = ARG_ACTION;
  1234. int _saveIndex;
  1235. match('[');
  1236. {
  1237. _loop101:
  1238. do {
  1239. // nongreedy exit test
  1240. if ((LA(1)==']') && (true)) break _loop101;
  1241. if ((LA(1)=='[') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1242. mARG_ACTION(false);
  1243. }
  1244. else if ((LA(1)=='n'||LA(1)=='r') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1245. mNEWLINE(false);
  1246. }
  1247. else if ((LA(1)==''') && (_tokenSet_6.member(LA(2)))) {
  1248. mCHAR_LITERAL(false);
  1249. }
  1250. else if ((LA(1)=='"') && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1251. mSTRING_LITERAL(false);
  1252. }
  1253. else if (((LA(1) >= '3' && LA(1) <= '~')) && ((LA(2) >= '3' && LA(2) <= '~'))) {
  1254. matchNot(EOF_CHAR);
  1255. }
  1256. else {
  1257. break _loop101;
  1258. }
  1259. } while (true);
  1260. }
  1261. match(']');
  1262. if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
  1263. _token = makeToken(_ttype);
  1264. _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
  1265. }
  1266. _returnToken = _token;
  1267. }
  1268. private static final long _tokenSet_0_data_[] = { 4294977024L, 0L, 0L };
  1269. public static final BitSet _tokenSet_0 = new BitSet(_tokenSet_0_data_);
  1270. private static final long _tokenSet_1_data_[] = { -2199023255560L, 9223372036854775807L, 0L, 0L };
  1271. public static final BitSet _tokenSet_1 = new BitSet(_tokenSet_1_data_);
  1272. private static final long _tokenSet_2_data_[] = { -576462951326679048L, 9223372036854775807L, 0L, 0L };
  1273. public static final BitSet _tokenSet_2 = new BitSet(_tokenSet_2_data_);
  1274. private static final long _tokenSet_3_data_[] = { -576460752303423496L, 9223372036854775807L, 0L, 0L };
  1275. public static final BitSet _tokenSet_3 = new BitSet(_tokenSet_3_data_);
  1276. private static final long _tokenSet_4_data_[] = { 4294977024L, 1152921504606846976L, 0L, 0L };
  1277. public static final BitSet _tokenSet_4 = new BitSet(_tokenSet_4_data_);
  1278. private static final long _tokenSet_5_data_[] = { -576605355262354440L, 8646911284551352319L, 0L, 0L };
  1279. public static final BitSet _tokenSet_5 = new BitSet(_tokenSet_5_data_);
  1280. private static final long _tokenSet_6_data_[] = { -549755813896L, 9223372036854775807L, 0L, 0L };
  1281. public static final BitSet _tokenSet_6 = new BitSet(_tokenSet_6_data_);
  1282. private static final long _tokenSet_7_data_[] = { 21474846208L, 576460752303423488L, 0L, 0L };
  1283. public static final BitSet _tokenSet_7 = new BitSet(_tokenSet_7_data_);
  1284. private static final long _tokenSet_8_data_[] = { 4294977024L, 576460752303423488L, 0L, 0L };
  1285. public static final BitSet _tokenSet_8 = new BitSet(_tokenSet_8_data_);
  1286. }