diff --git a/CHANGELOG.md b/CHANGELOG.md
index 728840421..814494aca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,8 @@ All notable changes to this project will be documented in this file.
### Changed
- Icon of "Deobfuscation options" menu from pile of pills to medkit
- Error log window shows last 100 log entries (instead of first 100)
+- AS1/2 P-code double Push values have suffix ".0" to properly distinguish them
+- AS1/2 P-code float Push values have suffix "f" to properly distinguish them
## [24.0.1] - 2025-06-27
### Fixed
diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar
index 2202c7ad3..59b7c9fe2 100644
Binary files a/lib/jsyntaxpane-0.9.5.jar and b/lib/jsyntaxpane-0.9.5.jar differ
diff --git a/libsrc/ffdec_lib/lexers/actionscript_pcode.flex b/libsrc/ffdec_lib/lexers/actionscript_pcode.flex
index c366e9e2b..fa99a4fa7 100644
--- a/libsrc/ffdec_lib/lexers/actionscript_pcode.flex
+++ b/libsrc/ffdec_lib/lexers/actionscript_pcode.flex
@@ -167,7 +167,8 @@ Constant= constant{PositiveNumberLiteral}
/* numeric literals */
{NumberLiteral} { return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); }
- {FloatLiteral} { return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); }
+ {FloatLiteral} "f" { return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_FLOAT, Float.parseFloat(yytext().substring(0, yytext().length() - 1))); }
+ {FloatLiteral} { return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_DOUBLE, Double.parseDouble((yytext()))); }
{LineTerminator} {yybegin(YYINITIAL); return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_EOL); }
{Comment} {return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1));}
{StartOfBlock} { yybegin(YYINITIAL); return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_BLOCK_START); }
diff --git a/libsrc/ffdec_lib/lexers/actionscript_pcode_hilight.flex b/libsrc/ffdec_lib/lexers/actionscript_pcode_hilight.flex
index 2ac36146e..f19009ea6 100644
--- a/libsrc/ffdec_lib/lexers/actionscript_pcode_hilight.flex
+++ b/libsrc/ffdec_lib/lexers/actionscript_pcode_hilight.flex
@@ -130,7 +130,8 @@ Constant= constant{NumberLiteral}
/* numeric literals */
{NumberLiteral} { return token(TokenType.NUMBER); }
- {FloatLiteral} { return token(TokenType.NUMBER); }
+ {FloatLiteral} "f" { return token(TokenType.NUMBER); }
+ {FloatLiteral} { return token(TokenType.NUMBER); }
{LineTerminator} {yybegin(YYINITIAL); return token(TokenType.NEWLINE);}
{Comment} {return token(TokenType.COMMENT);}
{StartOfBlock} {return token(TokenType.WHITESPACE);}
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java
index 5d264c5ba..3b077e574 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java
@@ -129,14 +129,10 @@ public class DirectValueActionItem extends ActionItem implements SimpleValue {
@Override
public String toStringNoQuotes(LocalData localData) {
if (value instanceof Double) {
- if (Double.compare((double) (Double) value, 0) == 0) {
- return "0";
- }
+ return EcmaScript.toString(value);
}
if (value instanceof Float) {
- if (Float.compare((float) (Float) value, 0) == 0) {
- return "0";
- }
+ return EcmaScript.toString(value);
}
if (value instanceof String) {
return (String) value;
@@ -155,14 +151,10 @@ public class DirectValueActionItem extends ActionItem implements SimpleValue {
@Override
public GraphTextWriter appendToNoQuotes(GraphTextWriter writer, LocalData localData) {
if (value instanceof Double) {
- if (Double.compare((double) (Double) value, 0) == 0) {
- return writer.append("0");
- }
+ return writer.append(EcmaScript.toString(value));
}
if (value instanceof Float) {
- if (Float.compare((float) (Float) value, 0) == 0) {
- return writer.append("0");
- }
+ return writer.append(EcmaScript.toString(value));
}
if (value instanceof String) {
return writer.append((String) value);
@@ -193,17 +185,6 @@ public class DirectValueActionItem extends ActionItem implements SimpleValue {
@Override
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
- if (value instanceof Double) {
- if (Double.compare((double) (Double) value, 0) == 0) {
- return writer.append("0");
- }
- }
- if (value instanceof Float) {
- if (Float.compare((float) (Float) value, 0) == 0) {
- return writer.append("0");
- }
- }
-
if (value instanceof String) {
return writer.append("\"").append(Helper.escapeActionScriptString((String) value)).append("\"");
}
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitwiseBinaryOpActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitwiseBinaryOpActionItem.java
index 7418ddf73..7042e609b 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitwiseBinaryOpActionItem.java
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/operations/BitwiseBinaryOpActionItem.java
@@ -50,7 +50,7 @@ public abstract class BitwiseBinaryOpActionItem extends BinaryOpItem implements
@Override
protected void operandToString(GraphTargetItem operand, GraphTextWriter writer, LocalData localData) throws InterruptedException {
if ((operand instanceof DirectValueActionItem)
- && ((((DirectValueActionItem) operand).value instanceof Long) || (((DirectValueActionItem) operand).value instanceof Double))) {
+ && ((((DirectValueActionItem) operand).value instanceof Long) || (((DirectValueActionItem) operand).value instanceof Double) || (((DirectValueActionItem) operand).value instanceof Float))) {
long val = operand.getAsLong();
if (val > 9) {
String valHex = Long.toHexString(val).toUpperCase();
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParsedSymbol.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParsedSymbol.java
index e5131338c..5f5a3888e 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParsedSymbol.java
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParsedSymbol.java
@@ -127,6 +127,11 @@ public class ASMParsedSymbol {
* Type: Comma
*/
public static final int TYPE_COMMA = 18;
+
+ /**
+ * Type: Double
+ */
+ public static final int TYPE_DOUBLE = 19;
/**
* Constructor.
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java
index a81d043f7..24b08fe93 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java
@@ -1,5 +1,7 @@
+/* The following code was generated by JFlex 1.6.0 */
+
/*
- * Copyright (C) 2010-2025 JPEXS, All rights reserved.
+ * Copyright (C) 2010-2016 JPEXS, All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -14,6 +16,7 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
*/
+/* Flash assembler language lexer specification */
package com.jpexs.decompiler.flash.action.parser.pcode;
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
@@ -23,625 +26,597 @@ import com.jpexs.decompiler.flash.ecma.Null;
import com.jpexs.decompiler.flash.ecma.Undefined;
import java.util.Stack;
+
/**
- * 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
+ * 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;
- public static final int STRING = 2;
- public static final int PARAMETERS = 4;
+ /** lexical states */
+ public static final int YYINITIAL = 0;
+ public static final int STRING = 2;
+ public static final int PARAMETERS = 4;
- /**
- * 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
- };
+ /**
+ * 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 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\43\1\0\1\5\2\0\1\47\3\0\1\35\1\44\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\45\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\50"
- + "\1\27\1\5\1\10\1\0\1\11\1\0\6\6\1\53\32\6\2\0"
- + "\4\5\1\0\1\46\2\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\1\0\1\5\6\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\246\5"
- + "\1\0\46\5\2\0\1\5\6\0\51\5\6\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"
- + "\4\0\4\5\15\0\6\6\5\0\1\5\4\0\13\6\1\0\1\6"
- + "\3\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\2\0\1\6"
- + "\30\5\4\6\1\5\11\6\1\5\3\6\1\5\5\6\22\0\31\5"
- + "\3\6\4\0\13\5\5\0\30\5\1\0\6\5\1\0\2\6\6\0"
- + "\10\6\52\5\72\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5"
- + "\2\6\2\0\12\6\1\0\20\5\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\2\5\1\0"
- + "\1\6\2\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\7\0\1\5\6\6\1\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\7\0\3\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\6\0\5\6\10\5"
- + "\1\0\3\5\1\0\27\5\1\0\20\5\2\0\1\6\1\5\7\6"
- + "\1\0\3\6\1\0\4\6\7\0\2\6\1\0\3\5\2\0\1\5"
- + "\2\0\2\5\2\6\2\0\12\6\20\0\1\5\3\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\6\0\2\5"
- + "\1\0\2\5\2\6\2\0\12\6\1\0\2\5\15\0\4\6\11\5"
- + "\1\0\3\5\1\0\51\5\2\6\1\5\7\6\1\0\3\6\1\0"
- + "\4\6\1\5\5\0\3\5\1\6\7\0\3\5\2\6\2\0\12\6"
- + "\12\0\6\5\1\0\3\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\6\0\12\6\2\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"
- + "\1\0\5\5\1\0\30\5\1\0\1\5\1\0\12\5\1\6\2\5"
- + "\11\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\126\5\2\0\6\5\3\0\u026c\5\2\0"
- + "\21\5\1\0\32\5\5\0\113\5\3\0\13\5\7\0\22\5\4\6"
- + "\11\0\23\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\17\6\6\0\131\5\7\0\5\5\2\6\42\5"
- + "\1\6\1\5\5\0\106\5\12\0\37\5\1\0\14\6\4\0\14\6"
- + "\12\0\12\6\36\5\2\0\5\5\13\0\54\5\4\0\32\5\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\10\0\16\6\1\0\20\6\61\0"
- + "\5\6\57\5\21\6\10\5\3\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\2\0\11\5\7\0\53\5\2\0"
- + "\3\5\20\0\3\6\1\0\25\6\4\5\1\6\6\5\1\6\2\5"
- + "\3\6\1\5\5\0\300\5\100\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\1\0\12\6\1\0\1\5\15\0\1\5"
- + "\20\0\15\5\3\0\41\5\17\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\345\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\53\5\1\0\136\5"
- + "\21\0\40\5\60\0\20\5\u0200\0\u19c0\5\100\0\u568d\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\37\5\2\6\120\5\2\6\45\0\11\5\2\0\147\5"
- + "\2\0\100\5\5\0\2\5\1\0\1\5\1\0\5\5\30\0\20\5"
- + "\1\6\3\5\1\6\4\5\1\6\27\5\5\6\4\0\1\6\13\0"
- + "\1\5\7\0\64\5\14\0\2\6\62\5\22\6\12\0\12\6\6\0"
- + "\22\6\6\5\3\0\1\5\1\0\2\5\13\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\6\0\5\5\1\6\12\5\12\6\5\5\1\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\3\6\62\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\1\0\53\5\1\0\16\5\6\0\163\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\20\6\3\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\17\0\1\6\37\0\40\5\15\0\36\5"
- + "\5\0\46\5\5\6\5\0\36\5\2\0\44\5\4\0\10\5\1\0"
- + "\5\5\52\0\236\5\2\0\12\6\6\0\44\5\4\0\44\5\4\0"
- + "\50\5\10\0\64\5\14\0\13\5\1\0\17\5\1\0\7\5\1\0"
- + "\2\5\1\0\13\5\1\0\17\5\1\0\7\5\1\0\2\5\103\0"
- + "\u0137\5\11\0\26\5\12\0\10\5\30\0\6\5\1\0\52\5\1\0"
- + "\11\5\105\0\6\5\2\0\1\5\1\0\54\5\1\0\2\5\3\0"
- + "\1\5\2\0\27\5\12\0\27\5\11\0\37\5\101\0\23\5\1\0"
- + "\2\5\12\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"
- + "\35\5\2\0\3\6\4\0\1\6\40\0\35\5\3\0\35\5\43\0"
- + "\10\5\1\0\34\5\2\6\31\0\66\5\12\0\26\5\12\0\23\5"
- + "\15\0\22\5\156\0\111\5\67\0\63\5\15\0\63\5\15\0\44\5"
- + "\4\6\10\0\12\6\u0146\0\52\5\1\0\2\6\3\0\2\5\116\0"
- + "\35\5\12\0\1\5\10\0\26\5\13\6\37\0\22\5\4\6\52\0"
- + "\25\5\33\0\27\5\11\0\3\6\65\5\17\6\37\0\13\6\2\5"
- + "\2\6\1\5\11\0\4\6\55\5\13\6\2\0\1\6\4\0\1\6"
- + "\12\0\1\6\2\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6"
- + "\1\0\12\6\4\0\1\5\2\6\1\5\10\0\43\5\1\6\2\0"
- + "\1\5\11\0\3\6\60\5\16\6\4\5\4\0\4\6\1\0\14\6"
- + "\1\5\1\0\1\5\43\0\22\5\1\0\31\5\14\6\6\0\1\6"
- + "\101\0\7\5\1\0\1\5\1\0\4\5\1\0\17\5\1\0\12\5"
- + "\7\0\57\5\14\6\5\0\12\6\6\0\4\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\1\0"
- + "\2\6\1\5\7\6\2\0\2\6\2\0\3\6\2\0\1\5\6\0"
- + "\1\6\5\0\5\5\2\6\2\0\7\6\3\0\5\6\213\0\65\5"
- + "\22\6\4\5\5\0\12\6\4\0\1\6\3\5\36\0\60\5\24\6"
- + "\2\5\1\0\1\5\10\0\12\6\246\0\57\5\7\6\2\0\11\6"
- + "\27\0\4\5\2\6\42\0\60\5\21\6\3\0\1\5\13\0\12\6"
- + "\46\0\53\5\15\6\1\5\7\0\12\6\66\0\33\5\2\0\17\6"
- + "\4\0\12\6\6\0\7\5\271\0\54\5\17\6\145\0\100\5\12\6"
- + "\25\0\10\5\2\0\1\5\2\0\10\5\1\0\2\5\1\0\30\5"
- + "\6\6\1\0\2\6\2\0\4\6\1\5\1\6\1\5\2\6\14\0"
- + "\12\6\106\0\10\5\2\0\47\5\7\6\2\0\7\6\1\5\1\0"
- + "\1\5\1\6\33\0\1\5\12\6\50\5\7\6\1\5\4\6\10\0"
- + "\1\6\10\0\1\5\13\6\56\5\20\6\3\0\1\5\22\0\111\5"
- + "\u0107\0\11\5\1\0\45\5\10\6\1\0\10\6\1\5\17\0\12\6"
- + "\30\0\36\5\2\0\26\6\1\0\16\6\111\0\7\5\1\0\2\5"
- + "\1\0\46\5\6\6\3\0\1\6\1\0\2\6\1\0\7\6\1\5"
- + "\1\6\10\0\12\6\6\0\6\5\1\0\2\5\1\0\40\5\5\6"
- + "\1\0\2\6\1\0\5\6\1\5\7\0\12\6\u0136\0\23\5\4\6"
- + "\271\0\1\5\54\0\4\5\37\0\u039a\5\146\0\157\5\21\0\304\5"
- + "\u0a4c\0\141\5\17\0\u042f\5\1\0\11\6\u0fc7\0\u0247\5\u21b9\0\u0239\5"
- + "\7\0\37\5\1\0\12\6\6\0\117\5\1\0\12\6\6\0\36\5"
- + "\2\0\5\6\13\0\60\5\7\6\11\0\4\5\14\0\12\6\11\0"
- + "\25\5\5\0\23\5\u02b0\0\100\5\200\0\113\5\4\0\1\6\1\5"
- + "\67\6\7\0\4\6\15\5\100\0\2\5\1\0\1\5\1\6\13\0"
- + "\2\6\16\0\u17f8\5\10\0\u04d6\5\52\0\11\5\u22e7\0\4\5\1\0"
- + "\7\5\1\0\2\5\1\0\u0123\5\55\0\3\5\21\0\4\5\10\0"
- + "\u018c\5\u0904\0\153\5\5\0\15\5\3\0\11\5\7\0\12\5\3\0"
- + "\2\6\1\0\4\6\u125c\0\56\6\2\0\27\6\u021e\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\u0200\0"
- + "\67\6\4\0\62\6\10\0\1\6\16\0\1\6\26\0\5\6\1\0"
- + "\17\6\u0450\0\37\5\341\0\7\6\1\0\21\6\2\0\7\6\1\0"
- + "\2\6\1\0\5\6\325\0\55\5\3\0\7\6\7\5\2\0\12\6"
- + "\4\0\1\5\u0141\0\36\5\1\6\21\0\54\5\16\6\5\0\1\5"
- + "\u04e0\0\7\5\1\0\4\5\1\0\2\5\1\0\17\5\1\0\305\5"
- + "\13\0\7\6\51\0\104\5\7\6\1\5\4\0\12\6\u0356\0\1\5"
- + "\u014f\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\u0d34\0\12\6\u0406\0\ua6e0\5"
- + "\40\0\u1039\5\7\0\336\5\2\0\u1682\5\16\0\u1d31\5\u0c1f\0\u021e\5"
- + "\u05e2\0\u134b\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uecc0\0"
- + "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0";
+ /**
+ * 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\43\1\0\1\5\2\0\1\47\3\0\1\35\1\44\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\45\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\50"+
+ "\1\27\1\5\1\10\1\0\1\11\1\0\6\6\1\53\32\6\2\0"+
+ "\4\5\1\0\1\46\2\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\1\0\1\5\6\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\246\5"+
+ "\1\0\46\5\2\0\1\5\6\0\51\5\6\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"+
+ "\4\0\4\5\15\0\6\6\5\0\1\5\4\0\13\6\1\0\1\6"+
+ "\3\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\2\0\1\6"+
+ "\30\5\4\6\1\5\11\6\1\5\3\6\1\5\5\6\22\0\31\5"+
+ "\3\6\4\0\13\5\5\0\30\5\1\0\6\5\1\0\2\6\5\0"+
+ "\11\6\52\5\72\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5"+
+ "\2\6\2\0\12\6\1\0\20\5\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\2\5\1\0"+
+ "\1\6\2\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\7\0\1\5\6\6\1\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\7\0\3\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\6\0\5\6\10\5"+
+ "\1\0\3\5\1\0\27\5\1\0\20\5\2\0\1\6\1\5\7\6"+
+ "\1\0\3\6\1\0\4\6\7\0\2\6\1\0\3\5\2\0\1\5"+
+ "\2\0\2\5\2\6\2\0\12\6\20\0\1\5\3\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\6\0\2\5"+
+ "\1\0\2\5\2\6\2\0\12\6\1\0\2\5\1\6\14\0\4\6"+
+ "\11\5\1\0\3\5\1\0\51\5\2\6\1\5\7\6\1\0\3\6"+
+ "\1\0\4\6\1\5\5\0\3\5\1\6\7\0\3\5\2\6\2\0"+
+ "\12\6\12\0\6\5\1\0\3\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\6\0\12\6\2\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\1\0\5\5\1\0\30\5\1\0\1\5\1\0\12\5\1\6"+
+ "\2\5\11\6\1\5\2\0\5\5\1\0\1\5\1\0\7\6\1\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\126\5\2\0\6\5\3\0\u026c\5"+
+ "\2\0\21\5\1\0\32\5\5\0\113\5\3\0\13\5\7\0\22\5"+
+ "\4\6\11\0\23\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\17\6\6\0\131\5\7\0\5\5\2\6"+
+ "\42\5\1\6\1\5\5\0\106\5\12\0\37\5\1\0\14\6\4\0"+
+ "\14\6\12\0\12\6\36\5\2\0\5\5\13\0\54\5\4\0\32\5"+
+ "\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\10\0\16\6\1\0\20\6"+
+ "\61\0\5\6\57\5\21\6\10\5\3\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\2\0\13\5\5\0\53\5"+
+ "\2\0\3\5\20\0\3\6\1\0\25\6\4\5\1\6\6\5\1\6"+
+ "\2\5\3\6\1\5\5\0\300\5\100\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\1\0\12\6\1\0\1\5\15\0"+
+ "\1\5\20\0\15\5\3\0\41\5\17\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"+
+ "\345\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\53\5\1\0"+
+ "\136\5\21\0\40\5\60\0\20\5\u0200\0\u19c0\5\100\0\u568d\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\37\5\2\6\120\5\2\6\45\0\11\5\2\0"+
+ "\147\5\2\0\103\5\2\0\2\5\1\0\1\5\1\0\10\5\25\0"+
+ "\20\5\1\6\3\5\1\6\4\5\1\6\27\5\5\6\4\0\1\6"+
+ "\13\0\1\5\7\0\64\5\14\0\2\6\62\5\22\6\12\0\12\6"+
+ "\6\0\22\6\6\5\3\0\1\5\1\0\2\5\13\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\6\0\5\5\1\6\12\5\12\6\5\5\1\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\3\6\62\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\1\0\53\5\1\0\16\5\6\0\163\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\20\6\3\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\17\0\1\6\37\0\40\5\15\0"+
+ "\36\5\5\0\46\5\5\6\5\0\36\5\2\0\44\5\4\0\10\5"+
+ "\1\0\5\5\52\0\236\5\2\0\12\6\6\0\44\5\4\0\44\5"+
+ "\4\0\50\5\10\0\64\5\14\0\13\5\1\0\17\5\1\0\7\5"+
+ "\1\0\2\5\1\0\13\5\1\0\17\5\1\0\7\5\1\0\2\5"+
+ "\3\0\64\5\14\0\u0137\5\11\0\26\5\12\0\10\5\30\0\6\5"+
+ "\1\0\52\5\1\0\11\5\105\0\6\5\2\0\1\5\1\0\54\5"+
+ "\1\0\2\5\3\0\1\5\2\0\27\5\12\0\27\5\11\0\37\5"+
+ "\101\0\23\5\1\0\2\5\12\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\35\5\2\0\3\6\4\0\1\6\40\0\35\5"+
+ "\3\0\35\5\43\0\10\5\1\0\34\5\2\6\31\0\66\5\12\0"+
+ "\26\5\12\0\23\5\15\0\22\5\156\0\111\5\67\0\63\5\15\0"+
+ "\63\5\15\0\44\5\4\6\10\0\12\6\6\0\12\6\34\5\3\0"+
+ "\5\6\1\0\27\5\372\0\52\5\1\0\2\6\3\0\2\5\20\0"+
+ "\3\5\67\0\4\6\35\5\12\0\1\5\10\0\26\5\13\6\37\0"+
+ "\22\5\4\6\52\0\25\5\33\0\27\5\11\0\3\6\65\5\17\6"+
+ "\37\0\13\6\2\5\2\6\1\5\11\0\4\6\55\5\13\6\2\0"+
+ "\1\6\4\0\1\6\12\0\1\6\2\0\31\5\7\0\12\6\6\0"+
+ "\3\6\44\5\16\6\1\0\12\6\4\0\1\5\2\6\1\5\10\0"+
+ "\43\5\1\6\2\0\1\5\11\0\3\6\60\5\16\6\4\5\4\0"+
+ "\4\6\1\0\14\6\1\5\1\0\1\5\43\0\22\5\1\0\31\5"+
+ "\14\6\6\0\1\6\2\5\1\6\76\0\7\5\1\0\1\5\1\0"+
+ "\4\5\1\0\17\5\1\0\12\5\7\0\57\5\14\6\5\0\12\6"+
+ "\6\0\4\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\1\0\2\6\1\5\7\6\2\0\2\6"+
+ "\2\0\3\6\2\0\1\5\6\0\1\6\5\0\5\5\2\6\2\0"+
+ "\7\6\3\0\5\6\13\0\12\5\1\0\1\5\2\0\1\5\1\0"+
+ "\46\5\1\0\1\5\11\6\1\0\1\6\2\0\1\6\1\0\4\6"+
+ "\1\0\5\6\1\5\1\6\1\5\15\0\2\6\35\0\65\5\22\6"+
+ "\4\5\5\0\12\6\4\0\1\6\3\5\36\0\60\5\24\6\2\5"+
+ "\1\0\1\5\10\0\12\6\246\0\57\5\7\6\2\0\11\6\27\0"+
+ "\4\5\2\6\42\0\60\5\21\6\3\0\1\5\13\0\12\6\46\0"+
+ "\53\5\15\6\1\5\7\0\12\6\6\0\24\6\34\0\33\5\2\0"+
+ "\17\6\4\0\12\6\6\0\7\5\271\0\54\5\17\6\145\0\100\5"+
+ "\12\6\25\0\10\5\2\0\1\5\2\0\10\5\1\0\2\5\1\0"+
+ "\30\5\6\6\1\0\2\6\2\0\4\6\1\5\1\6\1\5\2\6"+
+ "\14\0\12\6\106\0\10\5\2\0\47\5\7\6\2\0\7\6\1\5"+
+ "\1\0\1\5\1\6\33\0\1\5\12\6\50\5\7\6\1\5\4\6"+
+ "\10\0\1\6\10\0\1\5\13\6\56\5\20\6\3\0\1\5\22\0"+
+ "\111\5\307\0\41\5\17\0\12\6\6\0\11\5\1\0\45\5\10\6"+
+ "\1\0\10\6\1\5\17\0\12\6\30\0\36\5\2\0\26\6\1\0"+
+ "\16\6\111\0\7\5\1\0\2\5\1\0\46\5\6\6\3\0\1\6"+
+ "\1\0\2\6\1\0\7\6\1\5\1\6\10\0\12\6\6\0\6\5"+
+ "\1\0\2\5\1\0\40\5\5\6\1\0\2\6\1\0\5\6\1\5"+
+ "\7\0\12\6\u0136\0\23\5\4\6\11\0\2\6\1\5\1\6\15\5"+
+ "\1\0\42\5\7\6\3\0\5\6\15\0\13\6\125\0\1\5\54\0"+
+ "\4\5\37\0\u039a\5\146\0\157\5\21\0\304\5\u0a4c\0\141\5\17\0"+
+ "\u0430\5\21\6\6\5\17\6\12\0\u0f9b\5\5\0\u0247\5\u1ab9\0\36\5"+
+ "\34\6\u06c6\0\u0239\5\7\0\37\5\1\0\12\6\6\0\117\5\1\0"+
+ "\12\6\6\0\36\5\2\0\5\6\13\0\60\5\7\6\11\0\4\5"+
+ "\14\0\12\6\11\0\25\5\5\0\23\5\u01b0\0\55\5\3\0\12\6"+
+ "\306\0\100\5\200\0\113\5\4\0\1\6\1\5\67\6\7\0\4\6"+
+ "\15\5\100\0\2\5\1\0\1\5\1\6\13\0\2\6\16\0\u17f8\5"+
+ "\10\0\u04d6\5\51\0\12\5\u22e7\0\4\5\1\0\7\5\1\0\2\5"+
+ "\1\0\u0123\5\17\0\1\5\35\0\3\5\2\0\1\5\16\0\4\5"+
+ "\10\0\u018c\5\u0904\0\153\5\5\0\15\5\3\0\11\5\7\0\12\5"+
+ "\3\0\2\6\1\0\4\6\u104c\0\12\6\u0206\0\56\6\2\0\27\6"+
+ "\u021e\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\u0200\0\67\6\4\0\62\6\10\0\1\6\16\0\1\6"+
+ "\26\0\5\6\1\0\17\6\u0450\0\37\5\6\0\6\5\325\0\7\6"+
+ "\1\0\21\6\2\0\7\6\1\0\2\6\1\0\5\6\5\0\76\5"+
+ "\41\0\1\6\160\0\55\5\3\0\7\6\7\5\2\0\12\6\4\0"+
+ "\1\5\u0141\0\36\5\1\6\21\0\54\5\16\6\5\0\1\5\u01d0\0"+
+ "\34\5\16\6\326\0\36\5\2\6\1\5\12\6\u01e5\0\7\5\1\0"+
+ "\4\5\1\0\2\5\1\0\17\5\1\0\305\5\13\0\7\6\51\0"+
+ "\104\5\7\6\1\5\4\0\12\6\u0356\0\1\5\u014f\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\u0d34\0\12\6\u0406\0\ua6e0\5\40\0\u103a\5\6\0"+
+ "\336\5\2\0\u1682\5\16\0\u1d31\5\17\0\u026e\5\u09a2\0\u021e\5\u05e2\0"+
+ "\u134b\5\5\0\u1060\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\udc5b\0"+
+ "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0";
- /**
- * Translates characters to character classes
- */
- private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+ /**
+ * 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();
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static final int [] ZZ_ACTION = zzUnpackAction();
- 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\2\17\1\20"
- + "\1\21\1\17\1\22\1\23\1\24\1\25\1\26\1\27"
- + "\1\30\1\17\5\11\2\0\1\11\1\0\2\31\2\11"
- + "\4\0\5\11\1\0\1\11\1\0\2\31\1\11\1\32"
- + "\1\0\1\33\1\34\3\11\1\35\1\0\4\11\1\36"
- + "\1\0\4\11\1\0\4\11\1\0\4\11\1\0\1\11"
- + "\2\37\1\40\1\31\2\41";
+ 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\2\17\1\20"+
+ "\1\21\1\17\1\22\1\23\1\24\1\25\1\26\1\27"+
+ "\1\30\1\17\5\11\2\0\1\11\1\0\1\31\2\32"+
+ "\2\11\4\0\5\11\1\0\1\11\1\0\2\32\1\11"+
+ "\1\33\1\0\1\34\1\35\3\11\1\36\1\0\1\11"+
+ "\1\31\3\11\1\37\1\0\4\11\1\0\4\11\1\0"+
+ "\4\11\1\0\1\11\2\40\1\41\1\32\2\42";
- private static int[] zzUnpackAction() {
- int[] result = new int[110];
- int offset = 0;
- offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
- return result;
+ private static int [] zzUnpackAction() {
+ int [] result = new int[112];
+ 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 */
- 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\54\0\130\0\204\0\260\0\334\0\204\0\204"+
+ "\0\u0108\0\204\0\u0134\0\204\0\u0160\0\204\0\u018c\0\u01b8"+
+ "\0\204\0\u01e4\0\u0210\0\u023c\0\u0268\0\u0294\0\u02c0\0\u02ec"+
+ "\0\u0318\0\u0344\0\u0370\0\u039c\0\u03c8\0\204\0\204\0\204"+
+ "\0\204\0\u03f4\0\204\0\204\0\u0420\0\204\0\204\0\204"+
+ "\0\204\0\204\0\204\0\204\0\u044c\0\u0478\0\u04a4\0\u04d0"+
+ "\0\u04fc\0\u0528\0\u0554\0\u039c\0\u0580\0\u05ac\0\204\0\u0318"+
+ "\0\u05d8\0\u0604\0\u0630\0\u065c\0\u0688\0\u06b4\0\u06e0\0\u070c"+
+ "\0\u0738\0\u0764\0\u0790\0\u07bc\0\u07e8\0\u0814\0\u0840\0\u086c"+
+ "\0\u0898\0\u08c4\0\204\0\u044c\0\204\0\u01b8\0\u08f0\0\u091c"+
+ "\0\u0948\0\u01b8\0\u0974\0\u09a0\0\u01b8\0\u09cc\0\u09f8\0\u0a24"+
+ "\0\u01b8\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\u0ce4\0\u0d10\0\u01b8\0\u0d3c\0\u01b8\0\u0d68\0\u01b8\0\u0d94";
+
+ private static int [] zzUnpackRowMap() {
+ int [] result = new int[112];
+ 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\204\0\204"
- + "\0\u0108\0\204\0\u0134\0\204\0\u0160\0\204\0\u018c\0\u01b8"
- + "\0\204\0\u01e4\0\u0210\0\u023c\0\u0268\0\u0294\0\u02c0\0\u02ec"
- + "\0\u0318\0\u0344\0\u0370\0\u039c\0\u03c8\0\204\0\204\0\204"
- + "\0\204\0\u03f4\0\204\0\204\0\u0420\0\204\0\204\0\204"
- + "\0\204\0\204\0\204\0\204\0\u044c\0\u0478\0\u04a4\0\u04d0"
- + "\0\u04fc\0\u0528\0\u0554\0\u039c\0\u0580\0\u05ac\0\u0318\0\u05d8"
- + "\0\u0604\0\u0630\0\u065c\0\u0688\0\u06b4\0\u06e0\0\u070c\0\u0738"
- + "\0\u0764\0\u0790\0\u07bc\0\u07e8\0\u0814\0\u0840\0\u0840\0\u01b8"
- + "\0\u086c\0\204\0\u044c\0\204\0\u01b8\0\u0898\0\u08c4\0\u08f0"
- + "\0\u01b8\0\u091c\0\u0948\0\u0974\0\u09a0\0\u09cc\0\u01b8\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\u01b8\0\u0ce4\0\u01b8\0\204\0\u01b8\0\u0d10";
+ 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"+
+ "\2\4\1\6\2\4\1\6\1\4\1\5\1\4\1\10"+
+ "\1\11\1\12\34\10\1\13\3\10\1\14\10\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\37"+
+ "\1\20\2\4\1\20\3\4\60\0\1\5\45\0\1\5"+
+ "\6\0\2\6\1\40\2\0\13\6\1\0\5\6\1\0"+
+ "\1\6\1\0\1\6\1\0\3\6\2\0\1\6\2\0"+
+ "\1\6\2\0\1\6\2\0\1\12\51\0\1\41\2\0"+
+ "\5\41\1\42\1\41\1\43\1\44\1\45\1\41\1\46"+
+ "\3\41\1\47\14\41\1\50\3\41\1\51\1\41\1\52"+
+ "\1\53\1\54\1\55\5\0\1\16\51\0\1\17\2\0"+
+ "\51\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\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\5\0\2\20\3\0\1\20\1\56"+
+ "\11\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"+
+ "\2\20\3\0\3\20\1\57\7\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\5\0\2\20\3\0\10\20\1\60"+
+ "\2\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"+
+ "\2\20\3\0\5\20\1\61\5\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\5\0\2\20\3\0\2\20\1\62"+
+ "\10\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\26\0"+
+ "\1\63\1\0\1\31\1\32\1\0\1\64\25\0\2\20"+
+ "\3\0\10\20\1\65\2\20\1\0\5\20\1\0\1\20"+
+ "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"+
+ "\2\0\1\20\15\0\1\66\1\67\11\0\2\70\1\0"+
+ "\1\71\1\66\34\0\1\66\1\67\11\0\2\32\1\0"+
+ "\1\71\1\66\24\0\2\20\3\0\5\20\1\72\5\20"+
+ "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
+ "\2\0\1\20\2\0\1\20\2\0\1\20\30\0\2\71"+
+ "\27\0\2\20\3\0\13\20\1\0\5\20\1\0\1\20"+
+ "\1\0\1\20\1\0\2\20\1\73\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\30\0\1\74\1\75\37\0\3\76"+
+ "\3\0\1\76\4\0\2\76\2\0\1\76\1\0\1\76"+
+ "\2\0\1\76\3\0\1\76\23\0\3\77\3\0\1\77"+
+ "\4\0\2\77\2\0\1\77\1\0\1\77\2\0\1\77"+
+ "\3\0\1\77\13\0\2\20\3\0\2\20\1\100\10\20"+
+ "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
+ "\2\0\1\20\2\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\101\2\20\2\0\1\20\2\0\1\20\2\0"+
+ "\1\20\5\0\2\20\3\0\11\20\1\102\1\20\1\0"+
+ "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"+
+ "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
+ "\6\20\1\103\4\20\1\0\5\20\1\0\1\20\1\0"+
+ "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"+
+ "\1\20\5\0\2\20\3\0\6\20\1\104\4\20\1\0"+
+ "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"+
+ "\1\20\2\0\1\20\2\0\1\20\22\0\1\105\36\0"+
+ "\2\20\3\0\4\20\1\106\6\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\25\0\1\107\2\0\2\110\3\0"+
+ "\1\107\33\0\1\66\1\67\11\0\2\71\2\0\1\66"+
+ "\24\0\2\20\3\0\13\20\1\0\4\20\1\111\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\5\0\2\20\3\0\10\20\1\112"+
+ "\2\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\11\0"+
+ "\1\113\53\0\1\113\16\0\2\75\37\0\3\114\3\0"+
+ "\1\114\4\0\2\114\2\0\1\114\1\0\1\114\2\0"+
+ "\1\114\3\0\1\114\23\0\3\115\3\0\1\115\4\0"+
+ "\2\115\2\0\1\115\1\0\1\115\2\0\1\115\3\0"+
+ "\1\115\13\0\2\20\3\0\3\20\1\116\7\20\1\0"+
+ "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"+
+ "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
+ "\12\20\1\117\1\0\5\20\1\0\1\20\1\0\1\20"+
+ "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"+
+ "\5\0\2\20\3\0\3\20\1\120\7\20\1\0\5\20"+
+ "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"+
+ "\2\0\1\20\2\0\1\20\5\0\2\20\3\0\7\20"+
+ "\1\121\3\20\1\0\5\20\1\0\1\20\1\0\1\20"+
+ "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"+
+ "\5\0\2\20\3\0\6\20\1\122\4\20\1\0\5\20"+
+ "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"+
+ "\2\0\1\20\2\0\1\20\16\0\1\123\42\0\2\20"+
+ "\3\0\12\20\1\124\1\0\5\20\1\0\1\20\1\0"+
+ "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"+
+ "\1\20\30\0\2\110\40\0\1\67\11\0\2\110\27\0"+
+ "\2\20\3\0\4\20\1\125\6\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\5\0\2\20\3\0\7\20\1\126"+
+ "\3\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"+
+ "\2\20\3\0\7\20\1\127\3\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\5\0\2\20\3\0\4\20\1\130"+
+ "\6\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"+
+ "\2\20\3\0\3\20\1\131\7\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\24\0\1\132\34\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\2\0\1\20\2\0\1\20\2\0"+
+ "\1\20\5\0\2\20\3\0\1\134\12\20\1\0\5\20"+
+ "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"+
+ "\2\0\1\20\2\0\1\20\5\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\2\0\1\20\2\0\1\20\2\0\1\20\5\0"+
+ "\2\20\3\0\12\20\1\136\1\0\5\20\1\0\1\20"+
+ "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"+
+ "\2\0\1\20\22\0\1\137\36\0\2\20\3\0\12\20"+
+ "\1\140\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"+
+ "\2\20\3\0\5\20\1\141\5\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\5\0\2\20\3\0\3\20\1\142"+
+ "\7\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"+
+ "\2\20\3\0\10\20\1\143\2\20\1\0\5\20\1\0"+
+ "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"+
+ "\1\20\2\0\1\20\24\0\1\144\34\0\2\20\3\0"+
+ "\1\145\12\20\1\0\5\20\1\0\1\20\1\0\1\20"+
+ "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"+
+ "\5\0\2\20\3\0\10\20\1\146\2\20\1\0\5\20"+
+ "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"+
+ "\2\0\1\20\2\0\1\20\5\0\2\20\3\0\1\20"+
+ "\1\147\11\20\1\0\5\20\1\0\1\20\1\0\1\20"+
+ "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"+
+ "\5\0\2\20\3\0\3\20\1\150\7\20\1\0\5\20"+
+ "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"+
+ "\2\0\1\20\2\0\1\20\12\0\1\151\46\0\2\20"+
+ "\3\0\13\20\1\0\1\20\1\111\3\20\1\0\1\20"+
+ "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"+
+ "\2\0\1\20\5\0\2\20\3\0\1\152\12\20\1\0"+
+ "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"+
+ "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
+ "\13\20\1\0\2\20\1\153\1\154\1\20\1\0\1\20"+
+ "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"+
+ "\2\0\1\20\5\0\2\20\3\0\11\20\1\155\1\20"+
+ "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
+ "\2\0\1\20\2\0\1\20\2\0\1\20\27\0\1\156"+
+ "\31\0\2\20\3\0\13\20\1\0\2\20\1\157\1\160"+
+ "\1\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"+
+ "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
+ "\13\20\1\0\2\20\2\154\1\20\1\0\1\20\1\0"+
+ "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"+
+ "\1\20\16\0\1\67\42\0\2\20\3\0\13\20\1\0"+
+ "\2\20\2\160\1\20\1\0\1\20\1\0\1\20\1\0"+
+ "\3\20\2\0\1\20\2\0\1\20\2\0\1\20";
- private static int[] zzUnpackRowMap() {
- int[] result = new int[110];
- int offset = 0;
- offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
- return result;
+ private static int [] zzUnpackTrans() {
+ int [] result = new int[3520];
+ 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 */
- int l = packed.length();
- while (i < l) {
- int high = packed.charAt(i++) << 16;
- result[j++] = high | packed.charAt(i++);
- }
- 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 aState
+ */
+ private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private static final String ZZ_ATTRIBUTE_PACKED_0 =
+ "\3\0\1\11\2\1\2\11\1\1\1\11\1\1\1\11"+
+ "\1\1\1\11\2\1\1\11\14\1\4\11\1\1\2\11"+
+ "\1\1\7\11\6\1\2\0\1\1\1\0\1\11\4\1"+
+ "\4\0\5\1\1\0\1\1\1\0\3\1\1\11\1\0"+
+ "\1\11\5\1\1\0\6\1\1\0\4\1\1\0\4\1"+
+ "\1\0\4\1\1\0\7\1";
+
+ private static int [] zzUnpackAttribute() {
+ int [] result = new int[112];
+ 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\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"
- + "\2\4\1\6\2\4\1\6\1\4\1\5\1\4\1\10"
- + "\1\11\1\12\34\10\1\13\3\10\1\14\10\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\37"
- + "\1\20\2\4\1\20\3\4\60\0\1\5\45\0\1\5"
- + "\6\0\2\6\1\40\2\0\13\6\1\0\5\6\1\0"
- + "\1\6\1\0\1\6\1\0\3\6\2\0\1\6\2\0"
- + "\1\6\2\0\1\6\2\0\1\12\51\0\1\41\2\0"
- + "\5\41\1\42\1\41\1\43\1\44\1\45\1\41\1\46"
- + "\3\41\1\47\14\41\1\50\3\41\1\51\1\41\1\52"
- + "\1\53\1\54\1\55\5\0\1\16\51\0\1\17\2\0"
- + "\51\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\2\0\1\20\2\0"
- + "\1\20\2\0\1\20\5\0\2\20\3\0\1\20\1\56"
- + "\11\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"
- + "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"
- + "\2\20\3\0\3\20\1\57\7\20\1\0\5\20\1\0"
- + "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"
- + "\1\20\2\0\1\20\5\0\2\20\3\0\10\20\1\60"
- + "\2\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"
- + "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"
- + "\2\20\3\0\5\20\1\61\5\20\1\0\5\20\1\0"
- + "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"
- + "\1\20\2\0\1\20\5\0\2\20\3\0\2\20\1\62"
- + "\10\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"
- + "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\26\0"
- + "\1\63\1\0\1\31\1\32\1\0\1\64\25\0\2\20"
- + "\3\0\10\20\1\65\2\20\1\0\5\20\1\0\1\20"
- + "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"
- + "\2\0\1\20\15\0\1\66\12\0\2\67\1\0\1\70"
- + "\1\66\34\0\1\66\12\0\2\32\1\0\1\70\1\66"
- + "\24\0\2\20\3\0\5\20\1\71\5\20\1\0\5\20"
- + "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"
- + "\2\0\1\20\2\0\1\20\30\0\2\70\27\0\2\20"
- + "\3\0\13\20\1\0\5\20\1\0\1\20\1\0\1\20"
- + "\1\0\2\20\1\72\2\0\1\20\2\0\1\20\2\0"
- + "\1\20\30\0\1\73\1\74\37\0\3\75\3\0\1\75"
- + "\4\0\2\75\2\0\1\75\1\0\1\75\2\0\1\75"
- + "\3\0\1\75\23\0\3\76\3\0\1\76\4\0\2\76"
- + "\2\0\1\76\1\0\1\76\2\0\1\76\3\0\1\76"
- + "\13\0\2\20\3\0\2\20\1\77\10\20\1\0\5\20"
- + "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"
- + "\2\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\100"
- + "\2\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"
- + "\2\20\3\0\11\20\1\101\1\20\1\0\5\20\1\0"
- + "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"
- + "\1\20\2\0\1\20\5\0\2\20\3\0\6\20\1\102"
- + "\4\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"
- + "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"
- + "\2\20\3\0\6\20\1\103\4\20\1\0\5\20\1\0"
- + "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"
- + "\1\20\2\0\1\20\22\0\1\104\36\0\2\20\3\0"
- + "\4\20\1\105\6\20\1\0\5\20\1\0\1\20\1\0"
- + "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"
- + "\1\20\25\0\1\106\2\0\2\107\3\0\1\106\33\0"
- + "\1\66\12\0\2\70\2\0\1\66\24\0\2\20\3\0"
- + "\13\20\1\0\4\20\1\110\1\0\1\20\1\0\1\20"
- + "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"
- + "\5\0\2\20\3\0\10\20\1\111\2\20\1\0\5\20"
- + "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"
- + "\2\0\1\20\2\0\1\20\11\0\1\112\53\0\1\112"
- + "\16\0\2\74\37\0\3\113\3\0\1\113\4\0\2\113"
- + "\2\0\1\113\1\0\1\113\2\0\1\113\3\0\1\113"
- + "\23\0\3\114\3\0\1\114\4\0\2\114\2\0\1\114"
- + "\1\0\1\114\2\0\1\114\3\0\1\114\13\0\2\20"
- + "\3\0\3\20\1\115\7\20\1\0\5\20\1\0\1\20"
- + "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"
- + "\2\0\1\20\5\0\2\20\3\0\12\20\1\116\1\0"
- + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"
- + "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"
- + "\3\20\1\117\7\20\1\0\5\20\1\0\1\20\1\0"
- + "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"
- + "\1\20\5\0\2\20\3\0\7\20\1\120\3\20\1\0"
- + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"
- + "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"
- + "\6\20\1\121\4\20\1\0\5\20\1\0\1\20\1\0"
- + "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"
- + "\1\20\16\0\1\122\42\0\2\20\3\0\12\20\1\123"
- + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"
- + "\2\0\1\20\2\0\1\20\2\0\1\20\30\0\2\107"
- + "\27\0\2\20\3\0\7\20\1\124\3\20\1\0\5\20"
- + "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"
- + "\2\0\1\20\2\0\1\20\5\0\2\20\3\0\7\20"
- + "\1\125\3\20\1\0\5\20\1\0\1\20\1\0\1\20"
- + "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"
- + "\5\0\2\20\3\0\4\20\1\126\6\20\1\0\5\20"
- + "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"
- + "\2\0\1\20\2\0\1\20\5\0\2\20\3\0\3\20"
- + "\1\127\7\20\1\0\5\20\1\0\1\20\1\0\1\20"
- + "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"
- + "\24\0\1\130\34\0\2\20\3\0\10\20\1\131\2\20"
- + "\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"
- + "\2\0\1\20\2\0\1\20\2\0\1\20\5\0\2\20"
- + "\3\0\1\132\12\20\1\0\5\20\1\0\1\20\1\0"
- + "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"
- + "\1\20\5\0\2\20\3\0\1\133\12\20\1\0\5\20"
- + "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"
- + "\2\0\1\20\2\0\1\20\5\0\2\20\3\0\12\20"
- + "\1\134\1\0\5\20\1\0\1\20\1\0\1\20\1\0"
- + "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\22\0"
- + "\1\135\36\0\2\20\3\0\12\20\1\136\1\0\5\20"
- + "\1\0\1\20\1\0\1\20\1\0\3\20\2\0\1\20"
- + "\2\0\1\20\2\0\1\20\5\0\2\20\3\0\5\20"
- + "\1\137\5\20\1\0\5\20\1\0\1\20\1\0\1\20"
- + "\1\0\3\20\2\0\1\20\2\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\2\0\1\20"
- + "\2\0\1\20\2\0\1\20\5\0\2\20\3\0\10\20"
- + "\1\141\2\20\1\0\5\20\1\0\1\20\1\0\1\20"
- + "\1\0\3\20\2\0\1\20\2\0\1\20\2\0\1\20"
- + "\24\0\1\142\34\0\2\20\3\0\1\143\12\20\1\0"
- + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"
- + "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"
- + "\10\20\1\144\2\20\1\0\5\20\1\0\1\20\1\0"
- + "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"
- + "\1\20\5\0\2\20\3\0\1\20\1\145\11\20\1\0"
- + "\5\20\1\0\1\20\1\0\1\20\1\0\3\20\2\0"
- + "\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"
- + "\3\20\1\146\7\20\1\0\5\20\1\0\1\20\1\0"
- + "\1\20\1\0\3\20\2\0\1\20\2\0\1\20\2\0"
- + "\1\20\12\0\1\147\46\0\2\20\3\0\13\20\1\0"
- + "\1\20\1\110\3\20\1\0\1\20\1\0\1\20\1\0"
- + "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"
- + "\2\20\3\0\1\150\12\20\1\0\5\20\1\0\1\20"
- + "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"
- + "\2\0\1\20\5\0\2\20\3\0\13\20\1\0\2\20"
- + "\1\151\1\152\1\20\1\0\1\20\1\0\1\20\1\0"
- + "\3\20\2\0\1\20\2\0\1\20\2\0\1\20\5\0"
- + "\2\20\3\0\11\20\1\153\1\20\1\0\5\20\1\0"
- + "\1\20\1\0\1\20\1\0\3\20\2\0\1\20\2\0"
- + "\1\20\2\0\1\20\27\0\1\154\31\0\2\20\3\0"
- + "\13\20\1\0\2\20\1\155\1\156\1\20\1\0\1\20"
- + "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"
- + "\2\0\1\20\5\0\2\20\3\0\13\20\1\0\2\20"
- + "\2\152\1\20\1\0\1\20\1\0\1\20\1\0\3\20"
- + "\2\0\1\20\2\0\1\20\2\0\1\20\5\0\2\20"
- + "\3\0\13\20\1\0\2\20\2\156\1\20\1\0\1\20"
- + "\1\0\1\20\1\0\3\20\2\0\1\20\2\0\1\20"
- + "\2\0\1\20";
+ /** the current state of the DFA */
+ private int zzState;
- private static int[] zzUnpackTrans() {
- int[] result = new int[3388];
- 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 */
- 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;
- }
+ /** 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;
- /* 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;
+ /** the current text position in the buffer */
+ private int zzCurrentPos;
- /* 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"
- };
+ /** startRead marks the beginning of the yytext() string in the buffer */
+ private int zzStartRead;
- /**
- * ZZ_ATTRIBUTE[aState] contains the attributes of state aState
- */
- private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
+ /** endRead marks the last character in the buffer, that has been read
+ from input */
+ private int zzEndRead;
- private static final String ZZ_ATTRIBUTE_PACKED_0
- = "\3\0\1\11\2\1\2\11\1\1\1\11\1\1\1\11"
- + "\1\1\1\11\2\1\1\11\14\1\4\11\1\1\2\11"
- + "\1\1\7\11\6\1\2\0\1\1\1\0\4\1\4\0"
- + "\5\1\1\0\1\1\1\0\3\1\1\11\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";
+ /** number of newlines encountered up to the start of the matched text */
+ private int yyline;
- private static int[] zzUnpackAttribute() {
- int[] result = new int[110];
- int offset = 0;
- offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
- return result;
- }
+ /** the number of characters up to the start of the matched text */
+ private int yychar;
- 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 number of characters from the last newline up to the start of the
+ * matched text
+ */
+ private int yycolumn;
- /**
- * the input device
- */
- private java.io.Reader zzReader;
+ /**
+ * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+ */
+ private boolean zzAtBOL = true;
- /**
- * the current state of the DFA
- */
- private int zzState;
+ /** zzAtEOF == true <=> the scanner is at the EOF */
+ private boolean zzAtEOF;
- /**
- * the current lexical state
- */
- private int zzLexicalState = YYINITIAL;
+ /** 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;
- /**
- * this buffer contains the current text to be matched and is the source of
- * the yytext() string
- */
- private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
+ /* user code: */
- /**
- * 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();
private int repeatNum = 1;
@@ -672,10 +647,9 @@ public final class FlasmLexer {
}
ASMParsedSymbol last;
-
- public ASMParsedSymbol lex() throws java.io.IOException, ActionParseException {
+ public ASMParsedSymbol lex() throws java.io.IOException, ActionParseException{
ASMParsedSymbol ret = null;
- if (!pushedBack.isEmpty()) {
+ if (!pushedBack.isEmpty()){
ret = last = pushedBack.pop();
} else {
ret = last = yylex();
@@ -683,590 +657,531 @@ public final class FlasmLexer {
return ret;
}
- /**
- * 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 < 3984) {
+ 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 */
- int j = 0;
- /* index in unpacked array */
- while (i < 3802) {
- int count = packed.charAt(i++);
- char value = packed.charAt(i++);
- do {
- map[j++] = value;
- } while (--count > 0);
+ /* 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;
+ }
+
+ /* 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;
+ }
+
+ 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.
- * @throws 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 */
- if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
- --zzEndRead;
- zzFinalHighSurrogate = 1;
- }
- }
- return false;
- }
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ }
- // 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
- * @throws 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 34:
- break;
- case 2: {
- yybegin(PARAMETERS);
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext());
- }
- case 35:
- break;
- case 3: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_BLOCK_END);
- }
- case 36:
- break;
- case 4: {
- for (int r = 0; r < repeatNum; r++) {
- string.append(yytext());
- }
- repeatNum = 1;
- }
- case 37:
- break;
- case 5: {
- repeatNum = 1;
- throw new ActionParseException("Unterminated string at end of line", yyline + 1);
- }
- case 38:
- break;
- case 6: {
- yybegin(PARAMETERS);
- repeatNum = 1;
- // length also includes the trailing quote
- return new ASMParsedSymbol(stringStartPos, ASMParsedSymbol.TYPE_STRING, string.toString());
- }
- case 39:
- break;
- case 7: {
- yybegin(YYINITIAL);
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_EOL);
- }
- case 40:
- break;
- case 8: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1));
- }
- case 41:
- break;
- case 9: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_IDENTIFIER, yytext());
- }
- case 42:
- break;
- case 10: {
- yybegin(YYINITIAL);
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_BLOCK_START);
- }
- case 43:
- break;
- case 11: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext())));
- }
- case 44:
- break;
- case 12: {
- stringStartPos = yychar();
- yybegin(STRING);
- string.setLength(0);
- }
- case 45:
- break;
- case 13: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_COMMA);
- }
- case 46:
- break;
- case 14: {
- String s = yytext();
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1));
- }
- case 47:
- break;
- case 15: {
- repeatNum = 1;
- throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1);
- }
- case 48:
- break;
- case 16: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\t');
- }
- repeatNum = 1;
- }
- case 49:
- break;
- case 17: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\r');
- }
- repeatNum = 1;
- }
- case 50:
- break;
- case 18: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\f');
- }
- repeatNum = 1;
- }
- case 51:
- break;
- case 19: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\n');
- }
- repeatNum = 1;
- }
- case 52:
- break;
- case 20: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\\');
- }
- repeatNum = 1;
- }
- case 53:
- break;
- case 21: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\"');
- }
- repeatNum = 1;
- }
- case 54:
- break;
- case 22: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\b');
- }
- repeatNum = 1;
- }
- case 55:
- break;
- case 23: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\u00A7');
- }
- repeatNum = 1;
- }
- case 56:
- break;
- case 24: {
- for (int r = 0; r < repeatNum; r++) {
- string.append('\'');
- }
- repeatNum = 1;
- }
- case 57:
- break;
- case 25: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext())));
- }
- case 58:
- break;
- case 26: {
- repeatNum = Integer.parseInt(yytext().substring(2, yytext().length() - 1));
- }
- case 59:
- break;
- case 27: {
- char val = (char) Integer.parseInt(yytext().substring(2), 16);
- for (int r = 0; r < repeatNum; r++) {
- string.append(val);
- }
- repeatNum = 1;
- }
- case 60:
- break;
- case 28: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_BOOLEAN, Boolean.TRUE);
- }
- case 61:
- break;
- case 29: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_NULL, Null.INSTANCE);
- }
- case 62:
- break;
- case 30: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_BOOLEAN, Boolean.FALSE);
- }
- case 63:
- break;
- case 31: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8))));
- }
- case 64:
- break;
- case 32: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE);
- }
- case 65:
- break;
- case 33: {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8))));
- }
- case 66:
- break;
- default:
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
- {
- return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_EOF);
- }
- } else {
- zzScanError(ZZ_NO_MATCH);
- }
- }
}
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 1:
+ {
+ }
+ case 35: break;
+ case 2:
+ { yybegin(PARAMETERS);
+ return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext());
+ }
+ case 36: break;
+ case 3:
+ { return new ASMParsedSymbol(yychar(), ASMParsedSymbol.TYPE_BLOCK_END);
+ }
+ case 37: break;
+ case 4:
+ { for(int r=0;r
- * 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];
- }
- }
+ /**
+ * 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);
- /**
- * Returns the current lexical state.
- */
- public final int yystate() {
- return zzLexicalState;
- }
+ zzMarkedPos -= number;
+ }
- /**
- * 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);
- }
+ /**
+ * 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 Token yylex() throws java.io.IOException {
+ int zzInput;
+ int zzAction;
- /**
- * 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];
- }
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char [] zzBufferL = zzBuffer;
+ char [] zzCMapL = ZZ_CMAP;
- /**
- * Returns the length of the matched text region.
- */
- public final int yylength() {
- return zzMarkedPos - zzStartRead;
- }
+ int [] zzTransL = ZZ_TRANS;
+ int [] zzRowMapL = ZZ_ROWMAP;
+ int [] zzAttrL = ZZ_ATTRIBUTE;
- /**
- * 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];
- }
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
- throw new Error(message);
- }
+ yychar+= zzMarkedPosL-zzStartRead;
- /**
- * 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);
- }
+ zzAction = -1;
- zzMarkedPos -= number;
- }
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
- /**
- * 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
- * @throws java.io.IOException if any I/O-Error occurs
- */
- public Token yylex() throws java.io.IOException {
- int zzInput;
- int zzAction;
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ }
- // 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;
-
- zzAction = -1;
-
- zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
- zzState = ZZ_LEXSTATE[zzLexicalState];
-
- // set up zzAction for empty match case:
- int zzAttributes = zzAttrL[zzState];
- if ((zzAttributes & 1) == 1) {
- zzAction = zzState;
+
+ 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;
}
-
- 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;
- }
- }
-
- }
+ 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;
- // store back cached position
- zzMarkedPos = zzMarkedPosL;
+ zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ( (zzAttributes & 8) == 8 ) break zzForAction;
+ }
- switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
- case 1: {
- }
- case 17:
- break;
- case 2: {
- return token(TokenType.NEWLINE);
- }
- case 18:
- break;
- case 3: {
- return token(TokenType.COMMENT);
- }
- case 19:
- break;
- case 4: {
- return token(TokenType.WHITESPACE);
- }
- case 20:
- break;
- case 5: {
- yybegin(PARAMETERS);
- return token(TokenType.KEYWORD);
- }
- case 21:
- break;
- case 6: {
- tokenLength += yylength();
- }
- case 22:
- break;
- case 7: {
- yybegin(YYINITIAL);
- return token(TokenType.ERROR, tokenStart, tokenLength);
- }
- case 23:
- break;
- case 8: {
- yybegin(PARAMETERS);
- // length also includes the trailing quote
- return token(TokenType.STRING, tokenStart, tokenLength + 1);
- }
- case 24:
- break;
- case 9: {
- yybegin(YYINITIAL);
- return token(TokenType.NEWLINE);
- }
- case 25:
- break;
- case 10: {
- return token(TokenType.IDENTIFIER);
- }
- case 26:
- break;
- case 11: {
- return token(TokenType.NUMBER);
- }
- case 27:
- break;
- case 12: {
- yybegin(STRING);
- tokenStart = yychar;
- tokenLength = 1;
- }
- case 28:
- break;
- case 13: {
- return token(TokenType.IDENTIFIER, yychar, yylength());
- }
- case 29:
- break;
- case 14: {
- tokenLength += 2;
- }
- case 30:
- break;
- case 15: {
- return token(TokenType.KEYWORD);
- }
- case 31:
- break;
- case 16: {
- return token(TokenType.KEYWORD2);
- }
- case 32:
- break;
- default:
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
- {
- return null;
- }
- } else {
- zzScanError(ZZ_NO_MATCH);
- }
- }
}
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 1:
+ {
+ }
+ case 17: break;
+ case 2:
+ { return token(TokenType.NEWLINE);
+ }
+ case 18: break;
+ case 3:
+ { return token(TokenType.COMMENT);
+ }
+ case 19: break;
+ case 4:
+ { return token(TokenType.WHITESPACE);
+ }
+ case 20: break;
+ case 5:
+ { yybegin(PARAMETERS);
+ return token(TokenType.KEYWORD);
+ }
+ case 21: break;
+ case 6:
+ { tokenLength += yylength();
+ }
+ case 22: break;
+ case 7:
+ { yybegin(YYINITIAL);
+ return token(TokenType.ERROR,tokenStart, tokenLength);
+ }
+ case 23: break;
+ case 8:
+ { yybegin(PARAMETERS);
+ // length also includes the trailing quote
+ return token(TokenType.STRING, tokenStart, tokenLength + 1);
+ }
+ case 24: break;
+ case 9:
+ { yybegin(YYINITIAL); return token(TokenType.NEWLINE);
+ }
+ case 25: break;
+ case 10:
+ { return token(TokenType.IDENTIFIER);
+ }
+ case 26: break;
+ case 11:
+ { return token(TokenType.NUMBER);
+ }
+ case 27: break;
+ case 12:
+ { yybegin(STRING);
+ tokenStart = yychar;
+ tokenLength = 1;
+ }
+ case 28: break;
+ case 13:
+ { return token(TokenType.IDENTIFIER,yychar,yylength());
+ }
+ case 29: break;
+ case 14:
+ { tokenLength += 2;
+ }
+ case 30: break;
+ case 15:
+ { return token(TokenType.KEYWORD);
+ }
+ case 31: break;
+ case 16:
+ { return token(TokenType.KEYWORD2);
+ }
+ case 32: break;
+ default:
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ {
+ return null;
+ }
+ }
+ 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 ce41fead3..851e32a53 100644
--- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex
+++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex
@@ -126,7 +126,8 @@ Constant= constant{NumberLiteral}
/* numeric literals */
{NumberLiteral} { return token(TokenType.NUMBER); }
- {FloatLiteral} { return token(TokenType.NUMBER); }
+ {FloatLiteral} "f" { return token(TokenType.NUMBER); }
+ {FloatLiteral} { return token(TokenType.NUMBER); }
{LineTerminator} {yybegin(YYINITIAL); }
{Comment} {return token(TokenType.COMMENT);}
{StartOfBlock} { }
aState
+ */
+ private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private static final String ZZ_ATTRIBUTE_PACKED_0 =
+ "\3\0\1\11\1\1\1\11\3\1\1\11\2\1\1\11"+
+ "\1\1\1\11\1\1\1\11\12\1\3\11\7\1\1\0"+
+ "\1\11\1\1\1\0\1\1\1\11\6\1\1\0\21\1"+
+ "\1\0\2\1";
+
+ private static int [] zzUnpackAttribute() {
+ int [] result = new int[70];
+ 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
- = "\1\4\1\5\1\6\1\7\1\10\1\11\3\4\1\12"
- + "\13\11\4\4\1\11\3\4\3\11\3\4\1\10\1\4"
- + "\1\13\1\14\1\15\31\13\1\16\3\13\1\17\4\13"
- + "\1\4\1\20\1\21\1\7\1\10\1\22\2\4\1\12"
- + "\1\4\1\23\1\24\1\25\1\22\1\26\3\22\1\27"
- + "\2\22\1\30\1\31\1\30\1\32\1\22\1\4\1\30"
- + "\1\4\1\22\1\33\1\22\1\34\1\30\1\4\1\10"
- + "\1\4\47\0\1\6\42\0\1\7\2\0\42\7\4\0"
- + "\1\10\36\0\1\10\6\0\2\11\1\35\2\0\14\11"
- + "\1\0\1\11\1\0\1\11\1\0\1\11\1\0\3\11"
- + "\1\0\1\11\2\0\1\11\1\13\2\0\31\13\1\0"
- + "\3\13\1\0\4\13\2\0\1\15\42\0\1\36\2\0"
- + "\22\36\1\37\5\36\1\40\5\36\1\37\5\0\1\21"
- + "\47\0\2\22\3\0\14\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\22\1\0\3\22\1\0\1\22\2\0\1\22"
- + "\5\0\2\22\3\0\1\22\1\41\12\22\1\0\1\22"
- + "\1\0\1\22\1\0\1\22\1\0\3\22\1\0\1\22"
- + "\2\0\1\22\5\0\2\22\3\0\3\22\1\42\10\22"
- + "\1\0\1\22\1\0\1\22\1\0\1\22\1\0\3\22"
- + "\1\0\1\22\2\0\1\22\5\0\2\22\3\0\10\22"
- + "\1\43\3\22\1\0\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\3\22\1\0\1\22\2\0\1\22\5\0\2\22"
- + "\3\0\5\22\1\44\6\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\22\1\0\3\22\1\0\1\22\2\0\1\22"
- + "\5\0\2\22\3\0\2\22\1\45\11\22\1\0\1\22"
- + "\1\0\1\22\1\0\1\22\1\0\3\22\1\0\1\22"
- + "\2\0\1\22\15\0\1\46\7\0\1\30\1\0\1\30"
- + "\1\47\1\46\1\0\1\30\5\0\1\30\30\0\1\30"
- + "\1\0\1\30\1\50\2\0\1\30\5\0\1\30\30\0"
- + "\1\47\1\0\1\47\3\0\1\47\5\0\1\47\10\0"
- + "\2\22\3\0\14\22\1\0\1\22\1\0\1\22\1\0"
- + "\1\22\1\0\2\22\1\51\1\0\1\22\2\0\1\22"
- + "\25\0\1\40\5\0\1\40\5\0\1\40\30\0\1\52"
- + "\5\0\1\52\5\0\1\52\10\0\2\22\3\0\2\22"
- + "\1\53\11\22\1\0\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\3\22\1\0\1\22\2\0\1\22\5\0\2\22"
- + "\3\0\14\22\1\0\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\54\2\22\1\0\1\22\2\0\1\22\5\0"
- + "\2\22\3\0\11\22\1\55\2\22\1\0\1\22\1\0"
- + "\1\22\1\0\1\22\1\0\3\22\1\0\1\22\2\0"
- + "\1\22\5\0\2\22\3\0\6\22\1\56\5\22\1\0"
- + "\1\22\1\0\1\22\1\0\1\22\1\0\3\22\1\0"
- + "\1\22\2\0\1\22\5\0\2\22\3\0\6\22\1\57"
- + "\5\22\1\0\1\22\1\0\1\22\1\0\1\22\1\0"
- + "\3\22\1\0\1\22\2\0\1\22\25\0\1\60\1\61"
- + "\1\60\2\0\1\61\1\60\5\0\1\60\20\0\1\46"
- + "\7\0\1\47\1\0\1\47\1\0\1\46\1\0\1\47"
- + "\5\0\1\47\10\0\2\22\3\0\10\22\1\62\3\22"
- + "\1\0\1\22\1\0\1\22\1\0\1\22\1\0\3\22"
- + "\1\0\1\22\2\0\1\22\5\0\2\22\3\0\3\22"
- + "\1\63\10\22\1\0\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\3\22\1\0\1\22\2\0\1\22\5\0\2\22"
- + "\3\0\12\22\1\64\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\22\1\0\3\22\1\0\1\22\2\0\1\22"
- + "\5\0\2\22\3\0\3\22\1\65\10\22\1\0\1\22"
- + "\1\0\1\22\1\0\1\22\1\0\3\22\1\0\1\22"
- + "\2\0\1\22\5\0\2\22\3\0\7\22\1\53\4\22"
- + "\1\0\1\22\1\0\1\22\1\0\1\22\1\0\3\22"
- + "\1\0\1\22\2\0\1\22\5\0\2\22\3\0\6\22"
- + "\1\63\5\22\1\0\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\3\22\1\0\1\22\2\0\1\22\25\0\1\60"
- + "\1\0\1\60\3\0\1\60\5\0\1\60\10\0\2\22"
- + "\3\0\7\22\1\66\4\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\22\1\0\3\22\1\0\1\22\2\0\1\22"
- + "\5\0\2\22\3\0\7\22\1\67\4\22\1\0\1\22"
- + "\1\0\1\22\1\0\1\22\1\0\3\22\1\0\1\22"
- + "\2\0\1\22\5\0\2\22\3\0\4\22\1\70\7\22"
- + "\1\0\1\22\1\0\1\22\1\0\1\22\1\0\3\22"
- + "\1\0\1\22\2\0\1\22\5\0\2\22\3\0\1\71"
- + "\13\22\1\0\1\22\1\0\1\22\1\0\1\22\1\0"
- + "\3\22\1\0\1\22\2\0\1\22\5\0\2\22\3\0"
- + "\1\72\13\22\1\0\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\3\22\1\0\1\22\2\0\1\22\5\0\2\22"
- + "\3\0\12\22\1\73\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\22\1\0\3\22\1\0\1\22\2\0\1\22"
- + "\5\0\2\22\3\0\5\22\1\74\6\22\1\0\1\22"
- + "\1\0\1\22\1\0\1\22\1\0\3\22\1\0\1\22"
- + "\2\0\1\22\5\0\2\22\3\0\3\22\1\75\10\22"
- + "\1\0\1\22\1\0\1\22\1\0\1\22\1\0\3\22"
- + "\1\0\1\22\2\0\1\22\5\0\2\22\3\0\10\22"
- + "\1\76\3\22\1\0\1\22\1\0\1\22\1\0\1\22"
- + "\1\0\3\22\1\0\1\22\2\0\1\22\5\0\2\22"
- + "\3\0\10\22\1\77\3\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\22\1\0\3\22\1\0\1\22\2\0\1\22"
- + "\5\0\2\22\3\0\1\22\1\100\12\22\1\0\1\22"
- + "\1\0\1\22\1\0\1\22\1\0\3\22\1\0\1\22"
- + "\2\0\1\22\5\0\2\22\3\0\3\22\1\101\10\22"
- + "\1\0\1\22\1\0\1\22\1\0\1\22\1\0\3\22"
- + "\1\0\1\22\2\0\1\22\5\0\2\22\3\0\1\100"
- + "\13\22\1\0\1\22\1\0\1\22\1\0\1\22\1\0"
- + "\3\22\1\0\1\22\2\0\1\22\5\0\2\22\3\0"
- + "\13\22\1\102\1\103\1\104\1\0\1\22\1\0\1\104"
- + "\1\0\3\22\1\0\1\104\2\0\1\22\5\0\2\22"
- + "\3\0\11\22\1\63\2\22\1\0\1\22\1\0\1\22"
- + "\1\0\1\22\1\0\3\22\1\0\1\22\2\0\1\22"
- + "\27\0\1\105\3\0\1\105\5\0\1\105\10\0\2\22"
- + "\3\0\13\22\1\104\1\0\1\104\1\0\1\22\1\0"
- + "\1\104\1\0\3\22\1\0\1\104\2\0\1\22\25\0"
- + "\1\105\1\0\1\105\3\0\1\105\5\0\1\105\3\0";
+ /** the current state of the DFA */
+ private int zzState;
- private static int[] zzUnpackTrans() {
- int[] result = new int[2072];
- 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 */
- 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;
- }
+ /** 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;
- /* 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;
+ /** the current text position in the buffer */
+ private int zzCurrentPos;
- /* 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"
- };
+ /** startRead marks the beginning of the yytext() string in the buffer */
+ private int zzStartRead;
- /**
- * ZZ_ATTRIBUTE[aState] contains the attributes of state aState
- */
- private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
+ /** endRead marks the last character in the buffer, that has been read
+ from input */
+ private int zzEndRead;
- private static final String ZZ_ATTRIBUTE_PACKED_0
- = "\3\0\1\11\1\1\1\11\3\1\1\11\2\1\1\11"
- + "\1\1\1\11\1\1\1\11\12\1\3\11\7\1\1\0"
- + "\1\1\1\0\1\1\1\11\6\1\1\0\21\1\1\0"
- + "\2\1";
+ /** number of newlines encountered up to the start of the matched text */
+ private int yyline;
- private static int[] zzUnpackAttribute() {
- int[] result = new int[69];
- int offset = 0;
- offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
- return result;
- }
+ /** the number of characters up to the start of the matched text */
+ private int yychar;
- 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 number of characters from the last newline up to the start of the
+ * matched text
+ */
+ private int yycolumn;
- /**
- * the input device
- */
- private java.io.Reader zzReader;
+ /**
+ * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+ */
+ private boolean zzAtBOL = true;
- /**
- * the current state of the DFA
- */
- private int zzState;
+ /** zzAtEOF == true <=> the scanner is at the EOF */
+ private boolean zzAtEOF;
- /**
- * the current lexical state
- */
- private int zzLexicalState = YYINITIAL;
+ /** 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;
- /**
- * this buffer contains the current text to be matched and is the source of
- * the yytext() string
- */
- private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
+ /* user code: */
- /**
- * the textposition at the last accepting state
- */
- private int zzMarkedPos;
+ StringBuilder string = new StringBuilder();
- /**
- * 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();
/**
* Create an empty lexer, yyrset will be called later to reset and assign
@@ -586,408 +568,401 @@ public final class FlasmLexer extends AbstractLexer {
return yychar;
}
- /**
- * 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 < 3964) {
+ 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 */
- int j = 0;
- /* index in unpacked array */
- while (i < 3662) {
- int count = packed.charAt(i++);
- char value = packed.charAt(i++);
- do {
- map[j++] = value;
- } while (--count > 0);
+ /* 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;
+ }
+
+ /* 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;
+ }
+
+ 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.
- * @throws 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();
+ }
- /* 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;
- }
- /* 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;
- }
+ /**
+ * 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];
+ }
- if (totalRead > 0) {
- zzEndRead += totalRead;
- if (totalRead == requested) {
- /* possibly more input available */
- if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
- --zzEndRead;
- zzFinalHighSurrogate = 1;
- }
- }
- return false;
- }
- // totalRead = 0: End of stream
- return true;
+ /**
+ * 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];
}
- /**
- * Closes the input stream.
- */
- public final void yyclose() throws java.io.IOException {
- zzAtEOF = true;
- /* indicate end of file */
- zzEndRead = zzStartRead;
- /* invalidate buffer */
+ throw new Error(message);
+ }
- if (zzReader != null) {
- zzReader.close();
- }
- }
- /**
- * Resets the scanner to read from a new input stream. Does not close the
- * old reader.
- *