blob: 512e8a59e752e7c0172a3e8d77f294fa470d3b86 [file] [log] [blame]
/* The following code was generated by JFlex 1.4.1 on 7/27/09 3:59 PM */
/*******************************************************************************
* Copyright (c) 2009 University of Illinois at Urbana-Champaign and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* UIUC - Initial API and implementation
*******************************************************************************/
/*
* First phase of fixed form lexical analysis for Fortran 95 parser
*
* FixedFormLexerPhase1 acts as a "token stream" feeding FreeFormLexerPhase2
* and is feeded by FixedFormLexerPrepass
* (See FixedFormLexerPrepass and FixedFormLexerPhase2.java and f95t.bnf)
*
* @author Jeffrey Overbey and Dirk Rossow
*
* @see FixedFormLexerPrepass
* @see FixedFormLexerPhase2
* @see Parser
*
* NOTE: Get rid of (space out) "yybegin(YYSTANDARD);" in the lines
* for any tokens that can appear in an IMPLICIT statement
* (It was also omitted in the lines for T_SLASH so that
* INTERFACE OPERATOR (/) would tokenize correctly.)
*
* Changes:
* 29.06.2005 Jeff Overbey: Added Fortran INCLUDE and CPP directives
*/
package org.eclipse.photran.internal.core.lexer;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.LinkedList;
import org.eclipse.core.resources.IFile;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.1
* on 7/27/09 3:59 PM from the specification file
* <tt>FixedFormLexerPhase1.flex</tt>
*/
class FixedFormLexerPhase1 implements ILexer {
/** This character denotes the end of file */
public static final int YYEOF = -1;
/** initial size of the lookahead buffer */
private static final int ZZ_BUFFERSIZE = 16384;
/** lexical states */
public static final int OPERATORorFORMAT = 6;
public static final int DBLQUOTED = 3;
public static final int QUOTED = 2;
public static final int YYINITIAL = 0;
public static final int IDENT = 7;
public static final int HOLLERITH = 4;
public static final int YYSTANDARD = 5;
public static final int IMPLICIT = 1;
/**
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
"\11\0\1\47\1\2\2\37\1\1\22\0\1\47\1\37\1\16\1\40"+
"\1\0\1\64\1\0\1\14\1\33\1\35\1\3\1\6\1\34\1\7"+
"\1\11\1\65\2\15\6\20\2\4\1\61\1\36\1\63\1\54\1\62"+
"\2\0\1\22\1\13\1\43\1\10\1\5\1\25\1\27\1\23\1\24"+
"\1\12\1\57\1\42\1\46\1\41\1\17\1\30\1\60\1\45\1\26"+
"\1\50\1\44\1\56\1\51\1\31\1\55\1\21\1\52\1\0\1\53"+
"\1\0\1\32\1\0\1\22\1\13\1\43\1\10\1\5\1\25\1\27"+
"\1\23\1\24\1\12\1\57\1\42\1\46\1\41\1\17\1\30\1\60"+
"\1\45\1\26\1\50\1\44\1\56\1\51\1\31\1\55\1\21\12\0"+
"\1\37\u1fa2\0\2\37\udfd6\0";
/**
* Translates characters to character classes
*/
private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
/**
* Translates DFA states to action switch labels.
*/
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\10\0\1\1\2\2\1\3\1\4\1\1\1\5\1\6"+
"\3\1\1\7\1\10\10\1\1\11\1\12\1\13\1\14"+
"\11\1\1\15\1\16\1\17\2\1\1\20\1\21\1\22"+
"\1\23\1\24\1\4\1\1\1\5\1\6\10\1\1\12"+
"\1\24\1\25\1\26\1\27\1\25\1\30\1\31\1\32"+
"\1\12\1\33\1\34\1\35\7\0\1\36\36\0\1\37"+
"\1\40\1\41\13\0\1\42\34\0\1\43\6\0\1\44"+
"\1\45\3\0\1\46\1\47\1\50\1\51\1\52\3\0"+
"\1\53\1\54\1\55\5\0\1\56\1\0\1\57\1\60"+
"\1\61\1\62\3\0\1\63\17\0\1\64\26\0\1\65"+
"\11\0\1\66\64\0\1\67\11\0\1\70\23\0\1\56"+
"\1\0\1\71\1\0\1\56\10\0\1\72\12\0\1\73"+
"\1\0\1\74\2\0\1\75\1\76\7\0\1\77\2\0"+
"\1\100\1\0\1\101\2\0\1\102\1\103\1\104\2\0"+
"\1\105\1\106\1\0\1\107\1\0\1\110\2\0\1\111"+
"\1\112\2\0\1\113\1\114\25\0\1\115\1\0\1\116"+
"\2\0\1\117\3\0\1\120\3\0\1\121\4\0\1\122"+
"\1\123\1\124\3\0\1\125\12\0\2\126\5\0\1\127"+
"\2\0\1\130\1\0\1\131\1\132\4\0\1\133\1\134"+
"\6\0\1\135\1\136\3\0\1\137\5\0\1\140\1\141"+
"\1\142\5\0\1\143\1\56\2\144\1\0\2\145\1\4"+
"\3\0\1\146\1\0\1\147\14\0\1\150\14\0\1\151"+
"\1\152\2\0\1\153\2\0\1\154\17\0\1\155\12\0"+
"\1\156\1\157\1\160\3\0\1\161\1\162\2\0\1\163"+
"\5\0\1\164\6\0\1\165\12\0\1\166\10\0\1\167"+
"\1\170\1\171\1\172\2\0\1\173\2\0\1\174\6\0"+
"\1\175\1\176\1\177\1\0\1\200\1\201\1\202\20\0"+
"\1\203\5\0\1\204\1\0\1\205\3\0\1\206\1\207"+
"\2\0\1\210\15\0\1\211\2\0\1\212\3\0\1\213"+
"\1\0\1\214\1\215\1\0\1\216\11\0\1\217\10\0"+
"\1\220\2\0\1\221\7\0\1\222\3\0\1\136\1\223"+
"\1\0\1\224\1\225\1\226\1\227\1\230\1\231\1\0"+
"\1\232\4\0\1\233\5\0\1\234\10\0\1\235\3\0"+
"\1\236\1\0\1\237\2\0\1\240\10\0\1\241\1\242"+
"\1\243\2\0\1\244\2\0\1\245\7\0\1\246\1\247"+
"\1\250\1\0\1\251\3\0\1\252\2\0\1\253\4\0"+
"\1\254\1\255\1\256\2\0\1\257\5\0\1\260\1\261"+
"\7\0\1\262\6\0\1\263\1\264\1\205\4\0\1\265"+
"\1\266\1\267\1\270\3\0\1\271\6\0\1\272\1\0"+
"\1\273\1\0\1\274\2\0\1\275\5\0\1\276\2\0"+
"\1\277\1\0\1\300\1\301\5\0\1\302\2\0\1\303"+
"\1\0\1\304\2\0\1\305\1\306\1\0\1\307\1\310"+
"\3\0\1\311\1\312\1\313\1\314\3\0\1\315\1\0"+
"\1\244\1\316\1\317\4\0\1\320\1\321\1\322\1\323"+
"\1\324\2\0\1\256\1\257\1\325\2\0\1\326\4\0"+
"\1\327\1\330\1\0\1\331\1\0\1\332\2\0\1\333"+
"\1\334\1\0\1\335\4\0\1\336\2\0\1\337\1\0"+
"\1\340\2\0\1\341\1\342\2\0\1\325\1\0\1\343"+
"\1\344\2\0\1\345\2\0\1\346\1\347\2\0\1\350"+
"\1\0\1\351\2\0\1\352\1\353\1\0\1\352";
private static int [] zzUnpackAction() {
int [] result = new int[976];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAction(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/**
* Translates a state to a row index in the transition table
*/
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\66\0\154\0\242\0\330\0\u010e\0\u0144\0\u017a"+
"\0\u01b0\0\u01e6\0\u01b0\0\u021c\0\u0252\0\u0288\0\u01b0\0\u01b0"+
"\0\u02be\0\u02f4\0\u032a\0\u01b0\0\u01b0\0\u0360\0\u0396\0\u03cc"+
"\0\u0402\0\u0438\0\u046e\0\u04a4\0\u04da\0\u01b0\0\u01b0\0\u01b0"+
"\0\u01b0\0\u0510\0\u0546\0\u057c\0\u05b2\0\u05e8\0\u061e\0\u0654"+
"\0\u068a\0\u06c0\0\u01b0\0\u01b0\0\u06f6\0\u072c\0\u0762\0\u01b0"+
"\0\u0798\0\u07ce\0\u01b0\0\u0804\0\u083a\0\u0870\0\u08a6\0\u08a6"+
"\0\u08dc\0\u0912\0\u0948\0\u097e\0\u09b4\0\u09ea\0\u0a20\0\u0a56"+
"\0\u0a8c\0\u0ac2\0\u0af8\0\u01b0\0\u0b2e\0\u0b64\0\u0b9a\0\u01b0"+
"\0\u01b0\0\u0bd0\0\u01b0\0\u0c06\0\u01b0\0\u0c3c\0\u0c72\0\u0ca8"+
"\0\u0cde\0\u0d14\0\u0d4a\0\u0d80\0\u0db6\0\u0dec\0\u0e22\0\u0e58"+
"\0\u0e8e\0\u0ec4\0\u0efa\0\u0f30\0\u0f66\0\u0f9c\0\u0fd2\0\u1008"+
"\0\u103e\0\u1074\0\u10aa\0\u10e0\0\u1116\0\u114c\0\u1182\0\u11b8"+
"\0\u11ee\0\u1224\0\u125a\0\u1290\0\u12c6\0\u12fc\0\u1332\0\u1368"+
"\0\u139e\0\u13d4\0\u140a\0\u01b0\0\u01b0\0\u1440\0\u1476\0\u14ac"+
"\0\u14e2\0\u1518\0\u154e\0\u1584\0\u15ba\0\u15f0\0\u1626\0\u165c"+
"\0\u1692\0\u16c8\0\u16fe\0\u1734\0\u176a\0\u17a0\0\u17d6\0\u180c"+
"\0\u1842\0\u1878\0\u18ae\0\u18e4\0\u191a\0\u1950\0\u1986\0\u19bc"+
"\0\u19f2\0\u1a28\0\u1a5e\0\u1a94\0\u1aca\0\u1b00\0\u1b36\0\u1b6c"+
"\0\u1ba2\0\u1bd8\0\u1c0e\0\u1c44\0\u1c7a\0\u1cb0\0\u01b0\0\u1ce6"+
"\0\u1d1c\0\u1d52\0\u1d88\0\u1dbe\0\u1df4\0\u01b0\0\u01b0\0\u1e2a"+
"\0\u1e60\0\u1e96\0\u01b0\0\u01b0\0\u01b0\0\u01b0\0\u01b0\0\u1ecc"+
"\0\u1f02\0\u1f38\0\u01b0\0\u01b0\0\u01b0\0\u1f6e\0\u1fa4\0\u1fda"+
"\0\u2010\0\u2046\0\u207c\0\u20b2\0\u01b0\0\u01b0\0\u01b0\0\u01b0"+
"\0\u20e8\0\u211e\0\u2154\0\u218a\0\u21c0\0\u21f6\0\u222c\0\u2262"+
"\0\u2298\0\u22ce\0\u2304\0\u233a\0\u2370\0\u23a6\0\u23dc\0\u2412"+
"\0\u2448\0\u247e\0\u24b4\0\u01b0\0\u24ea\0\u2520\0\u2556\0\u258c"+
"\0\u25c2\0\u25f8\0\u262e\0\u2664\0\u269a\0\u26d0\0\u2706\0\u273c"+
"\0\u2772\0\u27a8\0\u27de\0\u2814\0\u284a\0\u2880\0\u28b6\0\u28ec"+
"\0\u2922\0\u2958\0\u01b0\0\u298e\0\u29c4\0\u29fa\0\u2a30\0\u2a66"+
"\0\u2a9c\0\u2ad2\0\u2b08\0\u2b3e\0\u01b0\0\u2b74\0\u2baa\0\u2be0"+
"\0\u2c16\0\u2c4c\0\u2c82\0\u2cb8\0\u2cee\0\u2d24\0\u2d5a\0\u2d90"+
"\0\u2dc6\0\u2dfc\0\u2e32\0\u2e68\0\u2e9e\0\u2ed4\0\u2f0a\0\u2f40"+
"\0\u2f76\0\u2fac\0\u2fe2\0\u3018\0\u304e\0\u3084\0\u30ba\0\u30f0"+
"\0\u3126\0\u315c\0\u3192\0\u31c8\0\u31fe\0\u3234\0\u326a\0\u32a0"+
"\0\u32d6\0\u330c\0\u3342\0\u3378\0\u33ae\0\u33e4\0\u341a\0\u3450"+
"\0\u3486\0\u34bc\0\u34f2\0\u3528\0\u355e\0\u3594\0\u35ca\0\u3600"+
"\0\u3636\0\u366c\0\u36a2\0\u36d8\0\u370e\0\u3744\0\u377a\0\u37b0"+
"\0\u37e6\0\u381c\0\u3852\0\u01b0\0\u3888\0\u38be\0\u38f4\0\u392a"+
"\0\u3960\0\u3996\0\u39cc\0\u3a02\0\u3a38\0\u3a6e\0\u3aa4\0\u3ada"+
"\0\u3b10\0\u3b46\0\u3b7c\0\u3bb2\0\u3be8\0\u3c1e\0\u3c54\0\u3c8a"+
"\0\u3cc0\0\u3cf6\0\u3cf6\0\u01b0\0\u3d2c\0\u3d62\0\u3d98\0\u3dce"+
"\0\u3e04\0\u3e3a\0\u3e70\0\u3ea6\0\u01b0\0\u3edc\0\u3f12\0\u3f48"+
"\0\u3f7e\0\u3fb4\0\u3fea\0\u4020\0\u4056\0\u408c\0\u40c2\0\u01b0"+
"\0\u40f8\0\u412e\0\u4164\0\u419a\0\u41d0\0\u01b0\0\u4206\0\u423c"+
"\0\u4272\0\u42a8\0\u42de\0\u4314\0\u434a\0\u01b0\0\u4380\0\u43b6"+
"\0\u01b0\0\u43ec\0\u01b0\0\u4422\0\u4458\0\u01b0\0\u01b0\0\u01b0"+
"\0\u448e\0\u44c4\0\u01b0\0\u01b0\0\u44fa\0\u01b0\0\u4530\0\u01b0"+
"\0\u4566\0\u459c\0\u01b0\0\u45d2\0\u4608\0\u463e\0\u01b0\0\u01b0"+
"\0\u4674\0\u46aa\0\u46e0\0\u4716\0\u474c\0\u4782\0\u47b8\0\u47ee"+
"\0\u4824\0\u485a\0\u4890\0\u48c6\0\u48fc\0\u4932\0\u4968\0\u499e"+
"\0\u49d4\0\u4a0a\0\u4a40\0\u4a76\0\u4aac\0\u4ae2\0\u4b18\0\u01b0"+
"\0\u4b4e\0\u4b84\0\u01b0\0\u4bba\0\u4bf0\0\u4c26\0\u01b0\0\u4c5c"+
"\0\u4c92\0\u4cc8\0\u01b0\0\u4cfe\0\u4d34\0\u4d6a\0\u4da0\0\u01b0"+
"\0\u01b0\0\u01b0\0\u4dd6\0\u4e0c\0\u4e42\0\u01b0\0\u4e78\0\u4eae"+
"\0\u4ee4\0\u4f1a\0\u4f50\0\u4f86\0\u4fbc\0\u4ff2\0\u5028\0\u505e"+
"\0\u5094\0\u01b0\0\u50ca\0\u5100\0\u5136\0\u516c\0\u51a2\0\u01b0"+
"\0\u51d8\0\u520e\0\u5244\0\u527a\0\u01b0\0\u01b0\0\u52b0\0\u52e6"+
"\0\u531c\0\u5352\0\u01b0\0\u01b0\0\u5388\0\u53be\0\u53f4\0\u542a"+
"\0\u5460\0\u5496\0\u54cc\0\u5502\0\u5538\0\u556e\0\u55a4\0\u01b0"+
"\0\u55da\0\u5610\0\u5646\0\u567c\0\u56b2\0\u01b0\0\u01b0\0\u01b0"+
"\0\u56e8\0\u571e\0\u5754\0\u578a\0\u57c0\0\u57f6\0\u3cc0\0\u582c"+
"\0\u3d98\0\u5862\0\u5898\0\u01b0\0\u3e70\0\u58ce\0\u5904\0\u593a"+
"\0\u01b0\0\u5970\0\u01b0\0\u59a6\0\u59dc\0\u5a12\0\u5a48\0\u5a7e"+
"\0\u5ab4\0\u5aea\0\u5b20\0\u5b56\0\u5b8c\0\u5bc2\0\u5bf8\0\u01b0"+
"\0\u5c2e\0\u5c64\0\u5c9a\0\u5cd0\0\u5d06\0\u5d3c\0\u5d72\0\u5da8"+
"\0\u5dde\0\u5e14\0\u5e4a\0\u5e80\0\u01b0\0\u01b0\0\u5eb6\0\u5eec"+
"\0\u01b0\0\u5f22\0\u5f58\0\u5f8e\0\u5fc4\0\u5ffa\0\u6030\0\u6066"+
"\0\u609c\0\u60d2\0\u6108\0\u613e\0\u6174\0\u61aa\0\u61e0\0\u6216"+
"\0\u624c\0\u6282\0\u62b8\0\u01b0\0\u62ee\0\u6324\0\u635a\0\u6390"+
"\0\u63c6\0\u63fc\0\u6432\0\u6468\0\u649e\0\u64d4\0\u01b0\0\u01b0"+
"\0\u01b0\0\u650a\0\u6540\0\u6576\0\u01b0\0\u01b0\0\u65ac\0\u65e2"+
"\0\u01b0\0\u6618\0\u664e\0\u6684\0\u66ba\0\u66f0\0\u01b0\0\u6726"+
"\0\u675c\0\u6792\0\u67c8\0\u67fe\0\u6834\0\u01b0\0\u686a\0\u68a0"+
"\0\u68d6\0\u690c\0\u6942\0\u6978\0\u69ae\0\u69e4\0\u6a1a\0\u6a50"+
"\0\u01b0\0\u6a86\0\u6abc\0\u6af2\0\u6b28\0\u6b5e\0\u6b94\0\u6bca"+
"\0\u6c00\0\u01b0\0\u01b0\0\u01b0\0\u01b0\0\u6c36\0\u6c6c\0\u01b0"+
"\0\u6ca2\0\u6cd8\0\u01b0\0\u6d0e\0\u6d44\0\u6d7a\0\u6db0\0\u6de6"+
"\0\u6e1c\0\u01b0\0\u01b0\0\u6e52\0\u6e88\0\u01b0\0\u01b0\0\u01b0"+
"\0\u6ebe\0\u6ef4\0\u6f2a\0\u6f60\0\u6f96\0\u6fcc\0\u7002\0\u7038"+
"\0\u706e\0\u70a4\0\u70da\0\u7110\0\u7146\0\u717c\0\u71b2\0\u71e8"+
"\0\u01b0\0\u721e\0\u7254\0\u728a\0\u72c0\0\u72f6\0\u01b0\0\u732c"+
"\0\u7362\0\u7398\0\u73ce\0\u7404\0\u01b0\0\u01b0\0\u743a\0\u7470"+
"\0\u01b0\0\u74a6\0\u74dc\0\u7512\0\u7548\0\u757e\0\u75b4\0\u75ea"+
"\0\u7620\0\u7656\0\u768c\0\u76c2\0\u76f8\0\u772e\0\u01b0\0\u7764"+
"\0\u779a\0\u01b0\0\u77d0\0\u7806\0\u783c\0\u01b0\0\u7872\0\u01b0"+
"\0\u78a8\0\u78de\0\u7914\0\u794a\0\u7980\0\u79b6\0\u79ec\0\u7a22"+
"\0\u7a58\0\u7a8e\0\u7ac4\0\u7afa\0\u01b0\0\u7b30\0\u7b66\0\u7b9c"+
"\0\u7bd2\0\u7c08\0\u7c3e\0\u7c74\0\u7caa\0\u01b0\0\u7ce0\0\u7d16"+
"\0\u01b0\0\u7d4c\0\u7d82\0\u7db8\0\u7dee\0\u7e24\0\u7e5a\0\u7e90"+
"\0\u01b0\0\u7ec6\0\u7efc\0\u7f32\0\u6ca2\0\u01b0\0\u7f68\0\u01b0"+
"\0\u01b0\0\u01b0\0\u01b0\0\u01b0\0\u01b0\0\u7f9e\0\u01b0\0\u7fd4"+
"\0\u800a\0\u8040\0\u8076\0\u01b0\0\u80ac\0\u80e2\0\u8118\0\u814e"+
"\0\u8184\0\u01b0\0\u81ba\0\u81f0\0\u8226\0\u825c\0\u8292\0\u82c8"+
"\0\u82fe\0\u8334\0\u01b0\0\u836a\0\u83a0\0\u83d6\0\u01b0\0\u840c"+
"\0\u01b0\0\u8442\0\u8478\0\u01b0\0\u84ae\0\u84e4\0\u851a\0\u8550"+
"\0\u8586\0\u85bc\0\u85f2\0\u8628\0\u01b0\0\u01b0\0\u01b0\0\u865e"+
"\0\u8694\0\u86ca\0\u8700\0\u8736\0\u01b0\0\u876c\0\u87a2\0\u87d8"+
"\0\u880e\0\u8844\0\u887a\0\u88b0\0\u01b0\0\u01b0\0\u01b0\0\u88e6"+
"\0\u01b0\0\u891c\0\u8952\0\u8988\0\u01b0\0\u89be\0\u89f4\0\u01b0"+
"\0\u8a2a\0\u8a60\0\u8a96\0\u8acc\0\u01b0\0\u01b0\0\u8b02\0\u8b38"+
"\0\u8b6e\0\u8ba4\0\u8bda\0\u8c10\0\u8c46\0\u8c7c\0\u8cb2\0\u01b0"+
"\0\u8ce8\0\u8d1e\0\u8d54\0\u8d8a\0\u8dc0\0\u8df6\0\u8e2c\0\u8e62"+
"\0\u01b0\0\u8e98\0\u8ece\0\u8f04\0\u8f3a\0\u8f70\0\u8fa6\0\u01b0"+
"\0\u01b0\0\u83a0\0\u8fdc\0\u9012\0\u9048\0\u907e\0\u01b0\0\u01b0"+
"\0\u01b0\0\u01b0\0\u90b4\0\u90ea\0\u9120\0\u01b0\0\u9156\0\u918c"+
"\0\u91c2\0\u91f8\0\u922e\0\u9264\0\u01b0\0\u929a\0\u01b0\0\u92d0"+
"\0\u01b0\0\u9306\0\u933c\0\u01b0\0\u9372\0\u93a8\0\u93de\0\u9414"+
"\0\u944a\0\u01b0\0\u9480\0\u94b6\0\u01b0\0\u94ec\0\u01b0\0\u01b0"+
"\0\u9522\0\u9558\0\u958e\0\u95c4\0\u95fa\0\u01b0\0\u9630\0\u9666"+
"\0\u01b0\0\u969c\0\u01b0\0\u96d2\0\u9708\0\u01b0\0\u01b0\0\u973e"+
"\0\u01b0\0\u01b0\0\u9774\0\u97aa\0\u97e0\0\u01b0\0\u01b0\0\u01b0"+
"\0\u01b0\0\u9816\0\u984c\0\u9882\0\u01b0\0\u98b8\0\u91f8\0\u01b0"+
"\0\u01b0\0\u98ee\0\u9924\0\u995a\0\u9990\0\u01b0\0\u01b0\0\u01b0"+
"\0\u01b0\0\u01b0\0\u99c6\0\u99fc\0\u94ec\0\u9522\0\u9a32\0\u9a68"+
"\0\u9a9e\0\u01b0\0\u9ad4\0\u9b0a\0\u9b40\0\u9b76\0\u01b0\0\u01b0"+
"\0\u9bac\0\u01b0\0\u9be2\0\u01b0\0\u9c18\0\u9c4e\0\u01b0\0\u01b0"+
"\0\u9c84\0\u01b0\0\u9cba\0\u9cf0\0\u9d26\0\u9d5c\0\u01b0\0\u9d92"+
"\0\u9dc8\0\u01b0\0\u9dfe\0\u01b0\0\u9e34\0\u9e6a\0\u01b0\0\u01b0"+
"\0\u9ea0\0\u9ed6\0\u9d26\0\u9f0c\0\u01b0\0\u01b0\0\u9f42\0\u9f78"+
"\0\u9fae\0\u9fe4\0\ua01a\0\u01b0\0\u01b0\0\ua050\0\u9fae\0\u01b0"+
"\0\ua086\0\u01b0\0\ua0bc\0\ua0f2\0\ua128\0\u01b0\0\ua15e\0\ua15e";
private static int [] zzUnpackRowMap() {
int [] result = new int[976];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
}
private static int zzUnpackRowMap(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int high = packed.charAt(i++) << 16;
result[j++] = high | packed.charAt(i++);
}
return j;
}
/**
* The transition table of the DFA
*/
private static final int [] ZZ_TRANS = zzUnpackTrans();
private static final String ZZ_TRANS_PACKED_0 =
"\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20"+
"\1\21\1\22\1\11\1\23\1\24\1\15\1\25\1\26"+
"\1\15\1\27\1\30\1\11\1\31\1\32\1\33\1\34"+
"\1\35\1\11\1\36\1\37\1\40\1\41\1\13\1\11"+
"\1\42\1\43\1\44\1\45\1\46\1\47\1\50\1\11"+
"\1\51\1\52\1\53\1\54\1\55\1\11\1\56\1\57"+
"\1\11\1\60\1\61\1\62\1\63\1\64\1\11\1\12"+
"\1\13\1\14\1\65\1\66\1\67\1\70\1\71\1\72"+
"\1\11\1\73\1\24\1\65\1\25\1\74\1\65\1\75"+
"\1\30\1\11\1\76\1\77\1\33\1\100\1\35\1\11"+
"\1\36\1\101\1\40\1\41\1\13\1\11\1\42\1\43"+
"\1\44\1\45\1\46\1\47\1\50\1\11\1\51\1\52"+
"\1\53\1\54\1\55\1\11\1\56\1\57\1\11\1\60"+
"\1\61\1\62\1\63\1\102\1\103\2\104\11\103\1\105"+
"\51\103\1\106\2\104\13\106\1\107\47\106\1\110\2\111"+
"\63\110\1\11\1\12\1\13\1\14\1\65\1\66\1\67"+
"\1\70\1\71\1\72\1\11\1\73\1\24\1\65\1\25"+
"\1\74\1\65\1\75\1\30\1\11\1\76\1\77\1\33"+
"\1\100\1\35\1\11\1\36\1\112\1\40\1\41\1\13"+
"\1\11\1\42\1\43\1\44\1\45\1\46\1\47\1\50"+
"\1\11\1\51\1\52\1\53\1\54\1\55\1\11\1\56"+
"\1\57\1\11\1\60\1\61\1\62\1\63\1\102\1\11"+
"\1\12\1\13\1\14\1\65\1\66\1\67\1\70\1\71"+
"\1\72\1\11\1\73\1\24\1\65\1\25\1\74\1\65"+
"\1\75\1\30\1\11\1\76\1\77\1\33\1\100\1\35"+
"\1\11\1\36\1\37\1\40\1\41\1\13\1\11\1\42"+
"\1\43\1\44\1\45\1\46\1\47\1\50\1\11\1\51"+
"\1\52\1\53\1\54\1\55\1\11\1\56\1\57\1\11"+
"\1\60\1\61\1\62\1\63\1\64\2\113\1\0\2\113"+
"\1\114\2\113\1\114\1\113\2\114\3\113\1\114\1\113"+
"\11\114\7\113\6\114\1\113\2\114\3\113\4\114\5\113"+
"\70\0\1\13\66\0\1\115\66\0\1\15\1\116\7\0"+
"\1\15\2\0\1\15\76\0\1\117\7\0\1\120\1\121"+
"\2\0\1\122\12\0\1\123\12\0\1\124\11\0\1\125"+
"\2\0\1\126\1\0\1\127\46\0\1\130\2\0\1\131"+
"\1\0\2\131\3\0\1\132\1\0\1\131\1\133\2\131"+
"\1\134\1\131\1\135\2\131\7\0\1\136\1\137\4\131"+
"\1\0\1\140\1\131\3\0\4\131\21\0\1\141\1\0"+
"\1\142\3\0\1\143\1\0\1\144\15\0\1\145\37\0"+
"\1\146\1\0\1\147\11\0\1\150\10\0\1\151\2\0"+
"\1\152\35\0\1\153\1\0\1\154\57\0\1\155\2\0"+
"\1\156\12\0\1\157\13\0\1\160\1\161\32\0\1\162"+
"\6\0\1\163\5\0\1\164\1\165\12\0\1\166\4\0"+
"\1\167\36\0\1\170\4\0\1\171\17\0\1\172\1\0"+
"\1\173\24\0\1\174\14\0\1\175\1\0\1\176\17\0"+
"\1\177\3\0\1\200\22\0\1\201\11\0\1\202\53\0"+
"\1\203\11\0\1\204\2\0\1\205\21\0\1\206\1\207"+
"\25\0\1\210\2\0\1\211\13\0\1\212\3\0\1\213"+
"\11\0\1\214\1\0\1\215\26\0\1\216\11\0\1\217"+
"\2\0\1\220\21\0\1\221\1\0\1\222\24\0\1\223"+
"\11\0\1\224\65\0\1\225\2\0\1\226\1\227\16\0"+
"\1\230\12\0\1\231\36\0\1\232\12\0\1\233\31\0"+
"\1\234\11\0\1\235\65\0\1\236\65\0\1\237\2\0"+
"\1\240\1\241\31\0\1\242\32\0\1\243\1\244\21\0"+
"\1\245\74\0\1\246\5\0\1\247\22\0\1\250\2\0"+
"\1\251\67\0\1\252\115\0\1\253\65\0\1\254\5\0"+
"\1\255\57\0\1\256\10\0\1\257\4\0\1\65\1\260"+
"\2\0\1\261\1\262\3\0\1\65\2\0\1\65\2\0"+
"\1\263\4\0\1\264\1\265\40\0\1\266\10\0\1\266"+
"\2\0\1\266\5\0\1\267\2\0\1\117\7\0\1\270"+
"\1\121\2\0\1\122\12\0\1\123\11\0\1\271\10\0"+
"\1\271\2\0\1\271\51\0\1\272\1\124\7\0\1\272"+
"\1\0\1\125\1\272\1\0\1\126\1\0\1\127\45\0"+
"\1\273\1\130\2\0\1\131\1\0\2\131\1\0\1\273"+
"\1\0\1\132\1\273\1\131\1\133\2\131\1\134\1\131"+
"\1\135\2\131\7\0\1\136\1\137\4\131\1\0\1\140"+
"\1\131\3\0\4\131\11\0\1\272\7\0\1\141\1\272"+
"\1\142\1\0\1\272\1\0\1\143\1\0\1\144\15\0"+
"\1\145\27\0\1\272\7\0\1\146\1\272\1\147\1\0"+
"\1\272\7\0\1\150\10\0\1\151\2\0\1\152\25\0"+
"\1\272\7\0\1\153\1\272\1\154\1\0\1\272\51\0"+
"\1\272\3\0\1\162\4\0\1\272\1\0\1\163\1\272"+
"\4\0\1\164\1\165\12\0\1\166\4\0\1\167\23\0"+
"\1\272\10\0\1\272\1\0\1\170\1\272\3\0\1\171"+
"\17\0\1\172\1\0\1\173\23\0\1\266\1\201\7\0"+
"\1\266\1\0\1\202\1\266\52\0\1\274\2\0\1\274"+
"\1\0\2\274\3\0\1\274\1\0\11\274\7\0\6\274"+
"\1\0\2\274\3\0\4\274\4\0\1\275\35\0\1\276"+
"\16\0\1\256\10\0\1\257\1\103\2\0\11\103\1\0"+
"\51\103\14\0\1\277\51\0\1\106\2\0\13\106\1\0"+
"\47\106\16\0\1\300\134\0\1\275\4\0\2\114\2\0"+
"\1\114\1\0\2\114\1\0\1\114\1\0\14\114\6\0"+
"\6\114\1\0\2\114\3\0\4\114\11\0\1\301\10\0"+
"\1\301\2\0\1\301\71\0\1\302\23\0\1\303\25\0"+
"\1\304\32\0\1\305\1\306\3\0\1\307\22\0\1\310"+
"\20\0\1\311\104\0\1\312\64\0\1\313\43\0\1\314"+
"\2\0\1\315\14\0\1\316\1\317\66\0\1\320\71\0"+
"\1\321\62\0\1\322\1\323\24\0\1\131\2\0\1\131"+
"\1\324\2\131\3\0\1\131\1\0\11\131\7\0\6\131"+
"\1\0\2\131\3\0\3\131\1\325\12\0\1\131\2\0"+
"\1\131\1\324\2\131\3\0\1\131\1\0\11\131\7\0"+
"\6\131\1\0\2\131\3\0\4\131\12\0\1\131\2\0"+
"\1\131\1\324\2\131\3\0\1\131\1\0\11\131\7\0"+
"\4\131\1\326\1\131\1\0\2\131\3\0\4\131\12\0"+
"\1\131\2\0\1\131\1\324\2\131\3\0\1\131\1\0"+
"\11\131\7\0\1\327\5\131\1\0\2\131\3\0\4\131"+
"\12\0\1\131\2\0\1\131\1\324\2\131\3\0\1\131"+
"\1\0\1\131\1\330\7\131\7\0\6\131\1\0\2\131"+
"\3\0\4\131\12\0\1\331\2\0\1\131\1\324\2\131"+
"\3\0\1\131\1\0\11\131\7\0\6\131\1\0\1\332"+
"\1\131\3\0\4\131\12\0\1\333\2\0\1\131\1\324"+
"\2\131\3\0\1\334\1\0\11\131\7\0\6\131\1\0"+
"\2\131\3\0\4\131\12\0\1\335\2\0\1\131\1\324"+
"\2\131\3\0\1\131\1\0\11\131\7\0\6\131\1\0"+
"\1\336\1\131\3\0\4\131\12\0\1\131\2\0\1\131"+
"\1\324\2\131\3\0\1\131\1\0\11\131\7\0\4\131"+
"\1\337\1\131\1\0\2\131\3\0\4\131\22\0\1\340"+
"\65\0\1\341\113\0\1\342\63\0\1\343\43\0\1\344"+
"\2\0\1\345\60\0\1\346\2\0\1\346\62\0\1\347"+
"\2\0\1\347\52\0\1\350\42\0\1\351\57\0\1\352"+
"\73\0\1\353\21\0\2\354\2\0\1\354\2\0\1\354"+
"\1\0\1\354\2\0\1\354\1\0\1\354\2\0\1\354"+
"\15\0\1\354\26\0\2\355\2\0\1\355\2\0\1\355"+
"\1\0\1\355\2\0\1\355\1\0\1\355\2\0\1\355"+
"\15\0\1\355\100\0\1\356\35\0\1\357\65\0\1\360"+
"\26\0\1\361\52\0\1\362\66\0\1\363\4\0\1\364"+
"\64\0\1\162\4\0\1\365\37\0\1\366\13\0\1\367"+
"\3\0\1\370\36\0\1\371\23\0\1\372\4\0\1\373"+
"\7\0\1\374\35\0\1\375\102\0\1\376\61\0\1\377"+
"\1\u0100\64\0\1\u0101\74\0\1\u0102\57\0\1\u0103\15\0"+
"\1\u0104\63\0\1\u0105\30\0\1\u0106\5\0\1\u0107\51\0"+
"\1\u0108\71\0\1\u0109\2\0\1\u010a\22\0\1\u010b\61\0"+
"\1\u010c\74\0\1\u010d\56\0\1\u010e\50\0\1\u010f\1\0"+
"\1\u0110\47\0\1\u0111\15\0\1\u0112\15\0\1\u0113\1\u0114"+
"\33\0\1\u0115\31\0\1\u0116\25\0\1\u0117\11\0\1\u0118"+
"\4\0\1\u0119\102\0\1\u011a\1\u011b\2\0\1\u011c\25\0"+
"\1\u011d\105\0\1\u011e\13\0\1\u011f\71\0\1\u0120\44\0"+
"\1\u0121\102\0\1\u0122\55\0\1\u0123\64\0\1\u0124\10\0"+
"\1\u0125\72\0\1\u0126\61\0\1\u0127\3\0\1\u0128\61\0"+
"\1\u0129\64\0\1\u012a\53\0\1\u012b\77\0\1\u012c\4\0"+
"\1\u012d\45\0\1\u012e\13\0\1\u012f\45\0\1\u0130\62\0"+
"\1\u0131\2\0\1\u0132\106\0\1\u0133\27\0\1\u0134\104\0"+
"\1\u0135\1\u0136\62\0\1\u0137\3\0\1\u0138\14\0\1\u0139"+
"\4\0\1\u013a\1\u013b\60\0\1\u013c\31\0\1\u013d\122\0"+
"\1\u013e\25\0\1\u013f\110\0\1\u0140\61\0\1\u0141\46\0"+
"\1\u0142\16\0\1\u0143\65\0\1\u0144\103\0\1\u0145\65\0"+
"\1\u0146\64\0\1\u0147\30\0\1\u0148\1\0\2\u0149\5\0"+
"\1\u0148\2\0\1\u0148\51\0\1\u014a\1\0\2\u014b\5\0"+
"\1\u014a\2\0\1\u014a\45\0\4\u014c\1\273\1\u014d\2\u014c"+
"\1\261\1\u014c\2\0\1\u014c\1\273\1\u014c\1\0\1\273"+
"\11\0\7\u014c\6\0\1\u014c\2\0\3\u014c\4\0\5\u014c"+
"\4\0\1\266\4\0\1\u014e\3\0\1\266\2\0\1\266"+
"\51\0\1\266\10\0\1\266\2\0\1\266\51\0\1\266"+
"\3\0\1\304\4\0\1\266\2\0\1\266\22\0\1\305"+
"\1\306\3\0\1\307\21\0\1\271\10\0\1\271\2\0"+
"\1\271\7\0\1\264\41\0\1\272\4\0\1\u014f\3\0"+
"\1\272\2\0\1\272\51\0\1\273\1\u014d\2\0\1\261"+
"\4\0\1\273\2\0\1\273\54\0\1\u0150\24\0\1\u0151"+
"\1\u0152\34\0\1\301\4\0\1\u0153\3\0\1\301\2\0"+
"\1\301\73\0\1\u0154\21\0\1\u0155\22\0\1\u0156\70\0"+
"\1\u0157\2\0\1\u0158\10\0\1\u0159\1\u015a\1\u015b\1\0"+
"\1\u015c\15\0\1\u015d\1\0\1\u015e\1\u015f\2\0\1\u0160"+
"\30\0\1\u0161\114\0\1\u0162\64\0\1\u0163\66\0\1\u0164"+
"\24\0\1\u0165\134\0\1\u0166\35\0\1\u0167\103\0\1\u0168"+
"\30\0\1\u0169\14\0\1\u016a\67\0\1\u016b\65\0\1\u016c"+
"\54\0\1\u016d\74\0\1\u016e\50\0\1\u016f\65\0\1\u0170"+
"\65\0\1\131\2\0\1\131\1\u0171\2\131\3\0\1\131"+
"\1\0\11\131\7\0\6\131\1\0\2\131\3\0\1\131"+
"\1\u0172\2\131\12\0\1\131\2\0\1\131\1\u0173\2\131"+
"\3\0\1\131\1\0\11\131\7\0\6\131\1\0\2\131"+
"\3\0\4\131\12\0\1\131\2\0\1\u0174\1\324\2\131"+
"\3\0\1\131\1\0\11\131\7\0\6\131\1\0\2\131"+
"\3\0\4\131\12\0\1\131\2\0\1\131\1\324\2\131"+
"\3\0\1\131\1\0\11\131\7\0\1\131\1\u0175\4\131"+
"\1\0\2\131\3\0\4\131\12\0\1\131\2\0\1\131"+
"\1\u0176\2\131\3\0\1\131\1\0\11\131\7\0\6\131"+
"\1\0\2\131\3\0\4\131\12\0\1\131\2\0\1\131"+
"\1\u0177\2\131\3\0\1\131\1\0\11\131\7\0\6\131"+
"\1\0\2\131\3\0\4\131\12\0\1\131\2\0\1\131"+
"\1\u0178\2\131\3\0\1\131\1\0\11\131\7\0\6\131"+
"\1\0\2\131\3\0\3\131\1\u0179\12\0\1\131\2\0"+
"\1\131\1\324\2\131\3\0\1\131\1\0\11\131\7\0"+
"\6\131\1\0\1\u017a\1\131\3\0\4\131\12\0\1\131"+
"\2\0\1\131\1\u017b\2\131\3\0\1\131\1\0\11\131"+
"\7\0\6\131\1\0\2\131\3\0\4\131\12\0\1\131"+
"\2\0\1\131\1\u017c\2\131\3\0\1\131\1\0\11\131"+
"\7\0\6\131\1\0\2\131\3\0\4\131\12\0\1\131"+
"\2\0\1\131\1\324\2\131\3\0\1\131\1\0\11\131"+
"\7\0\3\131\1\u017d\2\131\1\0\2\131\3\0\4\131"+
"\21\0\1\u017e\1\340\65\0\1\341\1\u017e\126\0\1\u017f"+
"\16\0\1\u0180\120\0\1\u0181\63\0\1\u0182\40\0\1\u0183"+
"\1\346\2\0\1\346\62\0\1\347\1\u0183\1\0\1\347"+
"\106\0\1\u0184\3\0\1\u0185\44\0\1\u0186\116\0\1\u0187"+
"\14\0\2\354\2\0\1\354\2\0\1\354\1\u0188\1\354"+
"\2\0\1\354\1\0\1\354\2\0\1\354\15\0\1\354"+
"\26\0\2\355\2\0\1\355\2\0\1\355\1\0\1\355"+
"\1\u0188\1\0\1\355\1\0\1\355\2\0\1\355\15\0"+
"\1\355\44\0\1\u0189\113\0\1\u018a\34\0\1\u018b\4\0"+
"\1\u018c\102\0\1\u018d\43\0\1\u018e\53\0\1\u018f\104\0"+
"\1\u0190\111\0\1\u0191\22\0\1\u0192\106\0\1\u0193\103\0"+
"\1\u0194\63\0\1\u0195\30\0\1\u0196\37\0\1\u0197\64\0"+
"\1\u0198\40\0\1\u0199\22\0\1\u019a\45\0\1\u019b\23\0"+
"\1\u019c\41\0\1\u019d\50\0\1\u019e\123\0\1\u019f\76\0"+
"\1\u01a0\16\0\1\u01a1\124\0\1\u01a2\26\0\1\u01a3\65\0"+
"\1\u01a4\121\0\1\u01a5\71\0\1\u01a6\50\0\1\u01a7\105\0"+
"\1\u01a8\22\0\1\u01a9\65\0\1\u01aa\77\0\1\u01ab\56\0"+
"\1\u01ac\116\0\1\u01ad\50\0\1\u01ae\22\0\1\u01af\4\0"+
"\1\u01b0\65\0\1\u01b1\37\0\1\u01b2\65\0\1\u01b3\61\0"+
"\1\u01b4\105\0\1\u01b5\30\0\1\u01b6\123\0\1\u01b7\51\0"+
"\1\u01b8\13\0\1\u01b9\4\0\1\u01ba\56\0\1\u01bb\14\0"+
"\1\u01bc\17\0\1\u01bd\101\0\1\u01be\1\0\1\u01bf\104\0"+
"\1\u01c0\45\0\1\214\40\0\1\u011e\1\u01c1\1\u01c2\63\u011e"+
"\43\0\1\u01c3\44\0\1\u01c4\104\0\1\u01bf\34\0\1\u01c5"+
"\125\0\1\u01c6\37\0\1\u01c7\50\0\1\u01c8\24\0\1\u01c9"+
"\40\0\1\u01ca\122\0\1\u01cb\36\0\1\u01cc\126\0\1\u01cd"+
"\65\0\1\u01ce\35\0\1\u01cf\111\0\1\u01d0\45\0\1\u01d1"+
"\15\0\1\u01d2\24\0\1\u01d3\122\0\1\u01d4\70\0\1\u01d5"+
"\46\0\1\u01d6\65\0\1\u01d7\101\0\1\u01d8\73\0\1\u01d9"+
"\34\0\1\u01da\56\0\1\u01db\31\0\1\u01dc\67\0\1\u01dd"+
"\63\0\1\u01de\1\0\1\u01df\7\0\1\u01e0\55\0\1\u01e1"+
"\45\0\1\u01e2\102\0\1\u01e3\70\0\1\u01e4\50\0\1\u01e5"+
"\77\0\1\u01e6\31\0\1\u01e7\130\0\1\u01e8\62\0\1\u01e9"+
"\62\0\1\u01ea\73\0\1\u01eb\37\0\1\u01ec\107\0\1\u01ed"+
"\31\0\1\u01ee\61\0\1\u0148\4\0\1\u0153\3\0\1\u0148"+
"\2\0\1\u0148\51\0\1\u01ef\10\0\1\u01ef\2\0\1\u01ef"+
"\51\0\1\u014a\10\0\1\u014a\2\0\1\u014a\51\0\1\u01ef"+
"\1\0\2\u0149\5\0\1\u01ef\2\0\1\u01ef\51\0\1\u01f0"+
"\10\0\1\u01f0\2\0\1\u01f0\51\0\1\u01f1\10\0\1\u01f1"+
"\2\0\1\u01f1\52\0\1\u01f2\2\0\1\u01f2\1\0\2\u01f2"+
"\3\0\1\u01f2\1\0\11\u01f2\7\0\6\u01f2\1\0\2\u01f2"+
"\3\0\4\u01f2\12\0\1\274\2\0\1\274\1\0\2\274"+
"\3\0\1\274\1\0\11\274\7\0\6\274\1\0\2\274"+
"\3\0\4\274\6\0\1\u01f3\1\u01f4\31\0\1\u01f4\1\0"+
"\2\u01f4\32\0\1\u01f5\10\0\1\u01f5\2\0\1\u01f5\115\0"+
"\1\u01f6\56\0\1\u01f7\3\0\1\u01f8\37\0\1\u01f9\110\0"+
"\1\u01fa\50\0\1\u01fb\13\0\1\u01fc\43\0\1\u01fd\4\0"+
"\1\u01fe\17\0\1\u01ff\26\0\1\u0200\36\0\1\u0201\66\0"+
"\1\u0202\37\0\1\u0203\123\0\1\u0204\33\0\1\u0205\52\0"+
"\1\u0206\62\0\1\u0207\135\0\1\u0208\15\0\1\u0209\104\0"+
"\1\u020a\24\0\1\u020b\72\0\1\u020c\51\0\1\u020d\70\0"+
"\1\u020e\64\0\1\u020f\67\0\1\u0210\65\0\1\u0211\61\0"+
"\1\u0212\66\0\1\u0213\63\0\1\u0214\31\0\1\131\2\0"+
"\1\131\1\u0215\2\131\3\0\1\131\1\0\11\131\7\0"+
"\6\131\1\0\2\131\3\0\4\131\12\0\1\131\2\0"+
"\1\131\1\u0216\2\131\3\0\1\131\1\0\11\131\7\0"+
"\6\131\1\0\2\131\3\0\4\131\12\0\1\131\2\0"+
"\1\131\1\324\2\131\3\0\1\131\1\0\5\131\1\u0217"+
"\3\131\7\0\6\131\1\0\2\131\3\0\4\131\12\0"+
"\1\131\2\0\1\131\1\324\2\131\3\0\1\131\1\0"+
"\11\131\7\0\6\131\1\0\2\131\3\0\1\131\1\u0218"+
"\2\131\12\0\1\131\2\0\1\131\1\u0219\2\131\3\0"+
"\1\131\1\0\11\131\7\0\6\131\1\0\2\131\3\0"+
"\4\131\12\0\1\u021a\2\0\1\131\1\324\2\131\3\0"+
"\1\131\1\0\11\131\7\0\6\131\1\0\2\131\3\0"+
"\4\131\33\0\1\u021b\116\0\1\u021c\65\0\1\u021d\13\0"+
"\1\u021e\102\0\1\u021f\62\0\1\u0220\107\0\1\u0221\71\0"+
"\1\u0222\63\0\1\u0223\51\0\1\u0224\101\0\1\u0225\65\0"+
"\1\u0226\50\0\1\u0227\56\0\1\u0228\70\0\1\u0229\104\0"+
"\1\u022a\53\0\1\u022b\106\0\1\u022c\61\0\1\u022d\50\0"+
"\1\u022e\11\0\1\u022f\3\0\1\u0230\44\0\1\u0231\65\0"+
"\1\u0232\106\0\1\u0233\44\0\1\u0234\103\0\1\u0235\45\0"+
"\1\u0236\31\0\1\u0237\53\0\1\u0238\77\0\1\u0239\61\0"+
"\1\u023a\60\0\1\u023b\27\0\1\u023c\134\0\1\u023d\60\0"+
"\1\u01a5\4\0\1\u023e\30\0\1\u023f\112\0\1\u0240\7\0"+
"\1\u0241\33\0\1\u0242\110\0\1\u0243\44\0\1\u0244\111\0"+
"\1\u0245\65\0\1\u0246\64\0\1\u01af\4\0\1\u01b0\16\0"+
"\1\u0247\126\0\1\u0248\43\0\1\u0249\65\0\1\u024a\106\0"+
"\1\u024b\25\0\1\u024c\65\0\1\u024d\130\0\1\u024e\37\0"+
"\1\u024f\67\0\1\u01be\66\0\1\u011e\45\0\1\u011e\77\0"+
"\1\u0250\50\0\1\u01c2\125\0\1\u0251\52\0\1\u0252\43\0"+
"\1\u01be\125\0\1\u0253\46\0\1\u0254\56\0\1\u0255\4\0"+
"\1\u0256\51\0\1\u0257\31\0\1\u0258\11\0\1\u0259\35\0"+
"\1\u025a\46\0\1\u025b\123\0\1\u025c\44\0\1\u025d\1\0"+
"\1\u025e\103\0\1\u025f\42\0\1\u0260\70\0\1\u0261\50\0"+
"\1\u0262\106\0\1\u0263\44\0\1\u0264\134\0\1\u0265\56\0"+
"\1\u0266\71\0\1\u0267\2\0\1\u0268\14\0\1\u0269\124\0"+
"\1\u026a\77\0\1\u026b\56\0\1\u026c\65\0\1\u026d\61\0"+
"\1\u026e\34\0\1\u026f\117\0\1\u0270\30\0\1\u0271\65\0"+
"\1\u0272\65\0\1\u0273\65\0\1\u0274\130\0\1\u0275\22\0"+
"\1\u0276\134\0\1\u0277\15\0\1\u01f0\1\u014f\7\0\1\u01f0"+
"\2\0\1\u01f0\101\0\1\u0151\1\u0152\32\0\1\u01f4\137\0"+
"\1\u0278\21\0\1\u0279\116\0\1\u027a\43\0\1\u027b\116\0"+
"\1\u027c\62\0\1\u027d\62\0\1\u027e\64\0\1\u027f\66\0"+
"\1\u0280\36\0\1\u0281\71\0\1\u0282\56\0\1\u0283\105\0"+
"\1\u0284\42\0\1\u0285\104\0\1\u0286\106\0\1\u0287\61\0"+
"\1\u0288\51\0\1\u0289\63\0\1\u028a\64\0\1\u028b\62\0"+
"\1\u028c\113\0\1\u028d\62\0\1\u028e\77\0\1\u028f\33\0"+
"\1\u0290\50\0\1\u0291\130\0\1\u0292\43\0\1\u0293\44\0"+
"\1\u0294\2\0\1\131\1\324\2\131\3\0\1\131\1\0"+
"\11\131\7\0\6\131\1\0\2\131\3\0\4\131\12\0"+
"\1\131\2\0\1\131\1\u0295\2\131\3\0\1\131\1\0"+
"\11\131\7\0\6\131\1\0\2\131\3\0\4\131\12\0"+
"\1\131\2\0\1\131\1\u0296\2\131\3\0\1\131\1\0"+
"\11\131\7\0\6\131\1\0\2\131\3\0\4\131\35\0"+
"\1\u0297\45\0\1\u0298\131\0\1\u0299\21\0\1\u029a\125\0"+
"\1\u029b\56\0\1\u029c\67\0\1\u029d\44\0\1\u029e\67\0"+
"\1\u029f\102\0\1\u02a0\47\0\1\u02a1\64\0\1\u02a2\71\0"+
"\1\u02a3\100\0\1\u02a4\74\0\1\u02a5\44\0\1\u02a6\105\0"+
"\1\u022b\4\0\1\u02a7\21\0\1\u02a8\62\0\1\u02a9\130\0"+
"\1\u02aa\42\0\1\u02ab\101\0\1\u02ac\71\0\1\u02ad\70\0"+
"\1\u02ae\60\0\1\u02af\64\0\1\u02b0\73\0\1\u02b1\41\0"+
"\1\u02b2\111\0\1\u02b3\56\0\1\u02b4\70\0\1\u02b5\47\0"+
"\1\u02b6\105\0\1\u02b7\43\0\1\u02b8\102\0\1\u02b9\31\0"+
"\1\u02ba\104\0\1\u02bb\46\0\1\u02bc\123\0\1\u02bd\50\0"+
"\1\u02be\61\0\1\u02bf\53\0\1\u02c0\120\0\1\u02c1\72\0"+
"\1\u02c2\62\0\1\u011e\64\0\1\u02c3\67\0\1\u02c4\24\0"+
"\1\u02c5\106\0\1\u02c6\115\0\1\u02c7\50\0\1\u02c8\100\0"+
"\1\u02c9\35\0\1\u02ca\66\0\1\u02cb\105\0\1\u02cc\42\0"+
"\1\u02cd\67\0\1\u02ce\102\0\1\u02cf\31\0\1\u02d0\121\0"+
"\1\u02d1\67\0\1\u02d2\70\0\1\u02d3\64\0\1\u02d4\24\0"+
"\1\u02d5\10\0\1\u02d5\2\0\1\u02d5\115\0\1\u02d6\43\0"+
"\1\u02d7\100\0\1\u02d8\34\0\1\u02d9\124\0\1\u026f\4\0"+
"\1\u02da\16\0\1\u02db\130\0\1\u02dc\71\0\1\u02dd\35\0"+
"\1\u02de\67\0\1\u02df\61\0\1\u02e0\106\0\1\u02e1\27\0"+
"\1\u02e2\102\0\1\u02e3\50\0\1\u02e4\123\0\1\u02e5\27\0"+
"\1\u02e6\125\0\1\u02e7\47\0\1\u02e8\102\0\1\u02e9\26\0"+
"\1\u02ea\125\0\1\u02eb\61\0\1\u02ec\46\0\1\u02ed\113\0"+
"\1\u02ee\22\0\1\u02ef\122\0\1\u02f0\66\0\1\u02f1\27\0"+
"\1\u02f2\130\0\1\u02f3\57\0\1\u02f4\26\0\1\u02f5\24\0"+
"\1\u02f6\111\0\1\u02f7\35\0\1\u02f8\46\0\1\131\2\0"+
"\1\131\1\u02f9\2\131\3\0\1\131\1\0\11\131\7\0"+
"\6\131\1\0\2\131\3\0\4\131\27\0\1\u02fa\65\0"+
"\1\u02fb\117\0\1\u02fc\30\0\1\u02fd\70\0\1\u02fe\50\0"+
"\1\u02ff\123\0\1\u0300\44\0\1\u0301\111\0\1\u0302\64\0"+
"\1\u0303\70\0\1\u0304\71\0\1\u0305\65\0\1\u0306\65\0"+
"\1\u0307\61\0\1\u0308\22\0\1\u0309\125\0\1\u030a\42\0"+
"\1\u030b\71\0\1\u030c\44\0\1\u030d\104\0\1\u030e\111\0"+
"\1\u030f\34\0\1\u0310\111\0\1\u0311\65\0\1\u0312\4\0"+
"\1\u0313\65\0\1\u0314\71\0\1\u0315\60\0\1\u02b7\4\0"+
"\1\u0316\54\0\1\u0317\51\0\1\u0318\103\0\1\u0319\37\0"+
"\1\u031a\116\0\1\u031b\41\0\1\u031c\107\0\1\u031d\63\0"+
"\1\u031e\71\0\1\u031f\22\0\1\u0320\70\0\1\u01bf\77\0"+
"\1\u011e\106\0\1\u0321\27\0\1\u0322\130\0\1\u0323\43\0"+
"\1\u0324\114\0\1\u0325\64\0\1\u0326\53\0\1\u0327\64\0"+
"\1\u0328\70\0\1\u0329\52\0\1\u032a\104\0\1\u032b\37\0"+
"\1\u032c\67\0\1\u032d\65\0\1\u032e\103\0\1\u032f\65\0"+
"\1\u0330\102\0\1\u0331\53\0\1\u0332\62\0\1\u0333\73\0"+
"\1\u0334\60\0\1\u0335\41\0\1\u0336\113\0\1\u0337\62\0"+
"\1\u0338\30\0\1\u0339\107\0\1\u033a\106\0\1\u033b\37\0"+
"\1\u033c\110\0\1\u033d\25\0\1\u033e\102\0\1\u033f\53\0"+
"\1\u0340\124\0\1\u02f4\4\0\1\u0341\15\0\1\u0342\10\0"+
"\1\u0342\2\0\1\u0342\112\0\1\u0343\37\0\1\u0344\111\0"+
"\1\u0345\72\0\1\u0346\62\0\1\u0347\62\0\1\u0348\77\0"+
"\1\u0349\61\0\1\u034a\65\0\1\u034b\22\0\1\u034c\77\0"+
"\1\u034d\53\0\1\u034e\14\0\1\u034f\66\0\1\u0350\56\0"+
"\1\u0351\1\0\1\u0351\30\0\1\u0309\21\0\1\u0352\125\0"+
"\1\u0353\46\0\1\u0354\111\0\1\u0355\22\0\1\u0356\121\0"+
"\1\u0357\46\0\1\u0358\50\0\1\u0359\104\0\1\u035a\65\0"+
"\1\u035b\110\0\1\u0318\4\0\1\u035c\52\0\1\u035d\31\0"+
"\1\u035e\77\0\1\u035f\113\0\1\u0360\25\0\1\u0361\134\0"+
"\1\u0362\56\0\1\u0363\65\0\1\u0364\70\0\1\u0365\20\0"+
"\1\u0366\110\0\1\u0367\44\0\1\u0368\63\0\1\u0369\67\0"+
"\1\u036a\130\0\1\u036b\65\0\1\u036c\73\0\1\u036d\14\0"+
"\1\u036e\70\0\1\u036f\102\0\1\u0370\102\0\1\u0371\47\0"+
"\1\u0372\111\0\1\u0373\61\0\1\u0374\43\0\1\u0375\50\0"+
"\1\u0376\127\0\1\u033a\4\0\1\u0377\30\0\1\u0378\110\0"+
"\1\u0379\30\0\1\u037a\121\0\1\u037b\74\0\1\u037c\22\0"+
"\1\u037d\121\0\1\u037e\31\0\1\u037f\102\0\1\u0380\50\0"+
"\1\u0381\121\0\1\u0382\65\0\1\u0383\37\0\1\u0384\126\0"+
"\1\u0385\11\0\1\u0351\2\0\11\u0351\1\u0386\1\u0351\1\u0386"+
"\47\u0351\4\0\1\u0387\10\0\1\u0387\2\0\1\u0387\52\0"+
"\1\u0388\123\0\1\u0389\32\0\1\u038a\103\0\1\u038b\61\0"+
"\1\u038c\104\0\1\u038d\100\0\1\u038e\56\0\1\u038f\61\0"+
"\1\u0390\31\0\1\u0391\70\0\1\u0392\122\0\1\u0393\44\0"+
"\1\u0394\45\0\1\u0395\10\0\1\u0395\2\0\1\u0395\51\0"+
"\1\u0396\10\0\1\u0396\2\0\1\u0396\112\0\1\u0397\70\0"+
"\1\u0398\22\0\1\u0399\65\0\1\u039a\102\0\1\u039b\65\0"+
"\1\u039c\62\0\1\u039d\116\0\1\u039e\63\0\1\u039f\64\0"+
"\1\u03a0\63\0\1\u03a1\27\0\1\u03a2\123\0\1\u03a3\72\0"+
"\1\u03a4\34\0\1\u03a5\110\0\1\u03a6\23\0\1\u0351\1\u01c1"+
"\1\u01c2\11\u0351\1\u0386\1\u0351\1\u0386\47\u0351\54\0\1\u03a7"+
"\16\0\1\u03a8\122\0\1\u03a9\30\0\1\u03aa\104\0\1\u03ab"+
"\102\0\1\u03ac\27\0\1\u03ad\67\0\1\u03ae\134\0\1\u03af"+
"\61\0\1\u03b0\60\0\1\u03b1\63\0\1\u03b2\50\0\1\u03b3"+
"\46\0\1\u03b4\104\0\1\u03b5\105\0\1\u03b6\26\0\1\u03b7"+
"\134\0\1\u03b8\21\0\1\u03b9\103\0\1\u03ba\43\0\1\u03bb"+
"\10\0\1\u03bb\2\0\1\u03bb\55\0\1\u03bc\77\0\1\u03bd"+
"\50\0\1\u03be\121\0\1\u03bf\52\0\1\u03c0\65\0\1\u03c1"+
"\61\0\1\u03c2\67\0\1\u03c3\115\0\1\u03c4\16\0\1\u03c5"+
"\104\0\1\u03c6\110\0\1\u03c7\4\0\1\u03c8\24\0\1\u03c9"+
"\115\0\1\u03ca\41\0\1\u03cb\110\0\1\u03cc\64\0\1\u03cd"+
"\31\0\1\u03ce\63\0\1\u03cf\66\0\1\u03d0\10\0\1\u03d0"+
"\2\0\1\u03d0\45\0";
private static int [] zzUnpackTrans() {
int [] result = new int[41364];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
}
private static int zzUnpackTrans(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
value--;
do result[j++] = value; while (--count > 0);
}
return j;
}
/* error codes */
private static final int ZZ_UNKNOWN_ERROR = 0;
private static final int ZZ_NO_MATCH = 1;
private static final int ZZ_PUSHBACK_2BIG = 2;
/* error messages for the codes above */
private static final String ZZ_ERROR_MSG[] = {
"Unkown internal scanner error",
"Error: could not match input",
"Error: pushback value was too large"
};
/**
* ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\10\0\1\11\1\1\1\11\3\1\2\11\3\1\2\11"+
"\10\1\4\11\11\1\2\11\3\1\1\11\2\1\1\11"+
"\20\1\1\11\3\1\2\11\1\1\1\11\1\1\1\11"+
"\7\0\1\1\36\0\2\11\1\1\13\0\1\1\34\0"+
"\1\11\6\0\2\11\3\0\5\11\2\0\1\2\3\11"+
"\5\0\1\1\1\0\4\11\3\0\1\1\17\0\1\11"+
"\26\0\1\11\11\0\1\11\64\0\1\1\11\0\1\11"+
"\23\0\1\1\1\0\1\1\1\0\1\15\5\0\1\2"+
"\2\0\1\11\12\0\1\11\1\0\1\1\2\0\1\1"+
"\1\11\7\0\1\11\2\0\1\11\1\0\1\11\2\0"+
"\3\11\2\0\2\11\1\0\1\11\1\0\1\11\2\0"+
"\1\11\1\1\2\0\2\11\25\0\1\1\1\0\1\11"+
"\2\0\1\11\3\0\1\11\3\0\1\11\4\0\3\11"+
"\3\0\1\11\12\0\1\1\1\11\5\0\1\11\2\0"+
"\1\1\1\0\2\11\4\0\2\11\6\0\2\1\3\0"+
"\1\11\5\0\3\11\5\0\4\1\1\0\1\5\1\15"+
"\1\1\3\0\1\11\1\0\1\11\14\0\1\11\14\0"+
"\2\11\2\0\1\11\2\0\1\1\17\0\1\11\12\0"+
"\3\11\3\0\2\11\2\0\1\11\5\0\1\11\6\0"+
"\1\11\12\0\1\11\10\0\4\11\2\0\1\11\2\0"+
"\1\11\6\0\2\11\1\1\1\0\3\11\20\0\1\11"+
"\5\0\1\11\1\0\1\1\3\0\2\11\2\0\1\11"+
"\15\0\1\11\2\0\1\11\3\0\1\11\1\0\1\11"+
"\1\1\1\0\1\1\11\0\1\11\10\0\1\11\2\0"+
"\1\11\7\0\1\11\3\0\1\1\1\11\1\0\6\11"+
"\1\0\1\11\4\0\1\11\5\0\1\11\10\0\1\11"+
"\3\0\1\11\1\0\1\11\2\0\1\11\10\0\3\11"+
"\2\0\1\1\2\0\1\11\7\0\3\11\1\0\1\11"+
"\3\0\1\11\2\0\1\11\4\0\2\11\1\1\2\0"+
"\1\1\5\0\1\11\1\1\7\0\1\11\6\0\2\11"+
"\1\1\4\0\4\11\3\0\1\11\6\0\1\11\1\0"+
"\1\11\1\0\1\11\2\0\1\11\5\0\1\11\2\0"+
"\1\11\1\0\2\11\5\0\1\11\2\0\1\11\1\0"+
"\1\11\2\0\2\11\1\0\2\11\3\0\4\11\3\0"+
"\1\11\1\0\1\1\2\11\4\0\5\11\2\0\3\1"+
"\2\0\1\11\4\0\2\11\1\0\1\11\1\0\1\11"+
"\2\0\2\11\1\0\1\11\4\0\1\11\2\0\1\11"+
"\1\0\1\11\2\0\2\11\2\0\1\1\1\0\2\11"+
"\2\0\1\1\2\0\2\11\2\0\1\11\1\0\1\11"+
"\2\0\1\1\1\11\1\0\1\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[976];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
}
private static int zzUnpackAttribute(String packed, int offset, int [] result) {
int i = 0; /* index in packed string */
int j = offset; /* index in unpacked array */
int l = packed.length();
while (i < l) {
int count = packed.charAt(i++);
int value = packed.charAt(i++);
do result[j++] = value; while (--count > 0);
}
return j;
}
/** the input device */
private java.io.Reader zzReader;
/** the current state of the DFA */
private int zzState;
/** the current lexical state */
private int zzLexicalState = YYINITIAL;
/** this buffer contains the current text to be matched and is
the source of the yytext() string */
private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
/** the textposition at the last accepting state */
private int zzMarkedPos;
/** the textposition at the last state to be included in yytext */
private int zzPushbackPos;
/** the current text position in the buffer */
private int zzCurrentPos;
/** startRead marks the beginning of the yytext() string in the buffer */
private int zzStartRead;
/** endRead marks the last character in the buffer, that has been read
from input */
private int zzEndRead;
/** number of newlines encountered up to the start of the matched text */
private int yyline;
/** the number of characters up to the start of the matched text */
private int yychar;
/**
* the number of characters from the last newline up to the start of the
* matched text
*/
private int yycolumn;
/**
* zzAtBOL == true <=> the scanner is currently at the beginning of a line
*/
private boolean zzAtBOL = true;
/** zzAtEOF == true <=> the scanner is at the EOF */
private boolean zzAtEOF;
/* user code: */
private IToken prevToken = null;
private FixedFormLexerPrepass prepass;
private TokenFactory tokenFactory;
public FixedFormLexerPhase1(InputStream in, FixedFormLexerPrepass _prepass, TokenFactory tokenFactory) {
this(new LineAppendingInputStream(in));
this.prepass=_prepass;
this.tokenFactory = tokenFactory;
}
//unset start of line state
private void unsetSOL() {
if (yystate()==YYINITIAL) yybegin(YYSTANDARD);
}
public int getLine() {
return prepass.getLine(yychar);
}
public int getCol() {
return prepass.getColumn(yychar);
}
protected IFile lastTokenFile = null;
protected int lastTokenLine = 1, lastTokenCol = 1, lastTokenFileOffset = 0, lastTokenStreamOffset = 0, lastTokenLength = 0;
private IToken token(Terminal terminal)
{
//For some there are 2 terminals of type Terminal.END_OF_INPUT that get here in a row
// so, technically, the function below sets the whitespaceAfter on the first one it sees,
// which is not really the expected behavior, but that token's whitespace is not used for
// anything anyway, so this should be OK
if(prevToken != null && terminal == Terminal.END_OF_INPUT)
{
//We need to manually set this, because the input string to the lexer does not
// have any whitespace, or at the very list has it trimmed, so we are loosing all
// of the trailing whitespace on any refactoring. That is why we assign it as
// whitespaceAfter to the last END_OF_STATEMENT token before END_OF_INPUT
String whiteAfter = prepass.getTrailingWhitespace();
prevToken.setWhiteAfter(whiteAfter);
}
lastTokenLine = prepass.getLine(yychar)+1;
lastTokenCol = prepass.getColumn(yychar)+1;
lastTokenFileOffset = prepass.getOffset(yychar);
lastTokenStreamOffset = prepass.getOffset(yychar);
lastTokenLength = prepass.getOffset(yychar+yylength()-1)-prepass.getOffset(yychar)+1;
//For some reason the author of above code needed to add 1 to the line/col values
// for my code, I actually need the original value of token positions, so
// I added those variables for that
int tokLine = lastTokenLine-1;
int tokCol = lastTokenCol-1;
int tokOff = lastTokenFileOffset;
String tokenText = "";
//If it is the end of statement, use text from original string to get the line separator.
// For some reason the text returned by yytext() in this case is always '/n', while the
// actual separator is '/r/n'
if(terminal == Terminal.T_EOS)
{
tokenText = prepass.getFileEOL();
}
//If it is the end of input, use the Lexer's text.
else if(terminal == Terminal.END_OF_INPUT)
{
tokenText = yytext();
}
//If it is a quote, use text accumulated in the buffer string
else if(terminal == Terminal.T_SCON || terminal == Terminal.T_HCON)
{
tokenText = stringBuffer.toString();
//lastTokenColumn and lastTokenOffset of quoted strings actually IS the position of the last character
// of that string (for some reason w/o the final quote). So, in order to correctly map it to the whitespace
// before it, we need to shift the column and offset we are using by 1 less than the length of the string
tokCol = tokCol - (tokenText.length() - 1);
tokOff = tokOff - (tokenText.length() - 1);
}
//Otherwise, use the text directly from file (that way all the whitespace is preserved in the
// tokens text)
else
tokenText = prepass.getTokenText(lastTokenFileOffset, lastTokenLength);
prevToken = tokenFactory.createToken(terminal,
prepass.getWhitespaceBefore(tokLine, tokCol, tokOff),
tokenText,
"");
if(!tokenText.equals(yytext()) && terminal != Terminal.T_EOS)
{
prevToken.setPreprocessorDirective(tokenText);
prevToken.setText(yytext());
}
return prevToken;
}
/*
private IToken token(Terminal terminal)
{
IToken t = new Token();
t.setTerminal(terminal);
t.setFilename(this.filename);
t.setFileOffset(prepass.getOffset(yychar));
t.setStreamOffset(prepass.getOffset(yychar));
t.setLength(prepass.getOffset(yychar+yylength()-1)-prepass.getOffset(yychar)+1);
t.setText(terminal == Terminal.T_SCON || terminal == Terminal.T_HCON
? stringBuffer.toString()
: yytext());
t.setStartLine(prepass.getLine(yychar)+1);
t.setStartCol(prepass.getColumn(yychar)+1);
t.setEndLine(prepass.getLine(yychar+yylength()-1)+1);
t.setEndCol(prepass.getColumn(yychar+yylength()-1)+1);
return t;
}
*/
private StringBuffer stringBuffer = null;
private int hollerithLength = 0;
private boolean wantEos = false;
private String filename = "<stdin>";
public FixedFormLexerPhase1(java.io.InputStream in, FixedFormLexerPrepass _prepass, IFile file, String filename, TokenFactory tokenFactory)
{
this(in, _prepass, tokenFactory);
this.lastTokenFile = file;
this.filename = filename;
}
public String getFilename()
{
return filename;
}
public TokenFactory getTokenFactory()
{
return tokenFactory;
}
public int getLastTokenLine()
{
return lastTokenLine;
}
public int getLastTokenCol()
{
return lastTokenCol;
}
public IFile getLastTokenFile()
{
return lastTokenFile;
}
public int getLastTokenFileOffset()
{
return lastTokenFileOffset;
}
public int getLastTokenStreamOffset()
{
return lastTokenStreamOffset;
}
public int getLastTokenLength()
{
return lastTokenLength;
}
// private List/*<NonTreeToken>*/ nonTreeTokens = new LinkedList();
// public List/*<NonTreeToken>*/ getNonTreeTokens()
// {
// return nonTreeTokens;
// }
//
private void storeNonTreeToken()
{
// nonTreeTokens.add(new NonTreeToken(this.filename,
// prepass.getOffset(yychar), // int offset
// prepass.getLine(yychar)+1, // int row
// prepass.getColumn(yychar)+1, // int col
// yytext()));
}
/**
* Creates a new scanner
* There is also a java.io.InputStream version of this constructor.
*
* @param in the java.io.Reader to read input from.
*/
FixedFormLexerPhase1(java.io.Reader in) {
this.zzReader = in;
}
/**
* Creates a new scanner.
* There is also java.io.Reader version of this constructor.
*
* @param in the java.io.Inputstream to read input from.
*/
FixedFormLexerPhase1(java.io.InputStream in) {
this(new java.io.InputStreamReader(in));
}
/**
* Unpacks the compressed character translation table.
*
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
private static char [] zzUnpackCMap(String packed) {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 188) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
}
return map;
}
/**
* Refills the input buffer.
*
* @return <code>false</code>, iff there was new input.
*
* @exception java.io.IOException if any I/O-Error occurs
*/
private boolean zzRefill() throws java.io.IOException {
/* first: make room (if you can) */
if (zzStartRead > 0) {
System.arraycopy(zzBuffer, zzStartRead,
zzBuffer, 0,
zzEndRead-zzStartRead);
/* translate stored positions */
zzEndRead-= zzStartRead;
zzCurrentPos-= zzStartRead;
zzMarkedPos-= zzStartRead;
zzPushbackPos-= zzStartRead;
zzStartRead = 0;
}
/* is the buffer big enough? */
if (zzCurrentPos >= zzBuffer.length) {
/* if not: blow it up */
char newBuffer[] = new char[zzCurrentPos*2];
System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
zzBuffer = newBuffer;
}
/* finally: fill the buffer with new input */
int numRead = zzReader.read(zzBuffer, zzEndRead,
zzBuffer.length-zzEndRead);
if (numRead < 0) {
return true;
}
else {
zzEndRead+= numRead;
return false;
}
}
/**
* Closes the input stream.
*/
public final void yyclose() throws java.io.IOException {
zzAtEOF = true; /* indicate end of file */
zzEndRead = zzStartRead; /* invalidate buffer */
if (zzReader != null)
zzReader.close();
}
/**
* Resets the scanner to read from a new input stream.
* Does not close the old reader.
*
* All internal variables are reset, the old input stream
* <b>cannot</b> be reused (internal buffer is discarded and lost).
* Lexical state is set to <tt>ZZ_INITIAL</tt>.
*
* @param reader the new input stream
*/
public final void yyreset(java.io.Reader reader) {
zzReader = reader;
zzAtBOL = true;
zzAtEOF = false;
zzEndRead = zzStartRead = 0;
zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
yyline = yychar = yycolumn = 0;
zzLexicalState = YYINITIAL;
}
/**
* Returns the current lexical state.
*/
public final int yystate() {
return zzLexicalState;
}
/**
* Enters a new lexical state
*
* @param newState the new lexical state
*/
public final void yybegin(int newState) {
zzLexicalState = newState;
}
/**
* Returns the text matched by the current regular expression.
*/
public final String yytext() {
return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
}
/**
* Returns the character at position <tt>pos</tt> from the
* matched text.
*
* It is equivalent to yytext().charAt(pos), but faster
*
* @param pos the position of the character to fetch.
* A value from 0 to yylength()-1.
*
* @return the character at position pos
*/
public final char yycharat(int pos) {
return zzBuffer[zzStartRead+pos];
}
/**
* Returns the length of the matched text region.
*/
public final int yylength() {
return zzMarkedPos-zzStartRead;
}
/**
* Reports an error that occured while scanning.
*
* In a wellformed scanner (no or only correct usage of
* yypushback(int) and a match-all fallback rule) this method
* will only be called with things that "Can't Possibly Happen".
* If this method is called, something is seriously wrong
* (e.g. a JFlex bug producing a faulty scanner etc.).
*
* Usual syntax/scanner level error handling should be done
* in error fallback rules.
*
* @param errorCode the code of the errormessage to display
*/
private void zzScanError(int errorCode) {
String message;
try {
message = ZZ_ERROR_MSG[errorCode];
}
catch (ArrayIndexOutOfBoundsException e) {
message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
}
throw new Error(message);
}
/**
* Pushes the specified amount of characters back into the input stream.
*
* They will be read again by then next call of the scanning method
*
* @param number the number of characters to be read again.
* This number must not be greater than yylength()!
*/
public void yypushback(int number) {
if ( number > yylength() )
zzScanError(ZZ_PUSHBACK_2BIG);
zzMarkedPos -= number;
}
/**
* Resumes scanning until the next regular expression is matched,
* the end of input is encountered or an I/O-Error occurs.
*
* @return the next token
* @exception java.io.IOException if any I/O-Error occurs
*/
public IToken yylex() throws java.io.IOException, LexerException {
int zzInput;
int zzAction;
// cached fields:
int zzCurrentPosL;
int zzMarkedPosL;
int zzEndReadL = zzEndRead;
char [] zzBufferL = zzBuffer;
char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
int [] zzAttrL = ZZ_ATTRIBUTE;
int zzPushbackPosL = zzPushbackPos = -1;
boolean zzWasPushback;
while (true) {
zzMarkedPosL = zzMarkedPos;
yychar+= zzMarkedPosL-zzStartRead;
boolean zzR = false;
for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
zzCurrentPosL++) {
switch (zzBufferL[zzCurrentPosL]) {
case '\u000B':
case '\u000C':
case '\u0085':
case '\u2028':
case '\u2029':
yyline++;
yycolumn = 0;
zzR = false;
break;
case '\r':
yyline++;
yycolumn = 0;
zzR = true;
break;
case '\n':
if (zzR)
zzR = false;
else {
yyline++;
yycolumn = 0;
}
break;
default:
zzR = false;
yycolumn++;
}
}
if (zzR) {
// peek one character ahead if it is \n (if we have counted one line too much)
boolean zzPeek;
if (zzMarkedPosL < zzEndReadL)
zzPeek = zzBufferL[zzMarkedPosL] == '\n';
else if (zzAtEOF)
zzPeek = false;
else {
boolean eof = zzRefill();
zzEndReadL = zzEndRead;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
if (eof)
zzPeek = false;
else
zzPeek = zzBufferL[zzMarkedPosL] == '\n';
}
if (zzPeek) yyline--;
}
zzAction = -1;
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
zzState = zzLexicalState;
zzWasPushback = false;
zzForAction: {
while (true) {
if (zzCurrentPosL < zzEndReadL)
zzInput = zzBufferL[zzCurrentPosL++];
else if (zzAtEOF) {
zzInput = YYEOF;
break zzForAction;
}
else {
// store back cached positions
zzCurrentPos = zzCurrentPosL;
zzMarkedPos = zzMarkedPosL;
zzPushbackPos = zzPushbackPosL;
boolean eof = zzRefill();
// get translated positions and possibly new buffer
zzCurrentPosL = zzCurrentPos;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
zzEndReadL = zzEndRead;
zzPushbackPosL = zzPushbackPos;
if (eof) {
zzInput = YYEOF;
break zzForAction;
}
else {
zzInput = zzBufferL[zzCurrentPosL++];
}
}
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 2) == 2 )
zzPushbackPosL = zzCurrentPosL;
if ( (zzAttributes & 1) == 1 ) {
zzWasPushback = (zzAttributes & 4) == 4;
zzAction = zzState;
zzMarkedPosL = zzCurrentPosL;
if ( (zzAttributes & 8) == 8 ) break zzForAction;
}
}
}
// store back cached position
zzMarkedPos = zzMarkedPosL;
if (zzWasPushback)
zzMarkedPos = zzPushbackPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 51:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_END);
}
case 236: break;
case 154:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_EXTENDS);
}
case 237: break;
case 110:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FORMEQ);
}
case 238: break;
case 203:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_BLOCKDATA);
}
case 239: break;
case 79:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SAVE);
}
case 240: break;
case 111:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_FINAL);
}
case 241: break;
case 169:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_POINTER);
}
case 242: break;
case 235:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_NON_OVERRIDABLE);
}
case 243: break;
case 96:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_THEN);
}
case 244: break;
case 123:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_READEQ);
}
case 245: break;
case 86:
{ storeNonTreeToken();
}
case 246: break;
case 158:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DIRECTEQ);
}
case 247: break;
case 87:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NONE);
}
case 248: break;
case 232:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ASYNCHRONOUSEQ);
}
case 249: break;
case 139:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_IMPORT);
}
case 250: break;
case 207:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_INTRINSIC);
}
case 251: break;
case 43:
{ stringBuffer = new StringBuffer();
String text = yytext();
stringBuffer.append(text);
hollerithLength=Integer.parseInt(text.substring(0,text.length()-1));
if (hollerithLength==0)
throw new LexerException(this, "Lexer Error (line " + (getLine()+1) + ", col " + (getCol()+1) + "): Invalid length of hollerith literal: 0");
yybegin(HOLLERITH);
}
case 252: break;
case 62:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ERREQ);
}
case 253: break;
case 56:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_USE);
}
case 254: break;
case 106:
{ wantEos = true; unsetSOL(); return token(Terminal.T_AND);
}
case 255: break;
case 143:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PUBLIC);
}
case 256: break;
case 10:
{ wantEos = true; unsetSOL(); return token(Terminal.T_LPAREN);
}
case 257: break;
case 157:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DEFAULT);
}
case 258: break;
case 46:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_RCON);
}
case 259: break;
case 227:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDBLOCKDATA);
}
case 260: break;
case 24:
{ stringBuffer.append('\"');
yybegin(YYSTANDARD);
wantEos = true;
return token(Terminal.T_SCON);
}
case 261: break;
case 30:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DO);
}
case 262: break;
case 128:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_VALUE);
}
case 263: break;
case 60:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ENUM);
}
case 264: break;
case 108:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_BLOCK);
}
case 265: break;
case 20:
{ wantEos = true; unsetSOL(); return token(Terminal.T_SLASH);
}
case 266: break;
case 84:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_PASS);
}
case 267: break;
case 138:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_INTENT);
}
case 268: break;
case 233:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_NON_INTRINSIC);
}
case 269: break;
case 99:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_KIND);
}
case 270: break;
case 3:
{ wantEos = true; unsetSOL(); return token(Terminal.T_ASTERISK);
}
case 271: break;
case 181:
{ wantEos = true; yybegin(OPERATORorFORMAT); return token(Terminal.T_OPERATOR);
}
case 272: break;
case 162:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ACTIONEQ);
}
case 273: break;
case 92:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_CALL);
}
case 274: break;
case 187:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FUNCTION);
}
case 275: break;
case 205:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_IOLENGTHEQ);
}
case 276: break;
case 11:
{ wantEos = true; unsetSOL(); return token(Terminal.T_COMMA);
}
case 277: break;
case 144:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_NOPASS);
}
case 278: break;
case 66:
{ wantEos = true; unsetSOL(); return token(Terminal.T_GE);
}
case 279: break;
case 193:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_CONTINUE);
}
case 280: break;
case 19:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PERCENT);
}
case 281: break;
case 50:
{ stringBuffer.append('\"');
}
case 282: break;
case 175:
{ wantEos = true; unsetSOL(); return token(Terminal.T_COMPLEX);
}
case 283: break;
case 90:
{ wantEos = true; unsetSOL(); return token(Terminal.T_LENEQ);
}
case 284: break;
case 4:
{ wantEos = true; unsetSOL(); return token(Terminal.T_ICON);
}
case 285: break;
case 104:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENTRY);
}
case 286: break;
case 223:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDFUNCTION);
}
case 287: break;
case 168:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_GENERIC);
}
case 288: break;
case 78:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FMTEQ);
}
case 289: break;
case 174:
{ wantEos = true; unsetSOL(); return token(Terminal.T_LOGICAL);
}
case 290: break;
case 5:
{ wantEos = true; unsetSOL(); return token(Terminal.T_PLUS);
}
case 291: break;
case 186:
{ wantEos = true; yybegin(IMPLICIT); return token(Terminal.T_IMPLICIT);
}
case 292: break;
case 91:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_CASE);
}
case 293: break;
case 77:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FILE);
}
case 294: break;
case 25:
{ hollerithLength--;
stringBuffer.append(yytext());
if (hollerithLength==0) {
yybegin(YYSTANDARD);
wantEos = true;
return token(Terminal.T_HCON);
}
}
case 295: break;
case 41:
{ wantEos = true; unsetSOL(); return token(Terminal.T_SLASHEQ);
}
case 296: break;
case 132:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DELIMEQ);
}
case 297: break;
case 69:
{ wantEos = true; unsetSOL(); return token(Terminal.T_LE);
}
case 298: break;
case 171:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PRIVATE);
}
case 299: break;
case 26:
{ throw new LexerException(this, "Lexer Error (line " + (getLine()+1) + ", col " + (getCol()+1) + "): Hollerith literal spans multiple lines without continuation");
}
case 300: break;
case 98:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_WAIT);
}
case 301: break;
case 49:
{ stringBuffer.append('\'');
}
case 302: break;
case 82:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_POSEQ);
}
case 303: break;
case 126:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_WHILE);
}
case 304: break;
case 22:
{ throw new LexerException(this, "Lexer Error (line " + (getLine()+1) + ", col " + (getCol()+1) + "): String literal spans multiple lines without continuation");
}
case 305: break;
case 65:
{ wantEos = true; unsetSOL(); return token(Terminal.T_OR);
}
case 306: break;
case 200:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ELSEWHERE);
}
case 307: break;
case 27:
{ wantEos = true; unsetSOL(); return token(Terminal.T_UNEXPECTED_CHARACTER);
}
case 308: break;
case 134:
{ wantEos = true; unsetSOL(); return token(Terminal.T_NEQV);
}
case 309: break;
case 124:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_RECLEQ);
}
case 310: break;
case 170:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PROGRAM);
}
case 311: break;
case 42:
{ wantEos = true; unsetSOL(); return token(Terminal.T_SLASHSLASH);
}
case 312: break;
case 164:
{ wantEos = true; unsetSOL(); return token(Terminal.T_INTEGER);
}
case 313: break;
case 122:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_UNITEQ);
}
case 314: break;
case 89:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NMLEQ);
}
case 315: break;
case 15:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_EQUALS);
}
case 316: break;
case 209:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PARAMETER);
}
case 317: break;
case 7:
{ stringBuffer = new StringBuffer();
stringBuffer.append('\'');
yybegin(QUOTED);
}
case 318: break;
case 215:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDPROGRAM);
}
case 319: break;
case 222:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_READWRITEEQ);
}
case 320: break;
case 160:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_OPENEDEQ);
}
case 321: break;
case 29:
{ wantEos = true; unsetSOL(); return token(Terminal.T_POW);
}
case 322: break;
case 113:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SIZEEQ);
}
case 323: break;
case 167:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_STREAMEQ);
}
case 324: break;
case 71:
{ wantEos = true; unsetSOL(); return token(Terminal.T_BCON);
}
case 325: break;
case 14:
{ wantEos = true; return token(Terminal.T_RBRACKET);
}
case 326: break;
case 197:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDMODULE);
}
case 327: break;
case 196:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDSELECT);
}
case 328: break;
case 189:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_PENDINGEQ);
}
case 329: break;
case 133:
{ wantEos = true; unsetSOL(); return token(Terminal.T_DOUBLE);
}
case 330: break;
case 18:
{ wantEos = true; unsetSOL(); return token(Terminal.T_LESSTHAN);
}
case 331: break;
case 190:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NEXTRECEQ);
}
case 332: break;
case 185:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ALLOCATE);
}
case 333: break;
case 83:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PADEQ);
}
case 334: break;
case 172:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NULLIFY);
}
case 335: break;
case 204:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ASSOCIATE);
}
case 336: break;
case 2:
{ yybegin(YYINITIAL); boolean b = wantEos; wantEos = false; if (b) return token(Terminal.T_EOS); else storeNonTreeToken();
}
case 337: break;
case 105:
{ wantEos = true; unsetSOL(); return token(Terminal.T_EQV);
}
case 338: break;
case 156:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDTYPE);
}
case 339: break;
case 182:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_OPTIONAL);
}
case 340: break;
case 188:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SEQUENCE);
}
case 341: break;
case 103:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDIF);
}
case 342: break;
case 81:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_GOTO);
}
case 343: break;
case 55:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_LEN);
}
case 344: break;
case 155:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDFILE);
}
case 345: break;
case 140:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FORALL);
}
case 346: break;
case 54:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_IDEQ);
}
case 347: break;
case 58:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_EXIT);
}
case 348: break;
case 219:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FORMATTEDEQ);
}
case 349: break;
case 23:
{ stringBuffer.append('\'');
yybegin(YYSTANDARD);
wantEos = true;
return token(Terminal.T_SCON);
}
case 350: break;
case 107:
{ wantEos = true; unsetSOL(); return token(Terminal.T_NOT);
}
case 351: break;
case 57:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DCON);
}
case 352: break;
case 210:
{ wantEos = true; unsetSOL(); return token(Terminal.T_PRECISION);
}
case 353: break;
case 74:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_OPEN);
}
case 354: break;
case 115:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_STATEQ);
}
case 355: break;
case 28:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_IDENT);
}
case 356: break;
case 148:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_RETURN);
}
case 357: break;
case 184:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ABSTRACT);
}
case 358: break;
case 39:
{ wantEos = true; unsetSOL(); return token(Terminal.T_LESSTHANEQ);
}
case 359: break;
case 220:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SELECTCASE);
}
case 360: break;
case 218:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ASSIGNMENT);
}
case 361: break;
case 213:
{ wantEos = true; unsetSOL(); return token(Terminal.T_CHARACTER);
}
case 362: break;
case 40:
{ wantEos = true; return token(Terminal.T_NE);
}
case 363: break;
case 36:
{ wantEos = true; unsetSOL(); return token(Terminal.T_EQEQ);
}
case 364: break;
case 8:
{ stringBuffer = new StringBuffer();
stringBuffer.append('\"');
yybegin(DBLQUOTED);
}
case 365: break;
case 180:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_DECIMALEQ);
}
case 366: break;
case 67:
{ wantEos = true; unsetSOL(); return token(Terminal.T_GT);
}
case 367: break;
case 137:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_IOMSGEQ);
}
case 368: break;
case 153:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_WRITEEQ);
}
case 369: break;
case 80:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_STOP);
}
case 370: break;
case 141:
{ wantEos = true; yybegin(OPERATORorFORMAT); return token(Terminal.T_FORMAT);
}
case 371: break;
case 53:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_OUT);
}
case 372: break;
case 146:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_COMMON);
}
case 373: break;
case 119:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_CLOSE);
}
case 374: break;
case 35:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_TO);
}
case 375: break;
case 166:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_STATUSEQ);
}
case 376: break;
case 44:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PCON);
}
case 377: break;
case 21:
{ stringBuffer.append( yytext() );
}
case 378: break;
case 178:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDWHERE);
}
case 379: break;
case 9:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_UNDERSCORE);
}
case 380: break;
case 93:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_READ);
}
case 381: break;
case 127:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_WRITE);
}
case 382: break;
case 76:
{ wantEos = true; unsetSOL(); return token(Terminal.T_ZCON);
}
case 383: break;
case 225:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ALLOCATABLE);
}
case 384: break;
case 6:
{ wantEos = true; unsetSOL(); return token(Terminal.T_MINUS);
}
case 385: break;
case 199:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ELEMENTAL);
}
case 386: break;
case 221:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SUBROUTINE);
}
case 387: break;
case 202:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_BACKSPACE);
}
case 388: break;
case 38:
{ wantEos = true; unsetSOL(); return token(Terminal.T_GREATERTHANEQ);
}
case 389: break;
case 70:
{ wantEos = true; unsetSOL(); return token(Terminal.T_LT);
}
case 390: break;
case 64:
{ wantEos = true; unsetSOL(); return token(Terminal.T_EQ);
}
case 391: break;
case 97:
{ wantEos = true; unsetSOL(); return token(Terminal.T_TYPE);
}
case 392: break;
case 165:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_INQUIRE);
}
case 393: break;
case 206:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_INTERFACE);
}
case 394: break;
case 61:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ELSE);
}
case 395: break;
case 45:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_XCON);
}
case 396: break;
case 173:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NUMBEREQ);
}
case 397: break;
case 129:
{ wantEos = true; unsetSOL(); return token(Terminal.T_KINDEQ);
}
case 398: break;
case 230:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_UNFORMATTEDEQ);
}
case 399: break;
case 95:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_RECEQ);
}
case 400: break;
case 234:
{ wantEos = true; unsetSOL(); return token(Terminal.T_DOUBLEPRECISION);
}
case 401: break;
case 201:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DIMENSION);
}
case 402: break;
case 68:
{ wantEos = true; unsetSOL(); return token(Terminal.T_NE);
}
case 403: break;
case 47:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_LPARENSLASH);
}
case 404: break;
case 33:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_IN);
}
case 405: break;
case 135:
{ wantEos = true; unsetSOL(); return token(Terminal.T_TRUE);
}
case 406: break;
case 125:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_WHERE);
}
case 407: break;
case 161:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ACCESSEQ);
}
case 408: break;
case 208:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_POSITIONEQ);
}
case 409: break;
case 228:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDINTERFACE);
}
case 410: break;
case 16:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_COLON);
}
case 411: break;
case 85:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PURE);
}
case 412: break;
case 211:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PROCEDURE);
}
case 413: break;
case 63:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DATA);
}
case 414: break;
case 152:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_TARGET);
}
case 415: break;
case 34:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_GO);
}
case 416: break;
case 73:
{ wantEos = true; unsetSOL(); return token(Terminal.T_OCON);
}
case 417: break;
case 131:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ELSEIF);
}
case 418: break;
case 118:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NAMEEQ);
}
case 419: break;
case 216:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ENUMERATOR);
}
case 420: break;
case 13:
{ wantEos = true; return token(Terminal.T_LBRACKET);
}
case 421: break;
case 116:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PAUSE);
}
case 422: break;
case 31:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_IF);
}
case 423: break;
case 32:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_IS);
}
case 424: break;
case 102:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDDO);
}
case 425: break;
case 109:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_INOUT);
}
case 426: break;
case 52:
{ wantEos = true; unsetSOL(); return token(Terminal.T_XDOP);
}
case 427: break;
case 88:
{ wantEos = true; unsetSOL(); return token(Terminal.T_NULL);
}
case 428: break;
case 121:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_CYCLE);
}
case 429: break;
case 136:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_BLANKEQ);
}
case 430: break;
case 72:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_BIND);
}
case 431: break;
case 117:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_PRINT);
}
case 432: break;
case 217:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_DEALLOCATE);
}
case 433: break;
case 191:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NAMELIST);
}
case 434: break;
case 120:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_CLASS);
}
case 435: break;
case 145:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_NAMEDEQ);
}
case 436: break;
case 114:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_SIGNEQ);
}
case 437: break;
case 48:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SLASHRPAREN);
}
case 438: break;
case 176:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_EXTERNAL);
}
case 439: break;
case 12:
{ wantEos = true; unsetSOL(); return token(Terminal.T_RPAREN);
}
case 440: break;
case 192:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_CONTAINS);
}
case 441: break;
case 149:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_REWIND);
}
case 442: break;
case 147:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_RESULT);
}
case 443: break;
case 112:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FILEEQ);
}
case 444: break;
case 226:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SEQUENTIALEQ);
}
case 445: break;
case 150:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ROUNDEQ);
}
case 446: break;
case 214:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_RECURSIVE);
}
case 447: break;
case 231:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDSUBROUTINE);
}
case 448: break;
case 37:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_EQGREATERTHAN);
}
case 449: break;
case 224:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_EQUIVALENCE);
}
case 450: break;
case 151:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_MODULE);
}
case 451: break;
case 142:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_SELECT);
}
case 452: break;
case 195:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDFORALL);
}
case 453: break;
case 198:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ENCODINGEQ);
}
case 454: break;
case 101:
{ wantEos = true; return token(Terminal.T_X_IMPL);
}
case 455: break;
case 229:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_ASYNCHRONOUS);
}
case 456: break;
case 179:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_DEFERRED);
}
case 457: break;
case 94:
{ wantEos = true; unsetSOL(); return token(Terminal.T_REAL);
}
case 458: break;
case 159:
{ wantEos = true; unsetSOL(); return token(Terminal.T_FALSE);
}
case 459: break;
case 194:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_VOLATILE);
}
case 460: break;
case 212:
{ wantEos = true; yybegin(YYINITIAL); return token(Terminal.T_PROTECTED);
}
case 461: break;
case 1:
{ yypushback(1);
int state=yystate();
yybegin(IDENT);
IToken token = yylex();
yybegin(state);
return token;
}
case 462: break;
case 75:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ONLY);
}
case 463: break;
case 59:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDEQ);
}
case 464: break;
case 17:
{ wantEos = true; unsetSOL(); return token(Terminal.T_GREATERTHAN);
}
case 465: break;
case 163:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_IOSTATEQ);
}
case 466: break;
case 183:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ADVANCEEQ);
}
case 467: break;
case 177:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_ENDBLOCK);
}
case 468: break;
case 100:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_FCON);
}
case 469: break;
case 130:
{ wantEos = true; yybegin(YYSTANDARD); return token(Terminal.T_EXISTEQ);
}
case 470: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
switch (zzLexicalState) {
case OPERATORorFORMAT: {
wantEos = false; yybegin(YYSTANDARD); return token(Terminal.END_OF_INPUT);
}
case 977: break;
case DBLQUOTED: {
throw new LexerException(this, "Lexer Error (line " + (getLine()+1) + ", col " + (getCol()+1) + "): End of file encountered before string literal terminated");
}
case 978: break;
case QUOTED: {
throw new LexerException(this, "Lexer Error (line " + (getLine()+1) + ", col " + (getCol()+1) + "): End of file encountered before string literal terminated");
}
case 979: break;
case YYINITIAL: {
wantEos = false; yybegin(YYSTANDARD); return token(Terminal.END_OF_INPUT);
}
case 980: break;
case HOLLERITH: {
throw new LexerException(this, "Lexer Error (line " + (getLine()+1) + ", col " + (getCol()+1) + "): End of file encountered before hollerith literal terminated");
}
case 981: break;
case YYSTANDARD: {
wantEos = false; yybegin(YYSTANDARD); return token(Terminal.END_OF_INPUT);
}
case 982: break;
case IMPLICIT: {
wantEos = false; yybegin(YYSTANDARD); return token(Terminal.END_OF_INPUT);
}
case 983: break;
default:
return null;
}
}
else {
zzScanError(ZZ_NO_MATCH);
}
}
}
}
}