From 8779d5d78c960e388d013d373ca235c563b9b661 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Mon, 26 Dec 2016 12:53:32 +0100 Subject: [PATCH] #1327 P-code editing: error message and syntax highlighting fixed when instruction name contains upper cased letter --- CHANGELOG.md | 4 + lib/jsyntaxpane-0.9.5.jar | Bin 567943 -> 566236 bytes .../ffdec_lib/lexers/actionscript3_pcode.flex | 2 +- .../ffdec_lib/lexers/actionscript_pcode.flex | 2 +- .../abc/avm2/parser/pcode/Flasm3Lexer.java | 3752 ++++++----------- .../flash/action/parser/pcode/FlasmLexer.java | 2045 +++++---- .../main/jflex/jsyntaxpane/lexers/flasm.flex | 2 +- .../main/jflex/jsyntaxpane/lexers/flasm3.flex | 2 +- 8 files changed, 2341 insertions(+), 3468 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8053d2ccd..e0e04bdd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. ## [Unreleased] ### Added - [#1240] AS search using multiple threads when parallel speedup is enabled +- [#1308] Search by all P-code files in AS3 + +### Fixed +- [#1327] P-code editing: error message and syntax highlighting fixed when instruction name contains upper cased letter ## [10.0.0] - 2016-12-24 ### Added diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index a3b4bf1a7c61d2a6f3f0a9639dd99720a9961d06..656f583cfa8c30a93336a05d429dcc88ffe4a78f 100644 GIT binary patch delta 55734 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 Gfc+n%y2CvH delta 56742 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%0DP@~-vu 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 1.6.0 from the specification file - * C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_pcode.flex + * This class is a scanner generated by + * JFlex 1.6.0 + * from the specification file C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_pcode.flex */ public final class FlasmLexer { - /** - * This character denotes the end of file - */ - public static final int YYEOF = -1; + /** 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; + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; - /** - * lexical states - */ - public static final int YYINITIAL = 0; + /** lexical states */ + public static final int YYINITIAL = 0; + public static final int STRING = 2; + public static final int PARAMETERS = 4; - public static final int STRING = 2; + /** + * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer + */ + private static final int ZZ_LEXSTATE[] = { + 0, 0, 1, 1, 2, 2 + }; - public static final int PARAMETERS = 4; + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\6\1\4\1\2\1\47\1\50\1\1\16\6\4\0\1\4\1\0"+ + "\1\43\1\0\1\5\2\0\1\45\3\0\1\35\1\0\1\25\1\33"+ + "\1\0\1\30\11\31\1\7\1\3\5\0\4\36\1\34\1\36\2\5"+ + "\1\26\4\5\1\32\14\5\1\0\1\37\2\0\1\5\1\0\1\17"+ + "\1\44\1\41\1\23\1\15\1\16\1\40\1\5\1\24\2\5\1\20"+ + "\1\5\1\22\1\42\2\5\1\13\1\21\1\12\1\14\2\5\1\46"+ + "\1\27\1\5\1\10\1\0\1\11\1\0\6\6\1\51\32\6\2\0"+ + "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0"+ + "\27\5\1\0\37\5\1\0\u01ca\5\4\0\14\5\16\0\5\5\7\0"+ + "\1\5\1\0\1\5\21\0\160\6\5\5\1\0\2\5\2\0\4\5"+ + "\10\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\123\5"+ + "\1\0\213\5\1\0\5\6\2\0\236\5\11\0\46\5\2\0\1\5"+ + "\7\0\47\5\7\0\1\5\1\0\55\6\1\0\1\6\1\0\2\6"+ + "\1\0\2\6\1\0\1\6\10\0\33\5\5\0\3\5\15\0\5\6"+ + "\6\0\1\5\4\0\13\6\5\0\53\5\37\6\4\0\2\5\1\6"+ + "\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0\4\6"+ + "\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6\36\5"+ + "\33\6\2\0\131\5\13\6\1\5\16\0\12\6\41\5\11\6\2\5"+ + "\4\0\1\5\5\0\26\5\4\6\1\5\11\6\1\5\3\6\1\5"+ + "\5\6\22\0\31\5\3\6\104\0\1\5\1\0\13\5\67\0\33\6"+ + "\1\0\4\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5\2\6"+ + "\2\0\12\6\1\0\7\5\1\0\7\5\1\0\3\6\1\0\10\5"+ + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5"+ + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\1\5\10\0"+ + "\1\6\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\7\0"+ + "\1\5\5\0\3\6\1\0\6\5\4\0\2\5\2\0\26\5\1\0"+ + "\7\5\1\0\2\5\1\0\2\5\1\0\2\5\2\0\1\6\1\0"+ + "\5\6\4\0\2\6\2\0\3\6\3\0\1\6\7\0\4\5\1\0"+ + "\1\5\7\0\14\6\3\5\1\6\13\0\3\6\1\0\11\5\1\0"+ + "\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5\2\0"+ + "\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5\17\0"+ + "\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0\10\5"+ + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5"+ + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\10\0\2\6"+ + "\4\0\2\5\1\0\3\5\2\6\2\0\12\6\1\0\1\5\20\0"+ + "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5"+ + "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\14\5"+ + "\4\0\5\6\3\0\3\6\1\0\4\6\2\0\1\5\6\0\1\6"+ + "\16\0\12\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5"+ + "\1\0\27\5\1\0\12\5\1\0\5\5\3\0\1\5\7\6\1\0"+ + "\3\6\1\0\4\6\7\0\2\6\1\0\2\5\6\0\2\5\2\6"+ + "\2\0\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5"+ + "\1\0\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6"+ + "\1\0\4\6\7\0\2\6\7\0\1\5\1\0\2\5\2\6\2\0"+ + "\12\6\1\0\2\5\17\0\2\6\1\0\10\5\1\0\3\5\1\0"+ + "\51\5\2\0\1\5\7\6\1\0\3\6\1\0\4\6\1\5\10\0"+ + "\1\6\10\0\2\5\2\6\2\0\12\6\12\0\6\5\2\0\2\6"+ + "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5"+ + "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6"+ + "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6"+ + "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5"+ + "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5"+ + "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5"+ + "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\4\5"+ + "\40\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6"+ + "\1\0\1\6\4\0\2\6\10\5\1\0\44\5\4\0\24\6\1\0"+ + "\2\6\5\5\13\6\1\0\44\6\11\0\1\6\71\0\53\5\24\6"+ + "\1\5\12\6\6\0\6\5\4\6\4\5\3\6\1\5\3\6\2\5"+ + "\7\6\3\5\4\6\15\5\14\6\1\5\17\6\2\0\46\5\1\0"+ + "\1\5\5\0\1\5\2\0\53\5\1\0\u014d\5\1\0\4\5\2\0"+ + "\7\5\1\0\1\5\1\0\4\5\2\0\51\5\1\0\4\5\2\0"+ + "\41\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0"+ + "\17\5\1\0\71\5\1\0\4\5\2\0\103\5\2\0\3\6\40\0"+ + "\20\5\20\0\125\5\14\0\u026c\5\2\0\21\5\1\0\32\5\5\0"+ + "\113\5\3\0\3\5\17\0\15\5\1\0\4\5\3\6\13\0\22\5"+ + "\3\6\13\0\22\5\2\6\14\0\15\5\1\0\3\5\1\0\2\6"+ + "\14\0\64\5\40\6\3\0\1\5\3\0\2\5\1\6\2\0\12\6"+ + "\41\0\3\6\2\0\12\6\6\0\130\5\10\0\51\5\1\6\1\5"+ + "\5\0\106\5\12\0\35\5\3\0\14\6\4\0\14\6\12\0\12\6"+ + "\36\5\2\0\5\5\13\0\54\5\4\0\21\6\7\5\2\6\6\0"+ + "\12\6\46\0\27\5\5\6\4\0\65\5\12\6\1\0\35\6\2\0"+ + "\13\6\6\0\12\6\15\0\1\5\130\0\5\6\57\5\21\6\7\5"+ + "\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5\12\6"+ + "\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5\12\6"+ + "\44\5\122\0\3\6\1\0\25\6\4\5\1\6\4\5\3\6\2\5"+ + "\11\0\300\5\47\6\25\0\4\6\u0116\5\2\0\6\5\2\0\46\5"+ + "\2\0\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5"+ + "\1\0\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5"+ + "\1\0\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5"+ + "\1\0\7\5\16\0\5\6\30\0\1\47\1\47\5\6\20\0\2\5"+ + "\23\0\1\5\13\0\5\6\5\0\6\6\1\0\1\5\15\0\1\5"+ + "\20\0\15\5\3\0\33\5\25\0\15\6\4\0\1\6\3\0\14\6"+ + "\21\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5"+ + "\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5"+ + "\2\0\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5"+ + "\1\0\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5"+ + "\1\0\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6"+ + "\27\5\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0"+ + "\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0"+ + "\1\5\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5"+ + "\4\0\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5"+ + "\5\0\51\5\3\0\136\5\21\0\33\5\65\0\20\5\u0200\0\u19b6\5"+ + "\112\0\u51cd\5\63\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5"+ + "\12\6\2\5\24\0\57\5\1\6\4\0\12\6\1\0\31\5\7\0"+ + "\1\6\120\5\2\6\45\0\11\5\2\0\147\5\2\0\4\5\1\0"+ + "\4\5\14\0\13\5\115\0\12\5\1\6\3\5\1\6\4\5\1\6"+ + "\27\5\5\6\20\0\1\5\7\0\64\5\14\0\2\6\62\5\21\6"+ + "\13\0\12\6\6\0\22\6\6\5\3\0\1\5\4\0\12\6\34\5"+ + "\10\6\2\0\27\5\15\6\14\0\35\5\3\0\4\6\57\5\16\6"+ + "\16\0\1\5\12\6\46\0\51\5\16\6\11\0\3\5\1\6\10\5"+ + "\2\6\2\0\12\6\6\0\27\5\3\0\1\5\1\6\4\0\60\5"+ + "\1\6\1\5\3\6\2\5\2\6\5\5\2\6\1\5\1\6\1\5"+ + "\30\0\3\5\2\0\13\5\5\6\2\0\3\5\2\6\12\0\6\5"+ + "\2\0\6\5\2\0\6\5\11\0\7\5\1\0\7\5\221\0\43\5"+ + "\10\6\1\0\2\6\2\0\12\6\6\0\u2ba4\5\14\0\27\5\4\0"+ + "\61\5\u2104\0\u016e\5\2\0\152\5\46\0\7\5\14\0\5\5\5\0"+ + "\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0\1\5\1\0"+ + "\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0\100\5\2\0"+ + "\66\5\50\0\15\5\3\0\20\6\20\0\7\6\14\0\2\5\30\0"+ + "\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0\1\6\4\0"+ + "\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0\32\5\13\0"+ + "\131\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0\3\5\3\0"+ + "\2\5\3\0\2\5\22\0\3\6\4\0\14\5\1\0\32\5\1\0"+ + "\23\5\1\0\2\5\1\0\17\5\2\0\16\5\42\0\173\5\105\0"+ + "\65\5\210\0\1\6\202\0\35\5\3\0\61\5\57\0\37\5\21\0"+ + "\33\5\65\0\36\5\2\0\44\5\4\0\10\5\1\0\5\5\52\0"+ + "\236\5\2\0\12\6\u0356\0\6\5\2\0\1\5\1\0\54\5\1\0"+ + "\2\5\3\0\1\5\2\0\27\5\252\0\26\5\12\0\32\5\106\0"+ + "\70\5\6\0\2\5\100\0\1\5\3\6\1\0\2\6\5\0\4\6"+ + "\4\5\1\0\3\5\1\0\33\5\4\0\3\6\4\0\1\6\40\0"+ + "\35\5\203\0\66\5\12\0\26\5\12\0\23\5\215\0\111\5\u03b7\0"+ + "\3\6\65\5\17\6\37\0\12\6\20\0\3\6\55\5\13\6\2\0"+ + "\1\6\22\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6\1\0"+ + "\12\6\100\0\3\6\60\5\16\6\4\5\13\0\12\6\u04a6\0\53\5"+ + "\15\6\10\0\12\6\u0936\0\u036f\5\221\0\143\5\u0b9d\0\u042f\5\u33d1\0"+ + "\u0239\5\u04c7\0\105\5\13\0\1\5\56\6\20\0\4\6\15\5\u4060\0"+ + "\2\5\u2163\0\5\6\3\0\26\6\2\0\7\6\36\0\4\6\224\0"+ + "\3\6\u01bb\0\125\5\1\0\107\5\1\0\2\5\2\0\1\5\2\0"+ + "\2\5\2\0\4\5\1\0\14\5\1\0\1\5\1\0\7\5\1\0"+ + "\101\5\1\0\4\5\2\0\10\5\1\0\7\5\1\0\34\5\1\0"+ + "\4\5\1\0\5\5\1\0\1\5\3\0\7\5\1\0\u0154\5\2\0"+ + "\31\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0"+ + "\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0"+ + "\10\5\2\0\62\6\u1600\0\4\5\1\0\33\5\1\0\2\5\1\0"+ + "\1\5\2\0\1\5\1\0\12\5\1\0\4\5\1\0\1\5\1\0"+ + "\1\5\6\0\1\5\4\0\1\5\1\0\1\5\1\0\1\5\1\0"+ + "\3\5\1\0\2\5\1\0\1\5\2\0\1\5\1\0\1\5\1\0"+ + "\1\5\1\0\1\5\1\0\1\5\1\0\2\5\1\0\1\5\2\0"+ + "\4\5\1\0\7\5\1\0\4\5\1\0\4\5\1\0\1\5\1\0"+ + "\12\5\1\0\21\5\5\0\3\5\1\0\5\5\1\0\21\5\u1144\0"+ + "\ua6d7\5\51\0\u1035\5\13\0\336\5\u3fe2\0\u021e\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0"+ + "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0"; - /** - * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the - * beginning of a line l is of the form l = 2*k, k a non negative integer - */ - private static final int ZZ_LEXSTATE[] = { - 0, 0, 1, 1, 2, 2 - }; + /** + * Translates characters to character classes + */ + private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED - = "\11\6\1\4\1\2\1\51\1\52\1\1\16\6\4\0\1\4\1\0" - + "\1\45\1\0\1\5\2\0\1\47\3\0\1\37\1\0\1\30\1\35" - + "\1\0\1\33\11\11\1\12\1\3\5\0\4\40\1\36\1\40\2\7" - + "\1\31\4\7\1\34\14\7\1\0\1\41\2\0\1\10\1\0\1\22" - + "\1\46\1\43\1\26\1\20\1\21\1\42\1\7\1\27\2\7\1\23" - + "\1\7\1\25\1\44\2\7\1\16\1\24\1\15\1\17\2\7\1\50" - + "\1\32\1\7\1\13\1\0\1\14\1\0\6\6\1\53\32\6\2\0" - + "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0" - + "\27\5\1\0\37\5\1\0\u01ca\5\4\0\14\5\16\0\5\5\7\0" - + "\1\5\1\0\1\5\21\0\160\6\5\5\1\0\2\5\2\0\4\5" - + "\10\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\123\5" - + "\1\0\213\5\1\0\5\6\2\0\236\5\11\0\46\5\2\0\1\5" - + "\7\0\47\5\7\0\1\5\1\0\55\6\1\0\1\6\1\0\2\6" - + "\1\0\2\6\1\0\1\6\10\0\33\5\5\0\3\5\15\0\5\6" - + "\6\0\1\5\4\0\13\6\5\0\53\5\37\6\4\0\2\5\1\6" - + "\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0\4\6" - + "\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6\36\5" - + "\33\6\2\0\131\5\13\6\1\5\16\0\12\6\41\5\11\6\2\5" - + "\4\0\1\5\5\0\26\5\4\6\1\5\11\6\1\5\3\6\1\5" - + "\5\6\22\0\31\5\3\6\104\0\1\5\1\0\13\5\67\0\33\6" - + "\1\0\4\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5\2\6" - + "\2\0\12\6\1\0\7\5\1\0\7\5\1\0\3\6\1\0\10\5" - + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5" - + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\1\5\10\0" - + "\1\6\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\7\0" - + "\1\5\5\0\3\6\1\0\6\5\4\0\2\5\2\0\26\5\1\0" - + "\7\5\1\0\2\5\1\0\2\5\1\0\2\5\2\0\1\6\1\0" - + "\5\6\4\0\2\6\2\0\3\6\3\0\1\6\7\0\4\5\1\0" - + "\1\5\7\0\14\6\3\5\1\6\13\0\3\6\1\0\11\5\1\0" - + "\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5\2\0" - + "\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5\17\0" - + "\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0\10\5" - + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5" - + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\10\0\2\6" - + "\4\0\2\5\1\0\3\5\2\6\2\0\12\6\1\0\1\5\20\0" - + "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5" - + "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\14\5" - + "\4\0\5\6\3\0\3\6\1\0\4\6\2\0\1\5\6\0\1\6" - + "\16\0\12\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5" - + "\1\0\27\5\1\0\12\5\1\0\5\5\3\0\1\5\7\6\1\0" - + "\3\6\1\0\4\6\7\0\2\6\1\0\2\5\6\0\2\5\2\6" - + "\2\0\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5" - + "\1\0\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6" - + "\1\0\4\6\7\0\2\6\7\0\1\5\1\0\2\5\2\6\2\0" - + "\12\6\1\0\2\5\17\0\2\6\1\0\10\5\1\0\3\5\1\0" - + "\51\5\2\0\1\5\7\6\1\0\3\6\1\0\4\6\1\5\10\0" - + "\1\6\10\0\2\5\2\6\2\0\12\6\12\0\6\5\2\0\2\6" - + "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5" - + "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6" - + "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6" - + "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5" - + "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5" - + "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5" - + "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\4\5" - + "\40\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6" - + "\1\0\1\6\4\0\2\6\10\5\1\0\44\5\4\0\24\6\1\0" - + "\2\6\5\5\13\6\1\0\44\6\11\0\1\6\71\0\53\5\24\6" - + "\1\5\12\6\6\0\6\5\4\6\4\5\3\6\1\5\3\6\2\5" - + "\7\6\3\5\4\6\15\5\14\6\1\5\17\6\2\0\46\5\1\0" - + "\1\5\5\0\1\5\2\0\53\5\1\0\u014d\5\1\0\4\5\2\0" - + "\7\5\1\0\1\5\1\0\4\5\2\0\51\5\1\0\4\5\2\0" - + "\41\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0" - + "\17\5\1\0\71\5\1\0\4\5\2\0\103\5\2\0\3\6\40\0" - + "\20\5\20\0\125\5\14\0\u026c\5\2\0\21\5\1\0\32\5\5\0" - + "\113\5\3\0\3\5\17\0\15\5\1\0\4\5\3\6\13\0\22\5" - + "\3\6\13\0\22\5\2\6\14\0\15\5\1\0\3\5\1\0\2\6" - + "\14\0\64\5\40\6\3\0\1\5\3\0\2\5\1\6\2\0\12\6" - + "\41\0\3\6\2\0\12\6\6\0\130\5\10\0\51\5\1\6\1\5" - + "\5\0\106\5\12\0\35\5\3\0\14\6\4\0\14\6\12\0\12\6" - + "\36\5\2\0\5\5\13\0\54\5\4\0\21\6\7\5\2\6\6\0" - + "\12\6\46\0\27\5\5\6\4\0\65\5\12\6\1\0\35\6\2\0" - + "\13\6\6\0\12\6\15\0\1\5\130\0\5\6\57\5\21\6\7\5" - + "\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5\12\6" - + "\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5\12\6" - + "\44\5\122\0\3\6\1\0\25\6\4\5\1\6\4\5\3\6\2\5" - + "\11\0\300\5\47\6\25\0\4\6\u0116\5\2\0\6\5\2\0\46\5" - + "\2\0\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5" - + "\1\0\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5" - + "\1\0\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5" - + "\1\0\7\5\16\0\5\6\30\0\1\51\1\51\5\6\20\0\2\5" - + "\23\0\1\5\13\0\5\6\5\0\6\6\1\0\1\5\15\0\1\5" - + "\20\0\15\5\3\0\33\5\25\0\15\6\4\0\1\6\3\0\14\6" - + "\21\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5" - + "\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5" - + "\2\0\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5" - + "\1\0\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5" - + "\1\0\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6" - + "\27\5\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0" - + "\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0" - + "\1\5\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5" - + "\4\0\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5" - + "\5\0\51\5\3\0\136\5\21\0\33\5\65\0\20\5\u0200\0\u19b6\5" - + "\112\0\u51cd\5\63\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5" - + "\12\6\2\5\24\0\57\5\1\6\4\0\12\6\1\0\31\5\7\0" - + "\1\6\120\5\2\6\45\0\11\5\2\0\147\5\2\0\4\5\1\0" - + "\4\5\14\0\13\5\115\0\12\5\1\6\3\5\1\6\4\5\1\6" - + "\27\5\5\6\20\0\1\5\7\0\64\5\14\0\2\6\62\5\21\6" - + "\13\0\12\6\6\0\22\6\6\5\3\0\1\5\4\0\12\6\34\5" - + "\10\6\2\0\27\5\15\6\14\0\35\5\3\0\4\6\57\5\16\6" - + "\16\0\1\5\12\6\46\0\51\5\16\6\11\0\3\5\1\6\10\5" - + "\2\6\2\0\12\6\6\0\27\5\3\0\1\5\1\6\4\0\60\5" - + "\1\6\1\5\3\6\2\5\2\6\5\5\2\6\1\5\1\6\1\5" - + "\30\0\3\5\2\0\13\5\5\6\2\0\3\5\2\6\12\0\6\5" - + "\2\0\6\5\2\0\6\5\11\0\7\5\1\0\7\5\221\0\43\5" - + "\10\6\1\0\2\6\2\0\12\6\6\0\u2ba4\5\14\0\27\5\4\0" - + "\61\5\u2104\0\u016e\5\2\0\152\5\46\0\7\5\14\0\5\5\5\0" - + "\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0\1\5\1\0" - + "\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0\100\5\2\0" - + "\66\5\50\0\15\5\3\0\20\6\20\0\7\6\14\0\2\5\30\0" - + "\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0\1\6\4\0" - + "\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0\32\5\13\0" - + "\131\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0\3\5\3\0" - + "\2\5\3\0\2\5\22\0\3\6\4\0\14\5\1\0\32\5\1\0" - + "\23\5\1\0\2\5\1\0\17\5\2\0\16\5\42\0\173\5\105\0" - + "\65\5\210\0\1\6\202\0\35\5\3\0\61\5\57\0\37\5\21\0" - + "\33\5\65\0\36\5\2\0\44\5\4\0\10\5\1\0\5\5\52\0" - + "\236\5\2\0\12\6\u0356\0\6\5\2\0\1\5\1\0\54\5\1\0" - + "\2\5\3\0\1\5\2\0\27\5\252\0\26\5\12\0\32\5\106\0" - + "\70\5\6\0\2\5\100\0\1\5\3\6\1\0\2\6\5\0\4\6" - + "\4\5\1\0\3\5\1\0\33\5\4\0\3\6\4\0\1\6\40\0" - + "\35\5\203\0\66\5\12\0\26\5\12\0\23\5\215\0\111\5\u03b7\0" - + "\3\6\65\5\17\6\37\0\12\6\20\0\3\6\55\5\13\6\2\0" - + "\1\6\22\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6\1\0" - + "\12\6\100\0\3\6\60\5\16\6\4\5\13\0\12\6\u04a6\0\53\5" - + "\15\6\10\0\12\6\u0936\0\u036f\5\221\0\143\5\u0b9d\0\u042f\5\u33d1\0" - + "\u0239\5\u04c7\0\105\5\13\0\1\5\56\6\20\0\4\6\15\5\u4060\0" - + "\2\5\u2163\0\5\6\3\0\26\6\2\0\7\6\36\0\4\6\224\0" - + "\3\6\u01bb\0\125\5\1\0\107\5\1\0\2\5\2\0\1\5\2\0" - + "\2\5\2\0\4\5\1\0\14\5\1\0\1\5\1\0\7\5\1\0" - + "\101\5\1\0\4\5\2\0\10\5\1\0\7\5\1\0\34\5\1\0" - + "\4\5\1\0\5\5\1\0\1\5\3\0\7\5\1\0\u0154\5\2\0" - + "\31\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0" - + "\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0" - + "\10\5\2\0\62\6\u1600\0\4\5\1\0\33\5\1\0\2\5\1\0" - + "\1\5\2\0\1\5\1\0\12\5\1\0\4\5\1\0\1\5\1\0" - + "\1\5\6\0\1\5\4\0\1\5\1\0\1\5\1\0\1\5\1\0" - + "\3\5\1\0\2\5\1\0\1\5\2\0\1\5\1\0\1\5\1\0" - + "\1\5\1\0\1\5\1\0\1\5\1\0\2\5\1\0\1\5\2\0" - + "\4\5\1\0\7\5\1\0\4\5\1\0\4\5\1\0\1\5\1\0" - + "\12\5\1\0\21\5\5\0\3\5\1\0\5\5\1\0\21\5\u1144\0" - + "\ua6d7\5\51\0\u1035\5\13\0\336\5\u3fe2\0\u021e\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0" - + "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0"; + /** + * Translates DFA states to action switch labels. + */ + private static final int [] ZZ_ACTION = zzUnpackAction(); - /** - * Translates characters to character classes - */ - private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); + private static final String ZZ_ACTION_PACKED_0 = + "\3\0\2\1\1\2\1\3\1\4\2\5\1\1\1\6"+ + "\2\7\1\10\1\11\1\12\5\11\1\1\1\11\2\13"+ + "\1\11\1\1\1\11\1\14\1\15\1\16\1\17\1\20"+ + "\1\16\1\21\1\22\1\23\1\24\1\25\1\26\1\16"+ + "\5\11\2\0\1\11\1\0\2\27\2\11\2\0\5\11"+ + "\1\0\1\11\1\0\2\27\1\11\1\0\1\30\1\31"+ + "\3\11\1\32\1\0\4\11\1\33\1\0\4\11\1\0"+ + "\4\11\1\0\4\11\1\0\1\11\2\34\1\35\1\27"+ + "\2\36"; - /** - * Translates DFA states to action switch labels. - */ - private static final int[] ZZ_ACTION = zzUnpackAction(); + private static int [] zzUnpackAction() { + int [] result = new int[104]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; + } - private static final String ZZ_ACTION_PACKED_0 - = "\3\0\3\1\1\2\1\3\1\4\2\5\1\1\1\6" - + "\2\7\1\10\1\11\1\12\1\13\5\11\1\1\1\11" - + "\1\12\1\11\1\1\1\11\1\14\1\0\1\15\1\16" - + "\1\17\1\20\1\16\1\21\1\22\1\23\1\24\1\25" - + "\1\26\1\16\1\0\1\27\5\11\2\0\1\11\1\27" - + "\2\11\2\0\1\27\1\0\5\11\1\0\1\11\1\27" - + "\1\11\1\0\1\30\1\31\3\11\1\32\1\0\4\11" - + "\1\33\1\0\4\11\1\0\4\11\1\0\4\11\1\0" - + "\1\11\2\34\1\35\1\27\2\36"; - - private static int[] zzUnpackAction() { - int[] result = new int[106]; - 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; + } - private static int zzUnpackAction(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ + /** + * Translates a state to a row index in the transition table + */ + private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - 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; + private static final String ZZ_ROWMAP_PACKED_0 = + "\0\0\0\52\0\124\0\176\0\250\0\322\0\176\0\374"+ + "\0\u0126\0\176\0\u0150\0\176\0\u017a\0\176\0\u01a4\0\u01ce"+ + "\0\176\0\u01f8\0\u0222\0\u024c\0\u0276\0\u02a0\0\u02ca\0\u02f4"+ + "\0\u031e\0\u0348\0\u0372\0\u039c\0\u03c6\0\176\0\176\0\176"+ + "\0\176\0\176\0\u03f0\0\176\0\176\0\176\0\176\0\176"+ + "\0\176\0\u041a\0\u0444\0\u046e\0\u0498\0\u04c2\0\u04ec\0\u0516"+ + "\0\u039c\0\u0540\0\u056a\0\u031e\0\u0594\0\u05be\0\u05e8\0\u0612"+ + "\0\u063c\0\u0666\0\u0690\0\u06ba\0\u06e4\0\u070e\0\u0738\0\u0762"+ + "\0\u078c\0\u078c\0\u01ce\0\u07b6\0\u041a\0\176\0\u01ce\0\u07e0"+ + "\0\u080a\0\u0834\0\u01ce\0\u085e\0\u0888\0\u08b2\0\u08dc\0\u0906"+ + "\0\u01ce\0\u0930\0\u095a\0\u0984\0\u09ae\0\u09d8\0\u0a02\0\u0a2c"+ + "\0\u0a56\0\u0a80\0\u0aaa\0\u0ad4\0\u0afe\0\u0b28\0\u0b52\0\u0b7c"+ + "\0\u0ba6\0\u0bd0\0\u01ce\0\u0bfa\0\u01ce\0\176\0\u01ce\0\u0c24"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[104]; + 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; + } - /** - * Translates a state to a row index in the transition table - */ - private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); + /** + * The transition table of the DFA + */ + private static final int [] ZZ_TRANS = zzUnpackTrans(); - private static final String ZZ_ROWMAP_PACKED_0 - = "\0\0\0\54\0\130\0\204\0\260\0\334\0\u0108\0\204" - + "\0\u0134\0\u0160\0\204\0\u018c\0\204\0\u01b8\0\204\0\u01e4" - + "\0\u0210\0\u023c\0\204\0\u0268\0\u0294\0\u02c0\0\u02ec\0\u0318" - + "\0\u0344\0\u0370\0\u039c\0\u03c8\0\u03f4\0\u0420\0\204\0\334" - + "\0\204\0\204\0\204\0\204\0\u044c\0\204\0\204\0\204" - + "\0\204\0\204\0\204\0\u0478\0\u04a4\0\u04d0\0\u04fc\0\u0528" - + "\0\u0554\0\u0580\0\u05ac\0\u05d8\0\u03f4\0\u0604\0\u039c\0\u0630" - + "\0\u065c\0\u0688\0\u06b4\0\u06e0\0\u06e0\0\u070c\0\u0738\0\u0764" - + "\0\u0790\0\u07bc\0\u07e8\0\u0814\0\u0210\0\u0840\0\u0478\0\204" - + "\0\u0210\0\u086c\0\u0898\0\u08c4\0\u0210\0\u08f0\0\u091c\0\u0948" - + "\0\u0974\0\u09a0\0\u0210\0\u09cc\0\u09f8\0\u0a24\0\u0a50\0\u0a7c" - + "\0\u0aa8\0\u0ad4\0\u0b00\0\u0b2c\0\u0b58\0\u0b84\0\u0bb0\0\u0bdc" - + "\0\u0c08\0\u0c34\0\u0c60\0\u0c8c\0\u0cb8\0\u0210\0\u0210\0\204" - + "\0\u0ce4\0\u0210"; + private static final String ZZ_TRANS_PACKED_0 = + "\4\4\1\5\1\6\3\4\1\7\13\6\1\4\2\6"+ + "\2\4\1\6\1\4\1\6\1\4\1\6\1\4\3\6"+ + "\1\4\1\6\1\4\1\6\1\4\1\5\1\4\1\10"+ + "\1\11\1\12\34\10\1\13\3\10\1\14\6\10\1\4"+ + "\1\15\1\16\1\17\1\4\1\20\2\4\1\21\1\4"+ + "\1\22\1\23\1\24\1\20\1\25\3\20\1\26\2\20"+ + "\1\27\1\30\1\20\1\31\1\32\1\33\1\34\1\20"+ + "\1\4\1\20\1\4\1\20\1\35\1\20\1\36\1\20"+ + "\1\4\1\20\3\4\56\0\1\5\43\0\1\5\6\0"+ + "\2\6\1\37\2\0\13\6\1\0\5\6\1\0\1\6"+ + "\1\0\1\6\1\0\3\6\1\0\1\6\1\0\1\6"+ + "\2\0\1\6\1\10\2\0\34\10\1\0\3\10\1\0"+ + "\6\10\2\0\1\12\47\0\1\40\2\0\7\40\1\41"+ + "\1\42\1\43\1\40\1\44\3\40\1\45\14\40\1\46"+ + "\3\40\1\47\1\50\1\51\1\52\5\0\1\16\47\0"+ + "\1\17\2\0\47\17\5\0\2\20\3\0\13\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\1\20\1\53\11\20\1\0\5\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+ + "\1\20\5\0\2\20\3\0\3\20\1\54\7\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\10\20\1\55\2\20\1\0\5\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+ + "\1\20\5\0\2\20\3\0\5\20\1\56\5\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\2\20\1\57\10\20\1\0\5\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+ + "\1\20\26\0\1\60\1\0\1\31\1\32\1\0\1\61"+ + "\23\0\2\20\3\0\10\20\1\62\2\20\1\0\5\20"+ + "\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+ + "\1\0\1\20\2\0\1\20\15\0\1\63\12\0\2\64"+ + "\1\0\1\65\1\63\32\0\1\63\12\0\2\32\1\0"+ + "\1\65\1\63\22\0\2\20\3\0\5\20\1\66\5\20"+ + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\1\0\1\20\2\0\1\20\30\0\2\65"+ + "\25\0\2\20\3\0\13\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\2\20\1\67\1\0\1\20\1\0"+ + "\1\20\2\0\1\20\15\0\3\70\3\0\1\70\4\0"+ + "\2\70\2\0\1\70\1\0\1\70\2\0\1\70\2\0"+ + "\1\70\22\0\3\71\3\0\1\71\4\0\2\71\2\0"+ + "\1\71\1\0\1\71\2\0\1\71\2\0\1\71\12\0"+ + "\2\20\3\0\2\20\1\72\10\20\1\0\5\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+ + "\1\20\2\0\1\20\5\0\2\20\3\0\13\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\1\73\2\20"+ + "\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+ + "\3\0\11\20\1\74\1\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+ + "\2\0\1\20\5\0\2\20\3\0\6\20\1\75\4\20"+ + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+ + "\3\0\6\20\1\76\4\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+ + "\2\0\1\20\22\0\1\77\34\0\2\20\3\0\4\20"+ + "\1\100\6\20\1\0\5\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+ + "\25\0\1\101\2\0\2\102\3\0\1\101\31\0\1\63"+ + "\12\0\2\65\2\0\1\63\22\0\2\20\3\0\13\20"+ + "\1\0\4\20\1\103\1\0\1\20\1\0\1\20\1\0"+ + "\3\20\1\0\1\20\1\0\1\20\2\0\1\20\5\0"+ + "\2\20\3\0\10\20\1\104\2\20\1\0\5\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+ + "\1\20\2\0\1\20\15\0\3\105\3\0\1\105\4\0"+ + "\2\105\2\0\1\105\1\0\1\105\2\0\1\105\2\0"+ + "\1\105\22\0\3\106\3\0\1\106\4\0\2\106\2\0"+ + "\1\106\1\0\1\106\2\0\1\106\2\0\1\106\12\0"+ + "\2\20\3\0\3\20\1\107\7\20\1\0\5\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+ + "\1\20\2\0\1\20\5\0\2\20\3\0\12\20\1\110"+ + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+ + "\3\0\3\20\1\111\7\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+ + "\2\0\1\20\5\0\2\20\3\0\7\20\1\112\3\20"+ + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+ + "\3\0\6\20\1\113\4\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+ + "\2\0\1\20\16\0\1\114\40\0\2\20\3\0\12\20"+ + "\1\115\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+ + "\3\20\1\0\1\20\1\0\1\20\2\0\1\20\30\0"+ + "\2\102\25\0\2\20\3\0\7\20\1\116\3\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\7\20\1\117\3\20\1\0\5\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+ + "\1\20\5\0\2\20\3\0\4\20\1\120\6\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\3\20\1\121\7\20\1\0\5\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+ + "\1\20\24\0\1\122\32\0\2\20\3\0\10\20\1\123"+ + "\2\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+ + "\3\20\1\0\1\20\1\0\1\20\2\0\1\20\5\0"+ + "\2\20\3\0\1\124\12\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+ + "\2\0\1\20\5\0\2\20\3\0\1\125\12\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\12\20\1\126\1\0\5\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+ + "\22\0\1\127\34\0\2\20\3\0\12\20\1\130\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\5\20\1\131\5\20\1\0\5\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+ + "\1\20\5\0\2\20\3\0\3\20\1\132\7\20\1\0"+ + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+ + "\10\20\1\133\2\20\1\0\5\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+ + "\1\20\24\0\1\134\32\0\2\20\3\0\1\135\12\20"+ + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+ + "\3\0\10\20\1\136\2\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+ + "\2\0\1\20\5\0\2\20\3\0\1\20\1\137\11\20"+ + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+ + "\3\0\3\20\1\140\7\20\1\0\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+ + "\2\0\1\20\12\0\1\141\44\0\2\20\3\0\13\20"+ + "\1\0\1\20\1\103\3\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+ + "\5\0\2\20\3\0\1\142\12\20\1\0\5\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+ + "\1\20\2\0\1\20\5\0\2\20\3\0\13\20\1\0"+ + "\2\20\1\143\1\144\1\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+ + "\5\0\2\20\3\0\11\20\1\145\1\20\1\0\5\20"+ + "\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+ + "\1\0\1\20\2\0\1\20\27\0\1\146\27\0\2\20"+ + "\3\0\13\20\1\0\2\20\1\147\1\150\1\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+ + "\1\20\2\0\1\20\5\0\2\20\3\0\13\20\1\0"+ + "\2\20\2\144\1\20\1\0\1\20\1\0\1\20\1\0"+ + "\3\20\1\0\1\20\1\0\1\20\2\0\1\20\5\0"+ + "\2\20\3\0\13\20\1\0\2\20\2\150\1\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+ + "\1\20\2\0\1\20"; - private static int[] zzUnpackRowMap() { - int[] result = new int[106]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; + private static int [] zzUnpackTrans() { + int [] result = new int[3150]; + 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; + } - private static int zzUnpackRowMap(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ + /* 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; - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; + /* 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 aState + */ + private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); + + private static final String ZZ_ATTRIBUTE_PACKED_0 = + "\3\0\1\11\2\1\1\11\2\1\1\11\1\1\1\11"+ + "\1\1\1\11\2\1\1\11\14\1\5\11\1\1\6\11"+ + "\6\1\2\0\1\1\1\0\4\1\2\0\5\1\1\0"+ + "\1\1\1\0\3\1\1\0\1\11\5\1\1\0\5\1"+ + "\1\0\4\1\1\0\4\1\1\0\4\1\1\0\4\1"+ + "\1\11\2\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[104]; + 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 transition table of the DFA - */ - private static final int[] ZZ_TRANS = zzUnpackTrans(); + /** the input device */ + private java.io.Reader zzReader; - private static final String ZZ_TRANS_PACKED_0 - = "\4\4\1\5\1\6\1\4\1\7\1\6\3\4\1\10" - + "\13\7\1\4\2\7\1\4\1\7\1\4\1\7\1\4" - + "\1\7\1\4\3\7\1\4\1\7\1\4\1\7\1\4" - + "\1\5\1\4\1\11\1\12\1\13\36\11\1\14\3\11" - + "\1\15\6\11\1\4\1\16\1\17\1\20\1\4\1\21" - + "\1\4\2\21\1\22\1\4\1\23\1\4\1\24\1\25" - + "\1\26\1\21\1\27\3\21\1\30\2\21\1\31\1\32" - + "\1\21\1\33\1\34\1\35\1\21\1\4\1\21\1\4" - + "\1\21\1\36\1\21\1\37\1\21\1\4\1\21\3\4" - + "\60\0\1\5\45\0\1\5\6\0\5\40\1\41\2\0" - + "\13\40\1\0\4\40\1\0\1\40\1\0\1\40\1\0" - + "\3\40\1\0\1\40\1\0\1\40\2\0\1\40\5\0" - + "\2\40\3\7\1\41\2\0\13\7\1\0\4\7\1\0" - + "\1\7\1\0\1\7\1\0\3\7\1\0\1\7\1\0" - + "\1\7\2\0\1\40\1\11\2\0\36\11\1\0\3\11" - + "\1\0\6\11\2\0\1\13\51\0\1\42\2\0\12\42" - + "\1\43\1\44\1\45\1\42\1\46\3\42\1\47\13\42" - + "\1\50\3\42\1\51\1\52\1\53\1\54\5\0\1\17" - + "\51\0\1\20\2\0\51\20\5\0\5\21\3\0\13\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\11\0\1\22" - + "\6\0\1\55\12\0\1\22\1\0\1\56\1\55\22\0" - + "\5\21\3\0\1\21\1\57\11\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\60" - + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\10\21\1\61\2\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\62" - + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\2\21\1\63\10\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\11\0\1\22\17\0\1\64\1\0" - + "\1\33\1\0\1\65\23\0\5\21\3\0\10\21\1\66" - + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\11\0" - + "\1\67\6\0\1\55\12\0\1\67\1\0\1\56\1\55" - + "\22\0\5\21\3\0\5\21\1\70\5\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\11\0\1\56\21\0\1\56" - + "\25\0\5\21\3\0\13\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\2\21\1\71\1\0\1\21\1\0" - + "\1\21\2\0\1\21\11\0\1\72\6\0\3\72\3\0" - + "\1\72\4\0\1\72\2\0\1\72\1\0\1\72\2\0" - + "\1\72\2\0\1\72\16\0\1\73\6\0\3\73\3\0" - + "\1\73\4\0\1\73\2\0\1\73\1\0\1\73\2\0" - + "\1\73\2\0\1\73\16\0\1\74\16\0\1\75\2\0" - + "\1\74\3\0\1\75\25\0\1\56\6\0\1\55\12\0" - + "\1\56\2\0\1\55\22\0\5\21\3\0\2\21\1\76" - + "\10\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\13\21\1\0\4\21\1\0\1\21\1\0" - + "\1\21\1\0\1\77\2\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\5\0\5\21\3\0\11\21\1\100\1\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\6\21\1\101\4\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\5\0\5\21\3\0\6\21\1\102\4\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\103" - + "\33\0\5\21\3\0\4\21\1\104\6\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\13\21" - + "\1\0\3\21\1\105\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\10\21\1\106\2\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\11\0\1\107\6\0\3\107\3\0" - + "\1\107\4\0\1\107\2\0\1\107\1\0\1\107\2\0" - + "\1\107\2\0\1\107\16\0\1\110\6\0\3\110\3\0" - + "\1\110\4\0\1\110\2\0\1\110\1\0\1\110\2\0" - + "\1\110\2\0\1\110\16\0\1\74\21\0\1\74\25\0" - + "\5\21\3\0\3\21\1\111\7\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\112" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\3\21\1\113\7\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\5\0\5\21\3\0\7\21\1\114\3\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\6\21\1\115\4\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\21\0\1\116\37\0\5\21\3\0\12\21" - + "\1\117\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\7\21\1\120\3\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\7\21\1\121" - + "\3\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\4\21\1\122\6\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\123" - + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0" - + "\1\124\31\0\5\21\3\0\10\21\1\125\2\21\1\0" - + "\4\21\1\0\1\21\1\0\1\21\1\0\3\21\1\0" - + "\1\21\1\0\1\21\2\0\1\21\5\0\5\21\3\0" - + "\1\126\12\21\1\0\4\21\1\0\1\21\1\0\1\21" - + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" - + "\5\0\5\21\3\0\1\127\12\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\130" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\131" - + "\33\0\5\21\3\0\12\21\1\132\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\133" - + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\3\21\1\134\7\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\10\21\1\135" - + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0" - + "\1\136\31\0\5\21\3\0\1\137\12\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\10\21" - + "\1\140\2\21\1\0\4\21\1\0\1\21\1\0\1\21" - + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" - + "\5\0\5\21\3\0\1\21\1\141\11\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\3\21" - + "\1\142\7\21\1\0\4\21\1\0\1\21\1\0\1\21" - + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" - + "\15\0\1\143\43\0\5\21\3\0\13\21\1\0\1\21" - + "\1\105\2\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\1\144\12\21\1\0\4\21\1\0\1\21\1\0" - + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0" - + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21" - + "\1\146\1\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\11\21\1\147\1\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\32\0\1\150\26\0\4\21\1\151\3\0" - + "\13\21\1\0\2\21\1\152\1\21\1\0\1\21\1\0" - + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0" - + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21" - + "\1\145\1\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\4\21" - + "\1\151\3\0\13\21\1\0\2\21\1\151\1\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21"; + /** the current state of the DFA */ + private int zzState; - private static int[] zzUnpackTrans() { - int[] result = new int[3344]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } + /** the current lexical state */ + private int zzLexicalState = YYINITIAL; - private static int zzUnpackTrans(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ + /** this buffer contains the current text to be matched and is + the source of the yytext() string */ + private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; - int j = offset; - /* index in unpacked array */ + /** the textposition at the last accepting state */ + private int zzMarkedPos; - 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; - } + /** the current text position in the buffer */ + private int zzCurrentPos; + /** startRead marks the beginning of the yytext() string in the buffer */ + private int zzStartRead; - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; + /** endRead marks the last character in the buffer, that has been read + from input */ + private int zzEndRead; - private static final int ZZ_NO_MATCH = 1; + /** number of newlines encountered up to the start of the matched text */ + private int yyline; - private static final int ZZ_PUSHBACK_2BIG = 2; + /** the number of characters up to the start of the matched text */ + private int yychar; - /* 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" - }; + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); + /** + * zzAtBOL == true <=> the scanner is currently at the beginning of a line + */ + private boolean zzAtBOL = true; - private static final String ZZ_ATTRIBUTE_PACKED_0 - = "\3\0\1\11\3\1\1\11\2\1\1\11\1\1\1\11" - + "\1\1\1\11\3\1\1\11\13\1\1\11\1\0\4\11" - + "\1\1\6\11\1\1\1\0\6\1\2\0\4\1\2\0" - + "\1\1\1\0\5\1\1\0\3\1\1\0\1\11\5\1" - + "\1\0\5\1\1\0\4\1\1\0\4\1\1\0\4\1" - + "\1\0\4\1\1\11\2\1"; + /** zzAtEOF == true <=> the scanner is at the EOF */ + private boolean zzAtEOF; - private static int[] zzUnpackAttribute() { - int[] result = new int[106]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /** + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. + */ + private int zzFinalHighSurrogate = 0; - private static int zzUnpackAttribute(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ + /* user code: */ - 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 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; - - /** - * denotes if the user-EOF-code has already been executed - */ - private boolean zzEOFDone; - - /** - * The number of occupied positions in zzBuffer beyond zzEndRead. When a - * lead/high surrogate has been read from the input stream into the final - * zzBuffer position, this will have a value of 1; otherwise, it will have a - * value of 0. - */ - private int zzFinalHighSurrogate = 0; - - /* user code: */ StringBuilder string = new StringBuilder(); /** @@ -631,543 +572,513 @@ public final class FlasmLexer { return yyline + 1; } - /** - * Creates a new scanner - * - * @param in the java.io.Reader to read input from. - */ - public FlasmLexer(java.io.Reader in) { - this.zzReader = in; + + + /** + * Creates a new scanner + * + * @param in the java.io.Reader to read input from. + */ + public FlasmLexer(java.io.Reader in) { + this.zzReader = 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[0x110000]; + int i = 0; /* index in packed string */ + int j = 0; /* index in unpacked array */ + while (i < 2854) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, 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) { + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; } - /** - * 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[0x110000]; - int i = 0; - /* index in packed string */ + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { + /* if not: blow it up */ + char newBuffer[] = new char[zzBuffer.length*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + } - int j = 0; - /* index in unpacked array */ + /* fill the buffer with new input */ + int requested = zzBuffer.length - zzEndRead; + int totalRead = 0; + while (totalRead < requested) { + int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); + if (numRead == -1) { + break; + } + totalRead += numRead; + } - while (i < 2854) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do { - map[j++] = value; - } while (--count > 0); + if (totalRead > 0) { + zzEndRead += totalRead; + if (totalRead == requested) { /* possibly more input available */ + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; } - return map; + } + return false; } - /** - * Refills the input buffer. - * - * @return false, iff there was new input. - * - * @exception java.io.IOException if any I/O-Error occurs - */ - private boolean zzRefill() throws java.io.IOException { + // totalRead = 0: End of stream + return true; + } - /* first: make room (if you can) */ - if (zzStartRead > 0) { - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - System.arraycopy(zzBuffer, zzStartRead, - zzBuffer, 0, - zzEndRead - zzStartRead); + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + zzEndRead = zzStartRead; /* invalidate buffer */ - /* translate stored positions */ - zzEndRead -= zzStartRead; - zzCurrentPos -= zzStartRead; - zzMarkedPos -= zzStartRead; - zzStartRead = 0; + 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 + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. + * + * Internal scan buffer is resized down to its initial length, if it has grown. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + zzFinalHighSurrogate = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + if (zzBuffer.length > ZZ_BUFFERSIZE) + zzBuffer = new char[ZZ_BUFFERSIZE]; + } + + + /** + * 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 pos 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 ASMParsedSymbol yylex() throws java.io.IOException, ActionParseException { + 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; + + while (true) { + zzMarkedPosL = zzMarkedPos; + + yychar+= zzMarkedPosL-zzStartRead; + + boolean zzR = false; + int zzCh; + int zzCharCount; + for (zzCurrentPosL = zzStartRead ; + zzCurrentPosL < zzMarkedPosL ; + zzCurrentPosL += zzCharCount ) { + zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); + zzCharCount = Character.charCount(zzCh); + switch (zzCh) { + 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 += zzCharCount; } + } - /* is the buffer big enough? */ - if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { - /* if not: blow it up */ - char newBuffer[] = new char[zzBuffer.length * 2]; - System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); - zzBuffer = newBuffer; - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; + 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; - /* fill the buffer with new input */ - int requested = zzBuffer.length - zzEndRead; - int totalRead = 0; - while (totalRead < requested) { - int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); - if (numRead == -1) { - break; - } - totalRead += numRead; - } + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[zzLexicalState]; - if (totalRead > 0) { - zzEndRead += totalRead; - if (totalRead == requested) { - /* possibly more input available */ + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } - if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { - --zzEndRead; - zzFinalHighSurrogate = 1; - } - } - return false; - } - - // totalRead = 0: End of stream - return true; - } - - /** - * 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 - * cannot be reused (internal buffer is discarded and lost). Lexical - * state is set to ZZ_INITIAL. - * - * Internal scan buffer is resized down to its initial length, if it has - * grown. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - zzEOFDone = false; - zzEndRead = zzStartRead = 0; - zzCurrentPos = zzMarkedPos = 0; - zzFinalHighSurrogate = 0; - yyline = yychar = yycolumn = 0; - zzLexicalState = YYINITIAL; - if (zzBuffer.length > ZZ_BUFFERSIZE) { - zzBuffer = new char[ZZ_BUFFERSIZE]; - } - } - - /** - * 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 pos 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 ASMParsedSymbol yylex() throws java.io.IOException, ActionParseException { - 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; + zzForAction: { while (true) { - zzMarkedPosL = zzMarkedPos; - - yychar += zzMarkedPosL - zzStartRead; - - boolean zzR = false; - int zzCh; - int zzCharCount; - for (zzCurrentPosL = zzStartRead; - zzCurrentPosL < zzMarkedPosL; - zzCurrentPosL += zzCharCount) { - zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); - zzCharCount = Character.charCount(zzCh); - switch (zzCh) { - 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 += zzCharCount; - } + + if (zzCurrentPosL < zzEndReadL) { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } + else if (zzAtEOF) { + zzInput = YYEOF; + break zzForAction; + } + else { + // store back cached positions + zzCurrentPos = zzCurrentPosL; + zzMarkedPos = zzMarkedPosL; + boolean eof = zzRefill(); + // get translated positions and possibly new buffer + zzCurrentPosL = zzCurrentPos; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + zzEndReadL = zzEndRead; + if (eof) { + zzInput = YYEOF; + break zzForAction; } - - 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--; - } + else { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); } - zzAction = -1; + } + int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; + if (zzNext == -1) break zzForAction; + zzState = zzNext; - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + zzMarkedPosL = zzCurrentPosL; + if ( (zzAttributes & 8) == 8 ) break zzForAction; + } - zzState = ZZ_LEXSTATE[zzLexicalState]; - - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - } - - zzForAction: - { - while (true) { - - if (zzCurrentPosL < zzEndReadL) { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } else { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } - } - int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]]; - if (zzNext == -1) { - break zzForAction; - } - zzState = zzNext; - - zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ((zzAttributes & 8) == 8) { - break zzForAction; - } - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: { - } - case 31: - break; - case 2: { - yybegin(PARAMETERS); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); - } - case 32: - break; - case 3: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); - } - case 33: - break; - case 4: { - string.append(yytext()); - } - case 34: - break; - case 5: { - throw new ActionParseException("Unterminated string at end of line", yyline + 1); - } - case 35: - break; - case 6: { - yybegin(PARAMETERS); - // length also includes the trailing quote - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); - } - case 36: - break; - case 7: { - yybegin(YYINITIAL); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); - } - case 37: - break; - case 8: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1)); - } - case 38: - break; - case 9: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); - } - case 39: - break; - case 10: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); - } - case 40: - break; - case 11: { - yybegin(YYINITIAL); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); - } - case 41: - break; - case 12: { - yybegin(STRING); - string.setLength(0); - } - case 42: - break; - case 13: { - String s = yytext(); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); - } - case 43: - break; - case 14: { - throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 44: - break; - case 15: { - string.append('\t'); - } - case 45: - break; - case 16: { - string.append('\r'); - } - case 46: - break; - case 17: { - string.append('\f'); - } - case 47: - break; - case 18: { - string.append('\n'); - } - case 48: - break; - case 19: { - string.append('\\'); - } - case 49: - break; - case 20: { - string.append('\"'); - } - case 50: - break; - case 21: { - string.append('\b'); - } - case 51: - break; - case 22: { - string.append('\''); - } - case 52: - break; - case 23: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); - } - case 53: - break; - case 24: { - char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 54: - break; - case 25: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.TRUE); - } - case 55: - break; - case 26: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, Null.INSTANCE); - } - case 56: - break; - case 27: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.FALSE); - } - case 57: - break; - case 28: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); - } - case 58: - break; - case 29: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE); - } - case 59: - break; - case 30: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); - } - case 60: - break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); - } - } else { - zzScanError(ZZ_NO_MATCH); - } - } } + } + + // store back cached position + zzMarkedPos = zzMarkedPosL; + + switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { + case 1: + { + } + case 31: break; + case 2: + { yybegin(PARAMETERS); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); + } + case 32: break; + case 3: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); + } + case 33: break; + case 4: + { string.append(yytext()); + } + case 34: break; + case 5: + { throw new ActionParseException("Unterminated string at end of line", yyline + 1); + } + case 35: break; + case 6: + { yybegin(PARAMETERS); + // length also includes the trailing quote + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); + } + case 36: break; + case 7: + { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); + } + case 37: break; + case 8: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1)); + } + case 38: break; + case 9: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); + } + case 39: break; + case 10: + { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); + } + case 40: break; + case 11: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); + } + case 41: break; + case 12: + { yybegin(STRING); + string.setLength(0); + } + case 42: break; + case 13: + { String s=yytext(); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); + } + case 43: break; + case 14: + { throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 44: break; + case 15: + { string.append('\t'); + } + case 45: break; + case 16: + { string.append('\r'); + } + case 46: break; + case 17: + { string.append('\f'); + } + case 47: break; + case 18: + { string.append('\n'); + } + case 48: break; + case 19: + { string.append('\\'); + } + case 49: break; + case 20: + { string.append('\"'); + } + case 50: break; + case 21: + { string.append('\b'); + } + case 51: break; + case 22: + { string.append('\''); + } + case 52: break; + case 23: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); + } + case 53: break; + case 24: + { char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 54: break; + case 25: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE); + } + case 55: break; + case 26: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, Null.INSTANCE); + } + case 56: break; + case 27: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE); + } + case 57: break; + case 28: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); + } + case 58: break; + case 29: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE); + } + case 59: break; + case 30: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); + } + case 60: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } } + } + + } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex index dd0017c8c..ceceb41b2 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex @@ -48,7 +48,7 @@ WhiteSpace = [ \t\f]+ Identifier = [:jletter:][:jletterdigit:]* -InstructionName = [a-zA-Z][a-zA-Z0-9_]* +InstructionName = [:jletter:][:jletterdigit:]* Label = {Identifier}: diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex index f753135b2..dfc379c87 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex @@ -52,7 +52,7 @@ Multiname = m\[[0-9]+\] Identifier = [:jletter:][:jletterdigit:]* -InstructionName = [a-z][a-z0-9_]* +InstructionName = [:jletter:][:jletterdigit:]* Label = {Identifier}: