Added #1496 repeat escape sequence \{xx}C to avoid long same char strings/names

This commit is contained in:
Jindra Petřík
2021-11-19 12:31:02 +01:00
parent b68b7ff2f0
commit bbb3ed8c72
21 changed files with 4224 additions and 3937 deletions

View File

@@ -12,10 +12,12 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
* License along with this library.
*/
package com.jpexs.decompiler.flash;
import com.jpexs.decompiler.flash.abc.RenameType;
import com.jpexs.decompiler.flash.configuration.Configuration;
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
import com.jpexs.decompiler.flash.tags.DefineSpriteTag;
import com.jpexs.decompiler.flash.tags.Tag;
@@ -419,8 +421,6 @@ public class IdentifiersDeobfuscation {
writer.append("\\n");
} else if (c == '\r') {
writer.append("\\r");
writer.append("\\r");
} else if (c == '\t') {
} else if (c == '\b') {
writer.append("\\b");
} else if (c == '\t') {
@@ -434,6 +434,18 @@ public class IdentifiersDeobfuscation {
} else if (c < 32) {
writer.append("\\x").append(Helper.byteToHex((byte) c));
} else {
int num = 1;
for (int j = i + 1; j < s.length(); j++) {
if (s.charAt(j) == c) {
num++;
} else {
break;
}
}
if (num > Configuration.limitSameChars.get()) {
writer.append("\\{").append(num).append("}");
i += num - 1;
}
writer.append(c);
}
}
@@ -453,8 +465,6 @@ public class IdentifiersDeobfuscation {
ret.append("\\t");
} else if (c == '\b') {
ret.append("\\b");
ret.append("\\b");
} else if (c == '\t') {
} else if (c == '\f') {
ret.append("\\f");
} else if (c == '\\') {
@@ -464,6 +474,18 @@ public class IdentifiersDeobfuscation {
} else if (c < 32) {
ret.append("\\x").append(Helper.byteToHex((byte) c));
} else {
int num = 1;
for (int j = i + 1; j < s.length(); j++) {
if (s.charAt(j) == c) {
num++;
} else {
break;
}
}
if (num > Configuration.limitSameChars.get()) {
ret.append("\\{").append(num).append("}");
i += num - 1;
}
ret.append(c);
}
}

View File

@@ -282,7 +282,7 @@ public class AVM2Instruction implements Cloneable, GraphSourceItem {
s.append(" null");
} else {
s.append(" \"");
s.append(Helper.escapeActionScriptString(str));
s.append(Helper.escapePCodeString(str));
s.append("\"");
}
break;

View File

@@ -263,7 +263,7 @@ public class Multiname {
break;
}
}
return constants.getNamespace(index).getKindStr() + "(" + (name == null ? "null" : "\"" + Helper.escapeActionScriptString(name) + "\"") + (sub > 0 ? ",\"" + sub + "\"" : "") + ")";
return constants.getNamespace(index).getKindStr() + "(" + (name == null ? "null" : "\"" + Helper.escapePCodeString(name) + "\"") + (sub > 0 ? ",\"" + sub + "\"" : "") + ")";
}
private static String namespaceSetToString(AVM2ConstantPool constants, int index) {
@@ -295,16 +295,16 @@ public class Multiname {
switch (kind) {
case QNAME:
case QNAMEA:
return getKindStr() + "(" + namespaceToString(constants, namespace_index) + "," + (name_index == 0 ? "null" : "\"" + Helper.escapeActionScriptString(constants.getString(name_index)) + "\"") + ")";
return getKindStr() + "(" + namespaceToString(constants, namespace_index) + "," + (name_index == 0 ? "null" : "\"" + Helper.escapePCodeString(constants.getString(name_index)) + "\"") + ")";
case RTQNAME:
case RTQNAMEA:
return getKindStr() + "(" + (name_index == 0 ? "null" : "\"" + Helper.escapeActionScriptString(constants.getString(name_index))) + "\"" + ")";
return getKindStr() + "(" + (name_index == 0 ? "null" : "\"" + Helper.escapePCodeString(constants.getString(name_index))) + "\"" + ")";
case RTQNAMEL:
case RTQNAMELA:
return getKindStr() + "()";
case MULTINAME:
case MULTINAMEA:
return getKindStr() + "(" + (name_index == 0 ? "null" : "\"" + Helper.escapeActionScriptString(constants.getString(name_index)) + "\"") + "," + namespaceSetToString(constants, namespace_set_index) + ")";
return getKindStr() + "(" + (name_index == 0 ? "null" : "\"" + Helper.escapePCodeString(constants.getString(name_index)) + "\"") + "," + namespaceSetToString(constants, namespace_set_index) + ")";
case MULTINAMEL:
case MULTINAMELA:
return getKindStr() + "(" + namespaceSetToString(constants, namespace_set_index) + ")";

View File

@@ -185,7 +185,7 @@ public class ValueKind {
ret = "Decimal(" + constants.getDecimal(value_index) + ")";
break;
case CONSTANT_Utf8:
ret = "Utf8(\"" + Helper.escapeActionScriptString(constants.getString(value_index)) + "\")";
ret = "Utf8(\"" + Helper.escapePCodeString(constants.getString(value_index)) + "\")";
break;
case CONSTANT_True:
ret = "True()";

View File

@@ -405,7 +405,7 @@ public abstract class Trait implements Cloneable, Serializable {
for (int m : metadata) {
writer.append("metadata");
writer.append("\"");
writer.append(Helper.escapeActionScriptString(abc.constants.getString(abc.metadata_info.get(m).name_index)));
writer.append(Helper.escapePCodeString(abc.constants.getString(abc.metadata_info.get(m).name_index)));
writer.append("\"");
if (Configuration.indentAs3PCode.get()) {
writer.indent();
@@ -418,13 +418,13 @@ public abstract class Trait implements Cloneable, Serializable {
writer.append("item ");
writer.append("\"");
writer.append(Helper.escapeActionScriptString(abc.constants.getString(key)));
writer.append(Helper.escapePCodeString(abc.constants.getString(key)));
writer.append("\"");
writer.append(" ");
writer.append("\"");
writer.append(Helper.escapeActionScriptString(abc.constants.getString(val)));
writer.append(Helper.escapePCodeString(abc.constants.getString(val)));
writer.append("\"");
writer.newLine();
}

View File

@@ -1,5 +1,7 @@
/* The following code was generated by JFlex 1.6.0 */
/*
* Copyright (C) 2010-2021 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
@@ -12,7 +14,9 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
* 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;
@@ -54,147 +58,189 @@ public final class FlasmLexer {
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
private static final String ZZ_CMAP_PACKED =
"\11\6\1\4\1\2\1\47\1\50\1\1\16\6\4\0\1\4\1\0"+
"\11\6\1\4\1\2\1\50\1\51\1\1\16\6\4\0\1\4\1\0"+
"\1\43\1\0\1\5\2\0\1\46\3\0\1\35\1\0\1\25\1\33"+
"\1\0\1\30\11\31\1\7\1\3\5\0\4\36\1\34\1\36\2\5"+
"\1\26\4\5\1\32\14\5\1\0\1\37\2\0\1\5\1\0\1\17"+
"\1\44\1\41\1\23\1\15\1\16\1\40\1\5\1\24\2\5\1\20"+
"\1\44\1\41\1\23\1\15\1\16\1\40\1\5\1\24\2\5\1\20"+
"\1\5\1\22\1\42\2\5\1\13\1\21\1\12\1\14\2\5\1\46"+
"\1\27\1\5\1\10\1\0\1\11\1\0\6\6\1\51\32\6\2\0"+
"\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0"+
"\27\5\1\0\37\5\1\0\u01ca\5\4\0\14\5\16\0\5\5\7\0"+
"\1\5\1\0\1\5\21\0\160\6\5\5\1\0\2\5\2\0\4\5"+
"\10\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\123\5"+
"\1\0\213\5\1\0\5\6\2\0\236\5\11\0\46\5\2\0\1\5"+
"\7\0\47\5\7\0\1\5\1\0\55\6\1\0\1\6\1\0\2\6"+
"\1\0\2\6\1\0\1\6\10\0\33\5\5\0\3\5\15\0\5\6"+
"\6\0\1\5\4\0\13\6\5\0\53\5\37\6\4\0\2\5\1\6"+
"\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0\4\6"+
"\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6\36\5"+
"\33\6\2\0\131\5\13\6\1\5\16\0\12\6\41\5\11\6\2\5"+
"\4\0\1\5\5\0\26\5\4\6\1\5\11\6\1\5\3\6\1\5"+
"\5\6\22\0\31\5\3\6\104\0\1\5\1\0\13\5\67\0\33\6"+
"\1\0\4\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5\2\6"+
"\2\0\12\6\1\0\7\5\1\0\7\5\1\0\3\6\1\0\10\5"+
"\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5"+
"\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\1\5\10\0"+
"\1\6\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\7\0"+
"\1\5\5\0\3\6\1\0\6\5\4\0\2\5\2\0\26\5\1\0"+
"\7\5\1\0\2\5\1\0\2\5\1\0\2\5\2\0\1\6\1\0"+
"\5\6\4\0\2\6\2\0\3\6\3\0\1\6\7\0\4\5\1\0"+
"\1\5\7\0\14\6\3\5\1\6\13\0\3\6\1\0\11\5\1\0"+
"\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5\2\0"+
"\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5\17\0"+
"\1\5\1\22\1\42\2\5\1\13\1\21\1\12\1\14\2\5\1\47"+
"\1\27\1\5\1\10\1\0\1\11\1\0\6\6\1\52\32\6\2\0"+
"\4\5\1\0\1\45\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\65\0\25\5\1\0\22\5\13\0\61\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\3\0\1\5\7\6\1\0\3\6\1\0\4\6\7\0"+
"\2\6\1\0\3\5\5\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\7\0\1\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\15\5\1\0\4\5\3\6\13\0\22\5\3\6\13\0\22\5"+
"\2\6\14\0\15\5\1\0\3\5\1\0\2\6\14\0\64\5\40\6"+
"\3\0\1\5\3\0\2\5\1\6\2\0\12\6\41\0\4\6\1\0"+
"\12\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\2\6\77\0\5\6\57\5\21\6"+
"\7\5\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5"+
"\12\6\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5"+
"\12\6\44\5\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\72\6\1\0\5\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\50\1\50\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\40\5\20\0\15\6\4\0\1\6\3\0\14\6\21\0"+
"\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5\6\0"+
"\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5\2\0"+
"\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5\1\0"+
"\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5\1\0"+
"\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6\27\5"+
"\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5"+
"\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0\1\5"+
"\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5\4\0"+
"\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5\5\0"+
"\53\5\1\0\136\5\21\0\40\5\60\0\20\5\u0200\0\u19c0\5\100\0"+
"\u51fd\5\3\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5\12\6"+
"\2\5\24\0\57\5\1\6\4\0\12\6\1\0\37\5\2\6\120\5"+
"\2\6\45\0\11\5\2\0\147\5\2\0\65\5\2\0\11\5\52\0"+
"\15\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\234\0\u0137\5\11\0\26\5\12\0\10\5"+
"\230\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\137\0\25\5\33\0\27\5\11\0"+
"\3\6\65\5\17\6\37\0\12\6\17\0\4\6\55\5\13\6\2\0"+
"\1\6\17\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"+
"\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5"+
"\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\10\0\2\6"+
"\4\0\2\5\1\0\3\5\2\6\2\0\12\6\1\0\1\5\20\0"+
"\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5"+
"\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\14\5"+
"\4\0\5\6\3\0\3\6\1\0\4\6\2\0\1\5\6\0\1\6"+
"\16\0\12\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5"+
"\1\0\27\5\1\0\12\5\1\0\5\5\3\0\1\5\7\6\1\0"+
"\3\6\1\0\4\6\7\0\2\6\1\0\2\5\6\0\2\5\2\6"+
"\2\0\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5"+
"\1\0\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6"+
"\1\0\4\6\7\0\2\6\7\0\1\5\1\0\2\5\2\6\2\0"+
"\12\6\1\0\2\5\17\0\2\6\1\0\10\5\1\0\3\5\1\0"+
"\51\5\2\0\1\5\7\6\1\0\3\6\1\0\4\6\1\5\10\0"+
"\1\6\10\0\2\5\2\6\2\0\12\6\12\0\6\5\2\0\2\6"+
"\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5"+
"\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6"+
"\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6"+
"\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5"+
"\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5"+
"\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5"+
"\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\4\5"+
"\40\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6"+
"\1\0\1\6\4\0\2\6\10\5\1\0\44\5\4\0\24\6\1\0"+
"\2\6\5\5\13\6\1\0\44\6\11\0\1\6\71\0\53\5\24\6"+
"\1\5\12\6\6\0\6\5\4\6\4\5\3\6\1\5\3\6\2\5"+
"\7\6\3\5\4\6\15\5\14\6\1\5\17\6\2\0\46\5\1\0"+
"\1\5\5\0\1\5\2\0\53\5\1\0\u014d\5\1\0\4\5\2\0"+
"\7\5\1\0\1\5\1\0\4\5\2\0\51\5\1\0\4\5\2\0"+
"\41\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0"+
"\17\5\1\0\71\5\1\0\4\5\2\0\103\5\2\0\3\6\40\0"+
"\20\5\20\0\125\5\14\0\u026c\5\2\0\21\5\1\0\32\5\5\0"+
"\113\5\3\0\3\5\17\0\15\5\1\0\4\5\3\6\13\0\22\5"+
"\3\6\13\0\22\5\2\6\14\0\15\5\1\0\3\5\1\0\2\6"+
"\14\0\64\5\40\6\3\0\1\5\3\0\2\5\1\6\2\0\12\6"+
"\41\0\3\6\2\0\12\6\6\0\130\5\10\0\51\5\1\6\1\5"+
"\5\0\106\5\12\0\35\5\3\0\14\6\4\0\14\6\12\0\12\6"+
"\36\5\2\0\5\5\13\0\54\5\4\0\21\6\7\5\2\6\6\0"+
"\12\6\46\0\27\5\5\6\4\0\65\5\12\6\1\0\35\6\2\0"+
"\13\6\6\0\12\6\15\0\1\5\130\0\5\6\57\5\21\6\7\5"+
"\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5\12\6"+
"\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5\12\6"+
"\44\5\122\0\3\6\1\0\25\6\4\5\1\6\4\5\3\6\2\5"+
"\11\0\300\5\47\6\25\0\4\6\u0116\5\2\0\6\5\2\0\46\5"+
"\2\0\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5"+
"\1\0\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5"+
"\1\0\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5"+
"\1\0\7\5\16\0\5\6\30\0\1\47\1\47\5\6\20\0\2\5"+
"\23\0\1\5\13\0\5\6\5\0\6\6\1\0\1\5\15\0\1\5"+
"\20\0\15\5\3\0\33\5\25\0\15\6\4\0\1\6\3\0\14\6"+
"\21\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5"+
"\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5"+
"\2\0\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5"+
"\1\0\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5"+
"\1\0\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6"+
"\27\5\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0"+
"\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0"+
"\1\5\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5"+
"\4\0\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5"+
"\5\0\51\5\3\0\136\5\21\0\33\5\65\0\20\5\u0200\0\u19b6\5"+
"\112\0\u51cd\5\63\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5"+
"\12\6\2\5\24\0\57\5\1\6\4\0\12\6\1\0\31\5\7\0"+
"\1\6\120\5\2\6\45\0\11\5\2\0\147\5\2\0\4\5\1\0"+
"\4\5\14\0\13\5\115\0\12\5\1\6\3\5\1\6\4\5\1\6"+
"\27\5\5\6\20\0\1\5\7\0\64\5\14\0\2\6\62\5\21\6"+
"\13\0\12\6\6\0\22\6\6\5\3\0\1\5\4\0\12\6\34\5"+
"\10\6\2\0\27\5\15\6\14\0\35\5\3\0\4\6\57\5\16\6"+
"\16\0\1\5\12\6\46\0\51\5\16\6\11\0\3\5\1\6\10\5"+
"\2\6\2\0\12\6\6\0\27\5\3\0\1\5\1\6\4\0\60\5"+
"\1\6\1\5\3\6\2\5\2\6\5\5\2\6\1\5\1\6\1\5"+
"\30\0\3\5\2\0\13\5\5\6\2\0\3\5\2\6\12\0\6\5"+
"\2\0\6\5\2\0\6\5\11\0\7\5\1\0\7\5\221\0\43\5"+
"\10\6\1\0\2\6\2\0\12\6\6\0\u2ba4\5\14\0\27\5\4\0"+
"\61\5\u2104\0\u016e\5\2\0\152\5\46\0\7\5\14\0\5\5\5\0"+
"\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0\1\5\1\0"+
"\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0\100\5\2\0"+
"\66\5\50\0\15\5\3\0\20\6\20\0\7\6\14\0\2\5\30\0"+
"\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0\1\6\4\0"+
"\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0\32\5\13\0"+
"\131\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0\3\5\3\0"+
"\2\5\3\0\2\5\22\0\3\6\4\0\14\5\1\0\32\5\1\0"+
"\23\5\1\0\2\5\1\0\17\5\2\0\16\5\42\0\173\5\105\0"+
"\65\5\210\0\1\6\202\0\35\5\3\0\61\5\57\0\37\5\21\0"+
"\33\5\65\0\36\5\2\0\44\5\4\0\10\5\1\0\5\5\52\0"+
"\236\5\2\0\12\6\u0356\0\6\5\2\0\1\5\1\0\54\5\1\0"+
"\2\5\3\0\1\5\2\0\27\5\252\0\26\5\12\0\32\5\106\0"+
"\70\5\6\0\2\5\100\0\1\5\3\6\1\0\2\6\5\0\4\6"+
"\4\5\1\0\3\5\1\0\33\5\4\0\3\6\4\0\1\6\40\0"+
"\35\5\203\0\66\5\12\0\26\5\12\0\23\5\215\0\111\5\u03b7\0"+
"\3\6\65\5\17\6\37\0\12\6\20\0\3\6\55\5\13\6\2\0"+
"\1\6\22\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6\1\0"+
"\12\6\100\0\3\6\60\5\16\6\4\5\13\0\12\6\u04a6\0\53\5"+
"\15\6\10\0\12\6\u0936\0\u036f\5\221\0\143\5\u0b9d\0\u042f\5\u33d1\0"+
"\u0239\5\u04c7\0\105\5\13\0\1\5\56\6\20\0\4\6\15\5\u4060\0"+
"\2\5\u2163\0\5\6\3\0\26\6\2\0\7\6\36\0\4\6\224\0"+
"\3\6\u01bb\0\125\5\1\0\107\5\1\0\2\5\2\0\1\5\2\0"+
"\2\5\2\0\4\5\1\0\14\5\1\0\1\5\1\0\7\5\1\0"+
"\101\5\1\0\4\5\2\0\10\5\1\0\7\5\1\0\34\5\1\0"+
"\4\5\1\0\5\5\1\0\1\5\3\0\7\5\1\0\u0154\5\2\0"+
"\31\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0"+
"\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0"+
"\10\5\2\0\62\6\u1600\0\4\5\1\0\33\5\1\0\2\5\1\0"+
"\1\5\2\0\1\5\1\0\12\5\1\0\4\5\1\0\1\5\1\0"+
"\1\5\6\0\1\5\4\0\1\5\1\0\1\5\1\0\1\5\1\0"+
"\3\5\1\0\2\5\1\0\1\5\2\0\1\5\1\0\1\5\1\0"+
"\1\5\1\0\1\5\1\0\1\5\1\0\2\5\1\0\1\5\2\0"+
"\4\5\1\0\7\5\1\0\4\5\1\0\4\5\1\0\1\5\1\0"+
"\12\5\1\0\21\5\5\0\3\5\1\0\5\5\1\0\21\5\u1144\0"+
"\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\306\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\42\0\71\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\u0abc\0"+
"\u042f\5\1\0\11\6\u0fc7\0\u0247\5\u21b9\0\u0239\5\7\0\37\5\1\0"+
"\12\6\146\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"+
"\u22f7\0\u011f\5\61\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"+
"\u14c1\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\u0550\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\u0171\0\54\5\16\6\5\0\1\5\u0500\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\ua6de\5"+
"\42\0\u1035\5\13\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";
/**
@@ -210,16 +256,16 @@ public final class FlasmLexer {
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"+
"\2\7\1\10\1\11\1\12\5\11\1\1\1\11\2\13"+
"\1\11\1\1\1\11\1\14\1\15\1\16\1\17\1\20"+
"\1\16\1\21\1\22\1\23\1\24\1\25\1\26\1\16"+
"\5\11\2\0\1\11\1\0\2\27\2\11\2\0\5\11"+
"\1\0\1\11\1\0\2\27\1\11\1\0\1\30\1\31"+
"\3\11\1\32\1\0\4\11\1\33\1\0\4\11\1\0"+
"\4\11\1\0\4\11\1\0\1\11\2\34\1\35\1\27"+
"\1\11\1\1\1\11\1\14\1\15\2\16\1\17\1\20"+
"\1\16\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+
"\1\16\5\11\2\0\1\11\1\0\2\30\2\11\4\0"+
"\5\11\1\0\1\11\1\0\2\30\1\11\1\31\1\0"+
"\1\32\1\33\3\11\1\34\1\0\4\11\1\35\1\0"+
"\4\11\1\0\4\11\1\0\4\11\1\0\1\11\2\36"+
"\1\37\1\30\2\40";
private static int [] zzUnpackAction() {
private static int [] zzUnpackAction() {
int [] result = new int[109];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -244,22 +290,23 @@ public final class FlasmLexer {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
private static final String ZZ_ROWMAP_PACKED_0 =
"\0\0\0\52\0\124\0\176\0\250\0\322\0\176\0\374"+
"\0\u0126\0\176\0\u0150\0\176\0\u017a\0\176\0\u01a4\0\u01ce"+
"\0\176\0\u01f8\0\u0222\0\u024c\0\u0276\0\u02a0\0\u02ca\0\u02f4"+
"\0\u031e\0\u0348\0\u0372\0\u039c\0\u03c6\0\176\0\176\0\176"+
"\0\176\0\176\0\u03f0\0\176\0\176\0\176\0\176\0\176"+
"\0\176\0\u041a\0\u0444\0\u046e\0\u0498\0\u04c2\0\u04ec\0\u0516"+
"\0\u039c\0\u0540\0\u056a\0\u031e\0\u0594\0\u05be\0\u05e8\0\u0612"+
"\0\u063c\0\u0666\0\u0690\0\u06ba\0\u06e4\0\u070e\0\u0738\0\u0762"+
"\0\u078c\0\u078c\0\u01ce\0\u07b6\0\u041a\0\176\0\u01ce\0\u07e0"+
"\0\u080a\0\u0834\0\u01ce\0\u085e\0\u0888\0\u08b2\0\u08dc\0\u0906"+
"\0\u01ce\0\u0930\0\u095a\0\u0984\0\u09ae\0\u09d8\0\u0a02\0\u0a2c"+
"\0\u0a56\0\u0a80\0\u0aaa\0\u0ad4\0\u0afe\0\u0b28\0\u0b52\0\u0b7c"+
"\0\0\0\53\0\126\0\201\0\254\0\327\0\201\0\201"+
"\0\u0102\0\201\0\u012d\0\201\0\u0158\0\201\0\u0183\0\u01ae"+
"\0\201\0\u01d9\0\u0204\0\u022f\0\u025a\0\u0285\0\u02b0\0\u02db"+
"\0\u0306\0\u0331\0\u035c\0\u0387\0\u03b2\0\201\0\201\0\201"+
"\0\u03dd\0\201\0\201\0\u0408\0\201\0\201\0\201\0\201"+
"\0\201\0\201\0\201\0\u0433\0\u045e\0\u0489\0\u04b4\0\u04df"+
"\0\u050a\0\u0535\0\u0387\0\u0560\0\u058b\0\u0306\0\u05b6\0\u05e1"+
"\0\u060c\0\u0637\0\u0662\0\u068d\0\u06b8\0\u06e3\0\u070e\0\u0739"+
"\0\u0764\0\u078f\0\u07ba\0\u07e5\0\u0810\0\u0810\0\u01ae\0\u083b"+
"\0\201\0\u0433\0\201\0\u01ae\0\u0866\0\u0891\0\u08bc\0\u01ae"+
"\0\u08e7\0\u0912\0\u093d\0\u0968\0\u0993\0\u01ae\0\u09be\0\u09e9"+
"\0\u0a14\0\u0a3f\0\u0a6a\0\u0a95\0\u0ac0\0\u0aeb\0\u0b16\0\u0b41"+
"\0\u0b6c\0\u0b97\0\u0bc2\0\u0bed\0\u0c18\0\u0c43\0\u0c6e\0\u01ae"+
"\0\u0c99\0\u01ae\0\201\0\u01ae\0\u0cc4";
private static int [] zzUnpackRowMap() {
private static int [] zzUnpackRowMap() {
int [] result = new int[109];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -284,150 +331,150 @@ public final class FlasmLexer {
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\1\4\1\6\1\4\1\6\1\4\3\6"+
"\1\4\1\6\1\4\1\6\1\4\1\5\1\4\1\10"+
"\1\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\7\10\1\4"+
"\1\15\1\16\1\17\1\4\1\20\2\4\1\21\1\4"+
"\1\22\1\23\1\24\1\20\1\25\3\20\1\26\2\20"+
"\1\27\1\30\1\20\1\31\1\32\1\33\1\34\1\20"+
"\1\4\1\20\1\4\1\20\1\35\1\20\1\36\1\20"+
"\1\4\1\20\1\4\1\20\1\35\1\20\1\36\1\20"+
"\2\4\1\20\3\4\57\0\1\5\44\0\1\5\6\0"+
"\2\6\1\37\2\0\13\6\1\0\5\6\1\0\1\6"+
"\2\6\1\37\2\0\13\6\1\0\5\6\1\0\1\6"+
"\1\0\1\6\1\0\3\6\1\0\1\6\1\0\1\6"+
"\2\0\1\6\1\10\2\0\34\10\1\0\3\10\1\0"+
"\6\10\2\0\1\12\47\0\1\40\2\0\7\40\1\41"+
"\1\42\1\43\1\40\1\44\3\40\1\45\14\40\1\46"+
"\3\40\1\47\1\50\1\51\1\52\5\0\1\16\47\0"+
"\1\0\1\6\1\0\3\6\1\0\1\6\2\0\1\6"+
"\2\0\1\6\2\0\1\12\50\0\1\40\2\0\5\40"+
"\1\41\1\40\1\42\1\43\1\44\1\40\1\45\3\40"+
"\1\46\14\40\1\47\3\40\1\50\1\51\1\52\1\53"+
"\1\54\5\0\1\16\50\0\1\17\2\0\50\17\5\0"+
"\2\20\3\0\13\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\2\0\1\20\2\0"+
"\1\20\5\0\2\20\3\0\1\20\1\55\11\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\1\20\1\53\11\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+
"\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\3\20\1\56\7\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\2\0\1\20\2\0"+
"\1\20\5\0\2\20\3\0\10\20\1\57\2\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\10\20\1\55\2\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+
"\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\5\20\1\60\5\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\2\0\1\20\2\0"+
"\1\20\5\0\2\20\3\0\2\20\1\61\10\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\2\20\1\57\10\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+
"\1\20\26\0\1\60\1\0\1\31\1\32\1\0\1\61"+
"\1\20\2\0\1\20\2\0\1\20\26\0\1\62\1\0"+
"\1\31\1\32\1\0\1\63\24\0\2\20\3\0\10\20"+
"\1\64\2\20\1\0\5\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\2\0\1\20\2\0\1\20"+
"\15\0\1\65\12\0\2\66\1\0\1\67\1\65\33\0"+
"\1\65\12\0\2\32\1\0\1\67\1\65\23\0\2\20"+
"\3\0\5\20\1\70\5\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\2\0\1\20"+
"\2\0\1\20\30\0\2\67\26\0\2\20\3\0\13\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\2\20"+
"\1\71\1\0\1\20\2\0\1\20\2\0\1\20\30\0"+
"\1\72\1\73\36\0\3\74\3\0\1\74\4\0\2\74"+
"\2\0\1\74\1\0\1\74\2\0\1\74\2\0\1\74"+
"\23\0\3\75\3\0\1\75\4\0\2\75\2\0\1\75"+
"\1\0\1\75\2\0\1\75\2\0\1\75\13\0\2\20"+
"\3\0\2\20\1\76\10\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\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\77\2\20\1\0"+
"\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\11\20\1\100\1\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\2\0\1\20\2\0"+
"\1\20\5\0\2\20\3\0\6\20\1\101\4\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\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\1\0\1\20\2\0\1\20\2\0"+
"\1\20\22\0\1\103\35\0\2\20\3\0\4\20\1\104"+
"\6\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\0\1\20\2\0\1\20\2\0\1\20\25\0"+
"\1\105\2\0\2\106\3\0\1\105\32\0\1\65\12\0"+
"\2\67\2\0\1\65\23\0\2\20\3\0\13\20\1\0"+
"\4\20\1\107\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\2\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\10\20\1\110\2\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\2\0\1\20"+
"\2\0\1\20\11\0\1\111\52\0\1\111\16\0\2\73"+
"\36\0\3\112\3\0\1\112\4\0\2\112\2\0\1\112"+
"\1\0\1\112\2\0\1\112\2\0\1\112\23\0\3\113"+
"\3\0\1\113\4\0\2\113\2\0\1\113\1\0\1\113"+
"\2\0\1\113\2\0\1\113\13\0\2\20\3\0\3\20"+
"\1\114\7\20\1\0\5\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\2\0\1\20\2\0\1\20"+
"\5\0\2\20\3\0\12\20\1\115\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\2\0"+
"\1\20\2\0\1\20\5\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\1\0\1\20\2\0\1\20\2\0\1\20\5\0"+
"\2\20\3\0\7\20\1\117\3\20\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\2\0"+
"\1\20\2\0\1\20\5\0\2\20\3\0\6\20\1\120"+
"\4\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\0\1\20\2\0\1\20\2\0\1\20\16\0"+
"\1\121\41\0\2\20\3\0\12\20\1\122\1\0\5\20"+
"\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+
"\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+
"\1\0\1\20\2\0\1\20\15\0\1\63\12\0\2\64"+
"\1\0\1\65\1\63\32\0\1\63\12\0\2\32\1\0"+
"\2\0\1\20\2\0\1\20\30\0\2\106\26\0\2\20"+
"\3\0\7\20\1\123\3\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\2\0\1\20"+
"\2\0\1\20\5\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"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\1\0\1\20\2\0\1\20\30\0\2\65"+
"\25\0\2\20\3\0\13\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\2\20\1\67\1\0\1\20\1\0"+
"\1\20\2\0\1\20\15\0\3\70\3\0\1\70\4\0"+
"\2\70\2\0\1\70\1\0\1\70\2\0\1\70\2\0"+
"\1\70\22\0\3\71\3\0\1\71\4\0\2\71\2\0"+
"\1\71\1\0\1\71\2\0\1\71\2\0\1\71\12\0"+
"\2\20\3\0\2\20\1\72\10\20\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+
"\1\20\2\0\1\20\5\0\2\20\3\0\13\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\1\73\2\20"+
"\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\11\20\1\74\1\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+
"\1\0\1\20\2\0\1\20\2\0\1\20\5\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\1\0\1\20\2\0\1\20"+
"\2\0\1\20\5\0\2\20\3\0\3\20\1\126\7\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\6\20\1\76\4\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+
"\2\0\1\20\22\0\1\77\34\0\2\20\3\0\4\20"+
"\1\100\6\20\1\0\5\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+
"\25\0\1\101\2\0\2\102\3\0\1\101\31\0\1\63"+
"\12\0\2\65\2\0\1\63\22\0\2\20\3\0\13\20"+
"\1\0\4\20\1\103\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\0\1\20\1\0\1\20\2\0\1\20\5\0"+
"\2\20\3\0\10\20\1\104\2\20\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+
"\1\20\2\0\1\20\15\0\3\105\3\0\1\105\4\0"+
"\2\105\2\0\1\105\1\0\1\105\2\0\1\105\2\0"+
"\1\105\22\0\3\106\3\0\1\106\4\0\2\106\2\0"+
"\1\106\1\0\1\106\2\0\1\106\2\0\1\106\12\0"+
"\2\20\3\0\3\20\1\107\7\20\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+
"\1\20\2\0\1\20\5\0\2\20\3\0\12\20\1\110"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\3\20\1\111\7\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+
"\2\0\1\20\5\0\2\20\3\0\7\20\1\112\3\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\6\20\1\113\4\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+
"\2\0\1\20\16\0\1\114\40\0\2\20\3\0\12\20"+
"\1\115\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\0\1\20\1\0\1\20\2\0\1\20\30\0"+
"\1\0\1\20\2\0\1\20\2\0\1\20\24\0\1\127"+
"\33\0\2\20\3\0\10\20\1\130\2\20\1\0\5\20"+
"\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+
"\2\0\1\20\2\0\1\20\5\0\2\20\3\0\1\131"+
"\12\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\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\1\0\1\20\2\0\1\20"+
"\2\0\1\20\5\0\2\20\3\0\12\20\1\133\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\7\20\1\117\3\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+
"\1\20\5\0\2\20\3\0\4\20\1\120\6\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\3\20\1\121\7\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+
"\1\20\2\0\1\20\2\0\1\20\22\0\1\134\35\0"+
"\2\20\3\0\12\20\1\135\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\2\0\1\20"+
"\2\0\1\20\5\0\2\20\3\0\5\20\1\136\5\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\2\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\3\20\1\137\7\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\2\0\1\20"+
"\2\0\1\20\5\0\2\20\3\0\10\20\1\140\2\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\2\0\1\20\2\0\1\20\24\0\1\141"+
"\33\0\2\20\3\0\1\142\12\20\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\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"+
"\2\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\0\1\20\1\0\1\20\2\0\1\20\5\0"+
"\2\20\3\0\1\124\12\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+
"\2\0\1\20\5\0\2\20\3\0\1\125\12\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\12\20\1\126\1\0\5\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+
"\22\0\1\127\34\0\2\20\3\0\12\20\1\130\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\5\20\1\131\5\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+
"\1\20\5\0\2\20\3\0\3\20\1\132\7\20\1\0"+
"\5\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\1\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\10\20\1\133\2\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\1\0\1\20\2\0"+
"\1\20\24\0\1\134\32\0\2\20\3\0\1\135\12\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\10\20\1\136\2\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+
"\2\0\1\20\5\0\2\20\3\0\1\20\1\137\11\20"+
"\1\0\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+
"\1\0\1\20\1\0\1\20\2\0\1\20\5\0\2\20"+
"\3\0\3\20\1\140\7\20\1\0\5\20\1\0\1\20"+
"\1\0\1\20\1\0\3\20\1\0\1\20\1\0\1\20"+
"\2\0\1\20\12\0\1\141\44\0\2\20\3\0\13\20"+
"\1\0\1\20\1\103\3\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+
"\5\0\2\20\3\0\1\142\12\20\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+
"\1\20\2\0\1\20\5\0\2\20\3\0\13\20\1\0"+
"\2\20\1\143\1\144\1\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\1\0\1\20\2\0\1\20"+
"\3\20\1\0\1\20\2\0\1\20\2\0\1\20\5\0"+
"\2\20\3\0\1\20\1\144\11\20\1\0\5\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\2\0"+
"\1\20\2\0\1\20\5\0\2\20\3\0\3\20\1\145"+
"\7\20\1\0\5\20\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\0\1\20\2\0\1\20\2\0\1\20\12\0"+
"\1\146\45\0\2\20\3\0\13\20\1\0\1\20\1\107"+
"\3\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\1\147\12\20\1\0\5\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\2\0\1\20\2\0\1\20"+
"\5\0\2\20\3\0\13\20\1\0\2\20\1\150\1\151"+
"\1\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+
"\1\20\2\0\1\20\2\0\1\20\5\0\2\20\3\0"+
"\11\20\1\152\1\20\1\0\5\20\1\0\1\20\1\0"+
"\1\20\1\0\3\20\1\0\1\20\2\0\1\20\2\0"+
"\1\20\27\0\1\153\30\0\2\20\3\0\13\20\1\0"+
"\2\20\1\154\1\155\1\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\2\0\1\20\2\0\1\20"+
"\5\0\2\20\3\0\13\20\1\0\2\20\2\151\1\20"+
"\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+
"\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+
"\1\0\1\20\2\0\1\20\27\0\1\146\27\0\2\20"+
"\3\0\13\20\1\0\2\20\1\147\1\150\1\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+
"\1\20\2\0\1\20\5\0\2\20\3\0\13\20\1\0"+
"\2\20\2\144\1\20\1\0\1\20\1\0\1\20\1\0"+
"\3\20\1\0\1\20\1\0\1\20\2\0\1\20\5\0"+
"\2\20\3\0\13\20\1\0\2\20\2\150\1\20\1\0"+
"\1\20\1\0\1\20\1\0\3\20\1\0\1\20\1\0"+
"\2\0\1\20\2\0\1\20\5\0\2\20\3\0\13\20"+
"\1\0\2\20\2\155\1\20\1\0\1\20\1\0\1\20"+
"\1\0\3\20\1\0\1\20\2\0\1\20\2\0\1\20";
private static int [] zzUnpackTrans() {
private static int [] zzUnpackTrans() {
int [] result = new int[3311];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -465,15 +512,15 @@ public final class FlasmLexer {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\3\0\1\11\2\1\1\11\2\1\1\11\1\1\1\11"+
"\1\1\1\11\2\1\1\11\14\1\5\11\1\1\6\11"+
"\6\1\2\0\1\1\1\0\4\1\2\0\5\1\1\0"+
"\1\1\1\0\3\1\1\0\1\11\5\1\1\0\5\1"+
"\1\0\4\1\1\0\4\1\1\0\4\1\1\0\4\1"+
"\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\3\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";
private static int [] zzUnpackAttribute() {
private static int [] zzUnpackAttribute() {
int [] result = new int[109];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -552,6 +599,8 @@ public final class FlasmLexer {
StringBuilder string = new StringBuilder();
private int repeatNum = 1;
/**
* Create an empty lexer, yyrset will be called later to reset and assign
* the reader
@@ -590,7 +639,7 @@ public final class FlasmLexer {
char [] map = new char[0x110000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
int j = 0; /* index in unpacked array */
while (i < 3682) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
@@ -939,129 +988,138 @@ public final class FlasmLexer {
case 1:
{
}
}
case 33: break;
case 2:
{ yybegin(PARAMETERS);
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext());
}
}
case 34: break;
case 3:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END);
}
}
case 33: break;
case 4:
{ string.append(yytext());
}
case 34: break;
case 5:
{ throw new ActionParseException("Unterminated string at end of line", yyline + 1);
case 35: break;
case 4:
{ for(int r=0;r<repeatNum;r++) string.append(yytext()); repeatNum = 1;
}
case 36: break;
case 5:
{ repeatNum = 1; throw new ActionParseException("Unterminated string at end of line", yyline + 1);
}
case 37: break;
case 6:
{ yybegin(PARAMETERS);
repeatNum = 1;
// length also includes the trailing quote
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString());
}
}
case 38: break;
case 7:
{ yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL);
}
}
case 39: break;
case 8:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1));
}
}
case 40: break;
case 9:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext());
}
}
case 41: break;
case 10:
{ yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START);
}
}
case 42: break;
case 11:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext())));
}
}
case 43: break;
case 12:
{ yybegin(STRING);
string.setLength(0);
}
}
case 44: break;
case 13:
{ String s=yytext();
return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1));
}
}
case 43: break;
case 14:
{ throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1);
}
case 44: break;
case 15:
{ string.append('\t');
case 45: break;
case 45: break;
case 16:
case 14:
{ repeatNum = 1; throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1);
}
case 46: break;
case 46: break;
case 17:
case 15:
{ for(int r=0;r<repeatNum;r++) string.append('\t'); repeatNum = 1;
}
case 47: break;
case 47: break;
case 18:
case 16:
{ for(int r=0;r<repeatNum;r++) string.append('\r'); repeatNum = 1;
}
case 48: break;
case 48: break;
case 19:
case 17:
{ for(int r=0;r<repeatNum;r++) string.append('\f'); repeatNum = 1;
}
case 49: break;
case 49: break;
case 20:
case 18:
{ for(int r=0;r<repeatNum;r++) string.append('\n'); repeatNum = 1;
}
case 50: break;
case 50: break;
case 21:
case 19:
{ for(int r=0;r<repeatNum;r++) string.append('\\'); repeatNum = 1;
}
case 51: break;
case 51: break;
case 22:
case 20:
{ for(int r=0;r<repeatNum;r++) string.append('\"'); repeatNum = 1;
}
case 52: break;
case 52: break;
case 23:
case 21:
{ for(int r=0;r<repeatNum;r++) string.append('\b'); repeatNum = 1;
}
case 53: break;
case 53: break;
case 24:
{ char val = (char) Integer.parseInt(yytext().substring(2), 16);
case 22:
{ for(int r=0;r<repeatNum;r++) string.append('\u00A7'); repeatNum = 1;
}
case 54: break;
case 54: break;
case 25:
case 23:
{ for(int r=0;r<repeatNum;r++) string.append('\''); repeatNum = 1;
}
case 55: break;
case 55: break;
case 26:
case 24:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext())));
}
case 56: break;
case 56: break;
case 27:
case 25:
{ repeatNum = Integer.parseInt(yytext().substring(2, yytext().length()-1));
}
case 57: break;
case 57: break;
case 28:
case 26:
{ char val = (char) Integer.parseInt(yytext().substring(2), 16);
for(int r=0;r<repeatNum;r++) string.append(val); repeatNum = 1;
}
case 58: break;
case 58: break;
case 29:
case 27:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE);
}
case 59: break;
case 59: break;
case 30:
case 28:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, Null.INSTANCE);
}
case 60: break;
case 29:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE);
}
case 61: break;
case 30:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8))));
}
case 62: break;
case 31:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE);
}
case 63: break;
case 32:
{ return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8))));
}
case 64: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;

View File

@@ -725,6 +725,10 @@ public final class Configuration {
@ConfigurationInternal
public static ConfigurationItem<Boolean> showDialogOnError = null;
@ConfigurationDefaultInt(20)
@ConfigurationCategory("limit")
public static ConfigurationItem<Integer> limitSameChars = null;
private enum OSId {
WINDOWS, OSX, UNIX
}

View File

@@ -12,7 +12,8 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
* License along with this library.
*/
package com.jpexs.decompiler.flash.tags;
import com.jpexs.decompiler.flash.SWF;

View File

@@ -12,13 +12,15 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
* License along with this library.
*/
package com.jpexs.decompiler.flash.tags.base;
import com.jpexs.decompiler.flash.SWF;
import com.jpexs.decompiler.flash.tags.DefineScalingGridTag;
import com.jpexs.decompiler.flash.tags.Tag;
import com.jpexs.helpers.ByteArrayRange;
import com.jpexs.helpers.Helper;
/**
*
@@ -44,10 +46,10 @@ public abstract class CharacterTag extends Tag implements CharacterIdTag {
public String getName() {
String nameAppend = "";
if (exportName != null) {
if (exportName != null) {
nameAppend = ": " + Helper.escapePCodeString(exportName);
}
if (className != null) {
if (className != null) {
nameAppend = ": " + Helper.escapePCodeString(className);
}
return tagName + " (" + getCharacterId() + nameAppend + ")";
}

View File

@@ -241,6 +241,54 @@ public class Helper {
return ret.toString();
}
/**
* Escapes string by adding backslashes
*
* @param s String to escape
* @return Escaped string
*/
public static String escapePCodeString(String s) {
StringBuilder ret = new StringBuilder(s.length());
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '\n') {
ret.append("\\n");
} else if (c == '\r') {
ret.append("\\r");
} else if (c == '\t') {
ret.append("\\t");
} else if (c == '\b') {
ret.append("\\b");
} else if (c == '\f') {
ret.append("\\f");
} else if (c == '\\') {
ret.append("\\\\");
} else if (c == '"') {
ret.append("\\\"");
} else if (c == '\'') {
ret.append("\\'");
} else if (c < 32) {
ret.append("\\x").append(byteToHex((byte) c));
} else {
int num = 1;
for (int j = i + 1; j < s.length(); j++) {
if (s.charAt(j) == c) {
num++;
} else {
break;
}
}
if (num > Configuration.limitSameChars.get()) {
ret.append("\\{").append(num).append("}");
i += num - 1;
}
ret.append(c);
}
}
return ret.toString();
}
/**
* Escapes string by adding backslashes
*