diff --git a/trunk/lib/jsyntaxpane-0.9.5.jar b/trunk/lib/jsyntaxpane-0.9.5.jar
index e20d1fafe..911a4c945 100644
Binary files a/trunk/lib/jsyntaxpane-0.9.5.jar and b/trunk/lib/jsyntaxpane-0.9.5.jar differ
diff --git a/trunk/libsrc/jpproxy/manifest.mf b/trunk/libsrc/jpproxy/manifest.mf
new file mode 100644
index 000000000..1574df4a2
--- /dev/null
+++ b/trunk/libsrc/jpproxy/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/trunk/libsrc/jpproxy/nbbuild.xml b/trunk/libsrc/jpproxy/nbbuild.xml
new file mode 100644
index 000000000..6579262e5
--- /dev/null
+++ b/trunk/libsrc/jpproxy/nbbuild.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ Builds, tests, and runs the project JPProxy.
+
+
+
diff --git a/trunk/libsrc/jpproxy/nbproject/build-impl.xml b/trunk/libsrc/jpproxy/nbproject/build-impl.xml
new file mode 100644
index 000000000..0531152f7
--- /dev/null
+++ b/trunk/libsrc/jpproxy/nbproject/build-impl.xml
@@ -0,0 +1,880 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set src.dir
+ Must set build.dir
+ Must set dist.dir
+ Must set build.classes.dir
+ Must set dist.javadoc.dir
+ Must set build.test.classes.dir
+ Must set build.test.results.dir
+ Must set build.classes.excludes
+ Must set dist.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+
+
+
+
+
+ java -cp "${run.classpath.with.dist.jar}" ${main.class}
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must set fix.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/trunk/libsrc/jpproxy/nbproject/genfiles.properties b/trunk/libsrc/jpproxy/nbproject/genfiles.properties
new file mode 100644
index 000000000..595e665fc
--- /dev/null
+++ b/trunk/libsrc/jpproxy/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+nbbuild.xml.data.CRC32=0a5363c8
+nbbuild.xml.script.CRC32=e4148738
+nbbuild.xml.stylesheet.CRC32=28e38971@1.38.2.45
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=0a5363c8
+nbproject/build-impl.xml.script.CRC32=dee28151
+nbproject/build-impl.xml.stylesheet.CRC32=f33e10ff@1.38.2.45
diff --git a/trunk/libsrc/jpproxy/nbproject/project.properties b/trunk/libsrc/jpproxy/nbproject/project.properties
new file mode 100644
index 000000000..a546f0851
--- /dev/null
+++ b/trunk/libsrc/jpproxy/nbproject/project.properties
@@ -0,0 +1,74 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=JPProxy
+application.vendor=JPEXS
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+buildfile=nbbuild.xml
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/JPProxy.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.jpproxy-src=src
+includes=**
+jar.compress=false
+javac.classpath=
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}:\
+ ${libs.junit.classpath}:\
+ ${libs.junit_4.classpath}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=com.jpexs.proxy.Main
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=${file.reference.jpproxy-src}
diff --git a/trunk/libsrc/jpproxy/nbproject/project.xml b/trunk/libsrc/jpproxy/nbproject/project.xml
new file mode 100644
index 000000000..ba3b6b9e1
--- /dev/null
+++ b/trunk/libsrc/jpproxy/nbproject/project.xml
@@ -0,0 +1,13 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+ JPProxy
+
+
+
+
+
+
+
diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex
index 3b309ce76..f55c34079 100644
--- a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex
+++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex
@@ -56,7 +56,8 @@ Label = {Identifier}:
/* integer literals */
NumberLiteral = 0 | -?[1-9][0-9]*
-
+PositiveNumberLiteral = 0 | [1-9][0-9]*
+
/* floating point literals */
FloatLiteral = -?({FLit1}|{FLit2}|{FLit3}) {Exponent}?
@@ -73,6 +74,10 @@ Comment = ";" {InputCharacter}* {LineTerminator}?
/* string and character literals */
StringCharacter = [^\r\n\"\\]
+ExceptionStart = "exceptionstart"{PositiveNumberLiteral}":"
+ExceptionEnd = "exceptionend "{PositiveNumberLiteral}":"
+ExceptionTarget = "exceptiontarget "{PositiveNumberLiteral}":"
+
%state STRING,PARAMETERS
%%
@@ -83,6 +88,17 @@ StringCharacter = [^\r\n\"\\]
/* whitespace */
{WhiteSpace} { }
+ {ExceptionStart} {
+ return token(TokenType.KEYWORD);
+ }
+ {ExceptionEnd} {
+ return token(TokenType.KEYWORD);
+ }
+ {ExceptionTarget} {
+ return token(TokenType.KEYWORD);
+ }
+
+
{Label} {return token(TokenType.IDENTIFIER,yychar,yylength()-1); }
/* identifiers */
diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java
index c85450b06..7e3cc070e 100644
--- a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java
+++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 18.8.10 12:21 */
+/* The following code was generated by JFlex 1.4.3 on 19.9.10 13:44 */
/* Flash assembler language lexer specification */
@@ -12,7 +12,7 @@ import jsyntaxpane.TokenType;
/**
* This class is a scanner generated by
* JFlex 1.4.3
- * on 18.8.10 12:21 from the specification file
+ * on 19.9.10 13:44 from the specification file
* D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex
*/
public final class Flasm3Lexer extends DefaultJFlexLexer {
@@ -42,92 +42,93 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
- "\11\11\1\3\1\2\1\0\1\3\1\1\16\11\4\0\1\3\1\0"+
- "\1\26\1\0\1\10\6\0\1\22\1\0\1\16\1\17\1\0\1\15"+
- "\3\15\4\23\2\6\1\14\1\24\5\0\4\10\1\20\25\10\1\5"+
- "\1\25\1\7\1\0\1\13\1\0\4\12\1\21\7\12\1\4\15\12"+
- "\4\0\41\11\2\0\4\10\4\0\1\10\2\0\1\11\7\0\1\10"+
- "\4\0\1\10\5\0\27\10\1\0\37\10\1\0\u013f\10\31\0\162\10"+
- "\4\0\14\10\16\0\5\10\11\0\1\10\21\0\130\11\5\0\23\11"+
- "\12\0\1\10\13\0\1\10\1\0\3\10\1\0\1\10\1\0\24\10"+
- "\1\0\54\10\1\0\46\10\1\0\5\10\4\0\202\10\1\0\4\11"+
- "\3\0\105\10\1\0\46\10\2\0\2\10\6\0\20\10\41\0\46\10"+
- "\2\0\1\10\7\0\47\10\11\0\21\11\1\0\27\11\1\0\3\11"+
- "\1\0\1\11\1\0\2\11\1\0\1\11\13\0\33\10\5\0\3\10"+
- "\15\0\4\11\14\0\6\11\13\0\32\10\5\0\13\10\16\11\7\0"+
- "\12\11\4\0\2\10\1\11\143\10\1\0\1\10\10\11\1\0\6\11"+
- "\2\10\2\11\1\0\4\11\2\10\12\11\3\10\2\0\1\10\17\0"+
- "\1\11\1\10\1\11\36\10\33\11\2\0\3\10\60\0\46\10\13\11"+
- "\1\10\u014f\0\3\11\66\10\2\0\1\11\1\10\20\11\2\0\1\10"+
- "\4\11\3\0\12\10\2\11\2\0\12\11\21\0\3\11\1\0\10\10"+
- "\2\0\2\10\2\0\26\10\1\0\7\10\1\0\1\10\3\0\4\10"+
- "\2\0\1\11\1\10\7\11\2\0\2\11\2\0\3\11\11\0\1\11"+
- "\4\0\2\10\1\0\3\10\2\11\2\0\12\11\4\10\15\0\3\11"+
- "\1\0\6\10\4\0\2\10\2\0\26\10\1\0\7\10\1\0\2\10"+
- "\1\0\2\10\1\0\2\10\2\0\1\11\1\0\5\11\4\0\2\11"+
- "\2\0\3\11\13\0\4\10\1\0\1\10\7\0\14\11\3\10\14\0"+
- "\3\11\1\0\11\10\1\0\3\10\1\0\26\10\1\0\7\10\1\0"+
- "\2\10\1\0\5\10\2\0\1\11\1\10\10\11\1\0\3\11\1\0"+
- "\3\11\2\0\1\10\17\0\2\10\2\11\2\0\12\11\1\0\1\10"+
- "\17\0\3\11\1\0\10\10\2\0\2\10\2\0\26\10\1\0\7\10"+
- "\1\0\2\10\1\0\5\10\2\0\1\11\1\10\6\11\3\0\2\11"+
- "\2\0\3\11\10\0\2\11\4\0\2\10\1\0\3\10\4\0\12\11"+
- "\1\0\1\10\20\0\1\11\1\10\1\0\6\10\3\0\3\10\1\0"+
- "\4\10\3\0\2\10\1\0\1\10\1\0\2\10\3\0\2\10\3\0"+
- "\3\10\3\0\10\10\1\0\3\10\4\0\5\11\3\0\3\11\1\0"+
- "\4\11\11\0\1\11\17\0\11\11\11\0\1\10\7\0\3\11\1\0"+
- "\10\10\1\0\3\10\1\0\27\10\1\0\12\10\1\0\5\10\4\0"+
- "\7\11\1\0\3\11\1\0\4\11\7\0\2\11\11\0\2\10\4\0"+
- "\12\11\22\0\2\11\1\0\10\10\1\0\3\10\1\0\27\10\1\0"+
- "\12\10\1\0\5\10\2\0\1\11\1\10\7\11\1\0\3\11\1\0"+
- "\4\11\7\0\2\11\7\0\1\10\1\0\2\10\4\0\12\11\22\0"+
- "\2\11\1\0\10\10\1\0\3\10\1\0\27\10\1\0\20\10\4\0"+
- "\6\11\2\0\3\11\1\0\4\11\11\0\1\11\10\0\2\10\4\0"+
- "\12\11\22\0\2\11\1\0\22\10\3\0\30\10\1\0\11\10\1\0"+
- "\1\10\2\0\7\10\3\0\1\11\4\0\6\11\1\0\1\11\1\0"+
- "\10\11\22\0\2\11\15\0\60\10\1\11\2\10\7\11\4\0\10\10"+
- "\10\11\1\0\12\11\47\0\2\10\1\0\1\10\2\0\2\10\1\0"+
- "\1\10\2\0\1\10\6\0\4\10\1\0\7\10\1\0\3\10\1\0"+
- "\1\10\1\0\1\10\2\0\2\10\1\0\4\10\1\11\2\10\6\11"+
- "\1\0\2\11\1\10\2\0\5\10\1\0\1\10\1\0\6\11\2\0"+
- "\12\11\2\0\2\10\42\0\1\10\27\0\2\11\6\0\12\11\13\0"+
- "\1\11\1\0\1\11\1\0\1\11\4\0\2\11\10\10\1\0\42\10"+
- "\6\0\24\11\1\0\2\11\4\10\4\0\10\11\1\0\44\11\11\0"+
- "\1\11\71\0\42\10\1\0\5\10\1\0\2\10\1\0\7\11\3\0"+
- "\4\11\6\0\12\11\6\0\6\10\4\11\106\0\46\10\12\0\51\10"+
- "\7\0\132\10\5\0\104\10\5\0\122\10\6\0\7\10\1\0\77\10"+
- "\1\0\1\10\1\0\4\10\2\0\7\10\1\0\1\10\1\0\4\10"+
- "\2\0\47\10\1\0\1\10\1\0\4\10\2\0\37\10\1\0\1\10"+
- "\1\0\4\10\2\0\7\10\1\0\1\10\1\0\4\10\2\0\7\10"+
- "\1\0\7\10\1\0\27\10\1\0\37\10\1\0\1\10\1\0\4\10"+
- "\2\0\7\10\1\0\47\10\1\0\23\10\16\0\11\11\56\0\125\10"+
- "\14\0\u026c\10\2\0\10\10\12\0\32\10\5\0\113\10\3\0\3\10"+
- "\17\0\15\10\1\0\4\10\3\11\13\0\22\10\3\11\13\0\22\10"+
- "\2\11\14\0\15\10\1\0\3\10\1\0\2\11\14\0\64\10\40\11"+
- "\3\0\1\10\3\0\2\10\1\11\2\0\12\11\41\0\3\11\2\0"+
- "\12\11\6\0\130\10\10\0\51\10\1\11\126\0\35\10\3\0\14\11"+
- "\4\0\14\11\12\0\12\11\36\10\2\0\5\10\u038b\0\154\10\224\0"+
- "\234\10\4\0\132\10\6\0\26\10\2\0\6\10\2\0\46\10\2\0"+
- "\6\10\2\0\10\10\1\0\1\10\1\0\1\10\1\0\1\10\1\0"+
- "\37\10\2\0\65\10\1\0\7\10\1\0\1\10\3\0\3\10\1\0"+
- "\7\10\3\0\4\10\2\0\6\10\4\0\15\10\5\0\3\10\1\0"+
- "\7\10\17\0\4\11\32\0\5\11\20\0\2\10\23\0\1\10\13\0"+
- "\4\11\6\0\6\11\1\0\1\10\15\0\1\10\40\0\22\10\36\0"+
- "\15\11\4\0\1\11\3\0\6\11\27\0\1\10\4\0\1\10\2\0"+
- "\12\10\1\0\1\10\3\0\5\10\6\0\1\10\1\0\1\10\1\0"+
- "\1\10\1\0\4\10\1\0\3\10\1\0\7\10\3\0\3\10\5\0"+
- "\5\10\26\0\44\10\u0e81\0\3\10\31\0\11\10\6\11\1\0\5\10"+
- "\2\0\5\10\4\0\126\10\2\0\2\11\2\0\3\10\1\0\137\10"+
- "\5\0\50\10\4\0\136\10\21\0\30\10\70\0\20\10\u0200\0\u19b6\10"+
- "\112\0\u51a6\10\132\0\u048d\10\u0773\0\u2ba4\10\u215c\0\u012e\10\2\0\73\10"+
- "\225\0\7\10\14\0\5\10\5\0\1\10\1\11\12\10\1\0\15\10"+
- "\1\0\5\10\1\0\1\10\1\0\2\10\1\0\2\10\1\0\154\10"+
- "\41\0\u016b\10\22\0\100\10\2\0\66\10\50\0\15\10\3\0\20\11"+
- "\20\0\4\11\17\0\2\10\30\0\3\10\31\0\1\10\6\0\5\10"+
- "\1\0\207\10\2\0\1\11\4\0\1\10\13\0\12\11\7\0\32\10"+
- "\4\0\1\10\1\0\32\10\12\0\132\10\3\0\6\10\2\0\6\10"+
- "\2\0\6\10\2\0\3\10\3\0\2\10\3\0\2\10\22\0\3\11"+
- "\4\0";
+ "\11\11\1\3\1\2\1\0\1\3\1\1\16\11\4\0\1\41\1\0"+
+ "\1\43\1\0\1\10\6\0\1\22\1\0\1\16\1\17\1\0\1\15"+
+ "\3\44\4\23\2\6\1\14\1\24\5\0\4\10\1\20\25\10\1\5"+
+ "\1\25\1\7\1\0\1\13\1\0\1\36\1\12\1\27\1\40\1\21"+
+ "\1\12\1\42\1\12\1\32\3\12\1\4\1\34\1\33\1\30\1\12"+
+ "\1\37\1\35\1\31\3\12\1\26\2\12\4\0\41\11\2\0\4\10"+
+ "\4\0\1\10\2\0\1\11\7\0\1\10\4\0\1\10\5\0\27\10"+
+ "\1\0\37\10\1\0\u013f\10\31\0\162\10\4\0\14\10\16\0\5\10"+
+ "\11\0\1\10\21\0\130\11\5\0\23\11\12\0\1\10\13\0\1\10"+
+ "\1\0\3\10\1\0\1\10\1\0\24\10\1\0\54\10\1\0\46\10"+
+ "\1\0\5\10\4\0\202\10\1\0\4\11\3\0\105\10\1\0\46\10"+
+ "\2\0\2\10\6\0\20\10\41\0\46\10\2\0\1\10\7\0\47\10"+
+ "\11\0\21\11\1\0\27\11\1\0\3\11\1\0\1\11\1\0\2\11"+
+ "\1\0\1\11\13\0\33\10\5\0\3\10\15\0\4\11\14\0\6\11"+
+ "\13\0\32\10\5\0\13\10\16\11\7\0\12\11\4\0\2\10\1\11"+
+ "\143\10\1\0\1\10\10\11\1\0\6\11\2\10\2\11\1\0\4\11"+
+ "\2\10\12\11\3\10\2\0\1\10\17\0\1\11\1\10\1\11\36\10"+
+ "\33\11\2\0\3\10\60\0\46\10\13\11\1\10\u014f\0\3\11\66\10"+
+ "\2\0\1\11\1\10\20\11\2\0\1\10\4\11\3\0\12\10\2\11"+
+ "\2\0\12\11\21\0\3\11\1\0\10\10\2\0\2\10\2\0\26\10"+
+ "\1\0\7\10\1\0\1\10\3\0\4\10\2\0\1\11\1\10\7\11"+
+ "\2\0\2\11\2\0\3\11\11\0\1\11\4\0\2\10\1\0\3\10"+
+ "\2\11\2\0\12\11\4\10\15\0\3\11\1\0\6\10\4\0\2\10"+
+ "\2\0\26\10\1\0\7\10\1\0\2\10\1\0\2\10\1\0\2\10"+
+ "\2\0\1\11\1\0\5\11\4\0\2\11\2\0\3\11\13\0\4\10"+
+ "\1\0\1\10\7\0\14\11\3\10\14\0\3\11\1\0\11\10\1\0"+
+ "\3\10\1\0\26\10\1\0\7\10\1\0\2\10\1\0\5\10\2\0"+
+ "\1\11\1\10\10\11\1\0\3\11\1\0\3\11\2\0\1\10\17\0"+
+ "\2\10\2\11\2\0\12\11\1\0\1\10\17\0\3\11\1\0\10\10"+
+ "\2\0\2\10\2\0\26\10\1\0\7\10\1\0\2\10\1\0\5\10"+
+ "\2\0\1\11\1\10\6\11\3\0\2\11\2\0\3\11\10\0\2\11"+
+ "\4\0\2\10\1\0\3\10\4\0\12\11\1\0\1\10\20\0\1\11"+
+ "\1\10\1\0\6\10\3\0\3\10\1\0\4\10\3\0\2\10\1\0"+
+ "\1\10\1\0\2\10\3\0\2\10\3\0\3\10\3\0\10\10\1\0"+
+ "\3\10\4\0\5\11\3\0\3\11\1\0\4\11\11\0\1\11\17\0"+
+ "\11\11\11\0\1\10\7\0\3\11\1\0\10\10\1\0\3\10\1\0"+
+ "\27\10\1\0\12\10\1\0\5\10\4\0\7\11\1\0\3\11\1\0"+
+ "\4\11\7\0\2\11\11\0\2\10\4\0\12\11\22\0\2\11\1\0"+
+ "\10\10\1\0\3\10\1\0\27\10\1\0\12\10\1\0\5\10\2\0"+
+ "\1\11\1\10\7\11\1\0\3\11\1\0\4\11\7\0\2\11\7\0"+
+ "\1\10\1\0\2\10\4\0\12\11\22\0\2\11\1\0\10\10\1\0"+
+ "\3\10\1\0\27\10\1\0\20\10\4\0\6\11\2\0\3\11\1\0"+
+ "\4\11\11\0\1\11\10\0\2\10\4\0\12\11\22\0\2\11\1\0"+
+ "\22\10\3\0\30\10\1\0\11\10\1\0\1\10\2\0\7\10\3\0"+
+ "\1\11\4\0\6\11\1\0\1\11\1\0\10\11\22\0\2\11\15\0"+
+ "\60\10\1\11\2\10\7\11\4\0\10\10\10\11\1\0\12\11\47\0"+
+ "\2\10\1\0\1\10\2\0\2\10\1\0\1\10\2\0\1\10\6\0"+
+ "\4\10\1\0\7\10\1\0\3\10\1\0\1\10\1\0\1\10\2\0"+
+ "\2\10\1\0\4\10\1\11\2\10\6\11\1\0\2\11\1\10\2\0"+
+ "\5\10\1\0\1\10\1\0\6\11\2\0\12\11\2\0\2\10\42\0"+
+ "\1\10\27\0\2\11\6\0\12\11\13\0\1\11\1\0\1\11\1\0"+
+ "\1\11\4\0\2\11\10\10\1\0\42\10\6\0\24\11\1\0\2\11"+
+ "\4\10\4\0\10\11\1\0\44\11\11\0\1\11\71\0\42\10\1\0"+
+ "\5\10\1\0\2\10\1\0\7\11\3\0\4\11\6\0\12\11\6\0"+
+ "\6\10\4\11\106\0\46\10\12\0\51\10\7\0\132\10\5\0\104\10"+
+ "\5\0\122\10\6\0\7\10\1\0\77\10\1\0\1\10\1\0\4\10"+
+ "\2\0\7\10\1\0\1\10\1\0\4\10\2\0\47\10\1\0\1\10"+
+ "\1\0\4\10\2\0\37\10\1\0\1\10\1\0\4\10\2\0\7\10"+
+ "\1\0\1\10\1\0\4\10\2\0\7\10\1\0\7\10\1\0\27\10"+
+ "\1\0\37\10\1\0\1\10\1\0\4\10\2\0\7\10\1\0\47\10"+
+ "\1\0\23\10\16\0\11\11\56\0\125\10\14\0\u026c\10\2\0\10\10"+
+ "\12\0\32\10\5\0\113\10\3\0\3\10\17\0\15\10\1\0\4\10"+
+ "\3\11\13\0\22\10\3\11\13\0\22\10\2\11\14\0\15\10\1\0"+
+ "\3\10\1\0\2\11\14\0\64\10\40\11\3\0\1\10\3\0\2\10"+
+ "\1\11\2\0\12\11\41\0\3\11\2\0\12\11\6\0\130\10\10\0"+
+ "\51\10\1\11\126\0\35\10\3\0\14\11\4\0\14\11\12\0\12\11"+
+ "\36\10\2\0\5\10\u038b\0\154\10\224\0\234\10\4\0\132\10\6\0"+
+ "\26\10\2\0\6\10\2\0\46\10\2\0\6\10\2\0\10\10\1\0"+
+ "\1\10\1\0\1\10\1\0\1\10\1\0\37\10\2\0\65\10\1\0"+
+ "\7\10\1\0\1\10\3\0\3\10\1\0\7\10\3\0\4\10\2\0"+
+ "\6\10\4\0\15\10\5\0\3\10\1\0\7\10\17\0\4\11\32\0"+
+ "\5\11\20\0\2\10\23\0\1\10\13\0\4\11\6\0\6\11\1\0"+
+ "\1\10\15\0\1\10\40\0\22\10\36\0\15\11\4\0\1\11\3\0"+
+ "\6\11\27\0\1\10\4\0\1\10\2\0\12\10\1\0\1\10\3\0"+
+ "\5\10\6\0\1\10\1\0\1\10\1\0\1\10\1\0\4\10\1\0"+
+ "\3\10\1\0\7\10\3\0\3\10\5\0\5\10\26\0\44\10\u0e81\0"+
+ "\3\10\31\0\11\10\6\11\1\0\5\10\2\0\5\10\4\0\126\10"+
+ "\2\0\2\11\2\0\3\10\1\0\137\10\5\0\50\10\4\0\136\10"+
+ "\21\0\30\10\70\0\20\10\u0200\0\u19b6\10\112\0\u51a6\10\132\0\u048d\10"+
+ "\u0773\0\u2ba4\10\u215c\0\u012e\10\2\0\73\10\225\0\7\10\14\0\5\10"+
+ "\5\0\1\10\1\11\12\10\1\0\15\10\1\0\5\10\1\0\1\10"+
+ "\1\0\2\10\1\0\2\10\1\0\154\10\41\0\u016b\10\22\0\100\10"+
+ "\2\0\66\10\50\0\15\10\3\0\20\11\20\0\4\11\17\0\2\10"+
+ "\30\0\3\10\31\0\1\10\6\0\5\10\1\0\207\10\2\0\1\11"+
+ "\4\0\1\10\13\0\12\11\7\0\32\10\4\0\1\10\1\0\32\10"+
+ "\12\0\132\10\3\0\6\10\2\0\6\10\2\0\6\10\2\0\3\10"+
+ "\3\0\2\10\3\0\2\10\22\0\3\11\4\0";
/**
* Translates characters to character classes
@@ -140,13 +141,15 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
- "\3\0\2\1\1\2\1\1\1\3\2\4\1\1\1\5"+
- "\2\6\1\7\1\10\1\7\2\1\1\11\1\12\1\0"+
- "\1\13\1\14\2\3\1\0\1\10\2\0\2\11\1\3"+
- "\1\0\1\10\2\0\1\15";
+ "\3\0\2\1\1\2\1\1\1\2\1\3\2\4\1\1"+
+ "\1\5\2\6\1\7\1\10\1\7\2\1\1\11\1\12"+
+ "\1\0\1\13\1\2\1\14\2\3\1\0\1\10\2\0"+
+ "\2\11\1\2\1\3\1\0\1\10\1\0\1\2\1\0"+
+ "\1\2\1\15\15\2\1\0\2\2\2\0\2\2\1\16"+
+ "\2\2";
private static int [] zzUnpackAction() {
- int [] result = new int[38];
+ int [] result = new int[66];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -171,14 +174,18 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
private static final String ZZ_ROWMAP_PACKED_0 =
- "\0\0\0\27\0\56\0\105\0\134\0\163\0\212\0\241"+
- "\0\270\0\105\0\317\0\105\0\346\0\105\0\375\0\u0114"+
- "\0\u012b\0\u0142\0\u0159\0\u0170\0\105\0\212\0\105\0\105"+
- "\0\u0187\0\u019e\0\u01b5\0\u01cc\0\u01e3\0\u0159\0\u01fa\0\105"+
- "\0\105\0\u0211\0\u0228\0\u0228\0\u023f\0\105";
+ "\0\0\0\45\0\112\0\157\0\224\0\271\0\336\0\u0103"+
+ "\0\u0128\0\u014d\0\157\0\u0172\0\157\0\u0197\0\157\0\u01bc"+
+ "\0\u01e1\0\u0206\0\u022b\0\u0250\0\u0275\0\157\0\336\0\157"+
+ "\0\u029a\0\157\0\u02bf\0\u02e4\0\u0309\0\u032e\0\u0353\0\u0250"+
+ "\0\u0378\0\157\0\u039d\0\157\0\u03c2\0\u03e7\0\u03e7\0\u040c"+
+ "\0\u0431\0\u0456\0\157\0\u047b\0\u04a0\0\u04c5\0\u04ea\0\u050f"+
+ "\0\u0534\0\u0559\0\u057e\0\u05a3\0\u05c8\0\u05ed\0\u0612\0\u0637"+
+ "\0\u065c\0\u0681\0\u06a6\0\u06cb\0\u06f0\0\u0715\0\u073a\0\157"+
+ "\0\u075f\0\u0784";
private static int [] zzUnpackRowMap() {
- int [] result = new int[38];
+ int [] result = new int[66];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -202,31 +209,105 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final String ZZ_TRANS_PACKED_0 =
"\3\4\1\5\1\6\3\4\1\7\1\4\1\6\1\7"+
- "\4\4\1\7\1\6\5\4\1\10\1\11\1\12\22\10"+
- "\1\13\1\14\1\4\1\15\1\16\1\4\1\17\1\4"+
- "\1\20\1\4\1\21\1\4\2\21\1\4\1\20\1\22"+
- "\1\23\2\21\1\4\1\20\1\24\1\4\1\25\32\0"+
- "\1\5\27\0\1\6\1\0\1\6\1\0\2\26\2\6"+
- "\1\27\1\6\2\0\1\26\1\6\1\0\1\6\7\0"+
- "\1\26\1\0\1\26\1\0\4\26\1\27\1\26\2\0"+
- "\2\26\1\0\1\26\3\0\1\10\2\0\22\10\4\0"+
- "\1\12\24\0\2\30\1\0\12\30\1\31\5\30\1\32"+
- "\3\30\2\0\1\16\30\0\1\21\1\33\1\21\1\0"+
- "\4\21\1\0\1\21\2\0\2\21\1\0\1\21\11\0"+
- "\1\20\6\0\1\20\1\0\1\34\2\35\1\0\1\20"+
- "\7\0\1\21\1\0\1\21\1\0\4\21\1\0\1\21"+
- "\2\0\2\21\1\0\1\21\11\0\1\20\6\0\1\20"+
- "\1\0\1\36\3\0\1\20\11\0\1\34\6\0\1\34"+
- "\5\0\1\34\3\0\1\24\1\37\1\40\24\24\15\0"+
- "\1\32\5\0\1\32\20\0\1\41\5\0\1\41\11\0"+
- "\1\42\6\0\1\42\5\0\1\42\11\0\1\34\6\0"+
- "\1\34\2\0\2\35\1\0\1\34\11\0\1\43\6\0"+
- "\1\43\1\44\3\0\1\44\1\43\5\0\1\40\32\0"+
- "\1\42\1\45\5\0\1\42\5\0\1\42\11\0\1\43"+
- "\6\0\1\43\5\0\1\43\31\0\1\46";
+ "\4\4\1\7\1\10\4\4\13\6\1\5\1\6\2\4"+
+ "\1\11\1\12\1\13\22\11\1\14\15\11\1\15\1\11"+
+ "\1\4\1\16\1\17\1\4\1\20\1\4\1\21\1\4"+
+ "\1\22\1\4\2\22\1\4\1\21\1\23\1\24\2\22"+
+ "\1\4\1\21\1\25\1\4\13\22\1\4\1\22\1\26"+
+ "\1\21\50\0\1\5\35\0\1\5\7\0\1\6\1\0"+
+ "\1\6\1\0\2\27\2\6\1\30\1\6\2\0\1\27"+
+ "\1\6\1\0\1\6\2\0\13\6\1\0\1\6\1\0"+
+ "\1\6\4\0\1\27\1\0\1\27\1\0\4\27\1\30"+
+ "\1\27\2\0\2\27\1\0\1\27\2\0\13\27\1\0"+
+ "\1\27\1\0\1\27\4\0\1\6\1\0\1\6\1\0"+
+ "\2\27\2\6\1\30\1\6\2\0\1\27\1\6\1\0"+
+ "\1\6\2\0\1\31\12\6\1\0\1\6\1\0\1\6"+
+ "\1\11\2\0\22\11\1\0\15\11\1\0\1\11\2\0"+
+ "\1\13\42\0\2\32\1\0\12\32\1\33\5\32\1\34"+
+ "\20\32\1\33\2\0\1\17\46\0\1\22\1\35\1\22"+
+ "\1\0\4\22\1\0\1\22\2\0\2\22\1\0\1\22"+
+ "\2\0\13\22\1\0\1\22\1\0\1\22\6\0\1\21"+
+ "\6\0\1\21\1\0\1\36\2\37\1\0\1\21\20\0"+
+ "\1\21\4\0\1\22\1\0\1\22\1\0\4\22\1\0"+
+ "\1\22\2\0\2\22\1\0\1\22\2\0\13\22\1\0"+
+ "\1\22\1\0\1\22\6\0\1\21\6\0\1\21\1\0"+
+ "\1\40\3\0\1\21\20\0\1\21\6\0\1\36\6\0"+
+ "\1\36\5\0\1\36\20\0\1\36\1\25\1\41\1\42"+
+ "\42\25\4\0\1\6\1\0\1\6\1\0\2\27\2\6"+
+ "\1\30\1\6\2\0\1\27\1\6\1\0\1\6\2\0"+
+ "\1\6\1\43\11\6\1\0\1\6\1\0\1\6\15\0"+
+ "\1\34\5\0\1\34\20\0\1\34\15\0\1\44\5\0"+
+ "\1\44\20\0\1\44\6\0\1\45\6\0\1\45\5\0"+
+ "\1\45\20\0\1\45\6\0\1\36\6\0\1\36\2\0"+
+ "\2\37\1\0\1\36\20\0\1\36\6\0\1\46\6\0"+
+ "\1\46\1\47\3\0\1\47\1\46\20\0\1\46\2\0"+
+ "\1\42\46\0\1\6\1\0\1\6\1\0\2\27\2\6"+
+ "\1\30\1\6\2\0\1\27\1\50\1\0\1\6\2\0"+
+ "\13\6\1\0\1\6\1\0\1\6\6\0\1\45\1\51"+
+ "\5\0\1\45\5\0\1\45\20\0\1\45\6\0\1\46"+
+ "\6\0\1\46\5\0\1\46\20\0\1\46\4\0\1\6"+
+ "\1\0\1\6\1\0\2\27\2\6\1\30\1\6\2\0"+
+ "\1\27\1\6\1\0\1\6\2\0\2\6\1\52\10\6"+
+ "\1\0\1\6\1\0\1\6\43\0\1\53\5\0\1\6"+
+ "\1\0\1\6\1\0\2\27\2\6\1\30\1\6\2\0"+
+ "\1\27\1\6\1\0\1\6\2\0\3\6\1\54\7\6"+
+ "\1\0\1\6\1\0\1\6\4\0\1\6\1\0\1\6"+
+ "\1\0\2\27\2\6\1\30\1\6\2\0\1\27\1\6"+
+ "\1\0\1\6\2\0\4\6\1\55\6\6\1\0\1\6"+
+ "\1\0\1\6\4\0\1\6\1\0\1\6\1\0\2\27"+
+ "\2\6\1\30\1\6\2\0\1\27\1\6\1\0\1\6"+
+ "\2\0\5\6\1\56\5\6\1\0\1\6\1\0\1\6"+
+ "\4\0\1\6\1\0\1\6\1\0\2\27\2\6\1\30"+
+ "\1\6\2\0\1\27\1\6\1\0\1\6\2\0\6\6"+
+ "\1\57\4\6\1\0\1\6\1\0\1\6\4\0\1\6"+
+ "\1\0\1\6\1\0\2\27\2\6\1\30\1\6\2\0"+
+ "\1\27\1\60\1\0\1\6\2\0\3\6\1\61\3\6"+
+ "\1\62\3\6\1\0\1\6\1\0\1\6\4\0\1\6"+
+ "\1\0\1\6\1\0\2\27\2\6\1\30\1\6\2\0"+
+ "\1\27\1\6\1\0\1\6\2\0\6\6\1\63\4\6"+
+ "\1\0\1\6\1\0\1\6\4\0\1\6\1\0\1\6"+
+ "\1\0\2\27\2\6\1\30\1\6\2\0\1\27\1\6"+
+ "\1\0\1\6\2\0\10\6\1\64\2\6\1\0\1\6"+
+ "\1\0\1\6\4\0\1\6\1\0\1\6\1\0\2\27"+
+ "\2\6\1\30\1\6\2\0\1\27\1\6\1\0\1\6"+
+ "\2\0\3\6\1\65\7\6\1\0\1\6\1\0\1\6"+
+ "\4\0\1\6\1\0\1\6\1\0\2\27\2\6\1\30"+
+ "\1\6\2\0\1\27\1\6\1\0\1\6\2\0\12\6"+
+ "\1\66\1\0\1\6\1\0\1\6\4\0\1\6\1\0"+
+ "\1\6\1\0\2\27\2\6\1\30\1\6\2\0\1\27"+
+ "\1\6\1\0\1\6\2\0\11\6\1\67\1\6\1\0"+
+ "\1\6\1\0\1\6\4\0\1\6\1\0\1\6\1\0"+
+ "\2\27\2\6\1\30\1\6\2\0\1\27\1\6\1\0"+
+ "\1\6\2\0\10\6\1\70\2\6\1\0\1\6\1\0"+
+ "\1\6\4\0\1\6\1\0\1\6\1\0\2\27\2\6"+
+ "\1\30\1\6\2\0\1\27\1\6\1\0\1\6\2\0"+
+ "\13\6\1\71\1\6\1\0\1\6\4\0\1\6\1\0"+
+ "\1\6\1\0\2\27\2\6\1\30\1\6\2\0\1\27"+
+ "\1\6\1\0\1\6\2\0\13\6\1\0\1\72\1\0"+
+ "\1\6\4\0\1\6\1\0\1\6\1\0\2\27\2\6"+
+ "\1\30\1\6\2\0\1\27\1\6\1\0\1\6\2\0"+
+ "\11\6\1\73\1\6\1\0\1\6\1\0\1\6\6\0"+
+ "\1\74\6\0\1\75\5\0\1\74\20\0\1\74\4\0"+
+ "\1\6\1\0\1\6\1\0\2\27\2\6\1\30\1\6"+
+ "\2\0\1\27\1\76\1\0\1\6\2\0\13\6\1\0"+
+ "\1\6\1\0\1\6\4\0\1\6\1\0\1\6\1\0"+
+ "\2\27\2\6\1\30\1\6\2\0\1\27\1\6\1\0"+
+ "\1\6\2\0\3\6\1\77\7\6\1\0\1\6\1\0"+
+ "\1\6\6\0\1\74\5\0\1\100\1\74\5\0\1\74"+
+ "\20\0\1\74\14\0\1\100\34\0\1\6\1\0\1\6"+
+ "\1\0\2\27\2\6\1\30\1\6\2\0\1\27\1\6"+
+ "\1\0\1\6\2\0\3\6\1\66\7\6\1\0\1\6"+
+ "\1\0\1\6\4\0\1\6\1\0\1\101\1\0\2\27"+
+ "\2\6\1\30\1\102\2\0\1\27\1\6\1\0\1\101"+
+ "\2\0\13\6\1\0\1\6\1\0\1\101\4\0\1\6"+
+ "\1\0\1\101\1\0\2\27\2\6\1\100\1\101\2\0"+
+ "\1\27\1\6\1\0\1\101\2\0\13\6\1\0\1\6"+
+ "\1\0\1\101\4\0\1\6\1\0\1\6\1\0\2\27"+
+ "\2\6\1\100\1\6\2\0\1\27\1\6\1\0\1\6"+
+ "\2\0\13\6\1\0\1\6\1\0\1\6";
private static int [] zzUnpackTrans() {
- int [] result = new int[598];
+ int [] result = new int[1961];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -264,12 +345,14 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
- "\3\0\1\11\5\1\1\11\1\1\1\11\1\1\1\11"+
- "\6\1\1\11\1\0\2\11\2\1\1\0\1\1\2\0"+
- "\1\1\2\11\1\0\1\1\2\0\1\11";
+ "\3\0\1\11\6\1\1\11\1\1\1\11\1\1\1\11"+
+ "\6\1\1\11\1\0\1\11\1\1\1\11\2\1\1\0"+
+ "\1\1\2\0\1\1\1\11\1\1\1\11\1\0\1\1"+
+ "\1\0\1\1\1\0\1\1\1\11\15\1\1\0\2\1"+
+ "\2\0\2\1\1\11\2\1";
private static int [] zzUnpackAttribute() {
- int [] result = new int[38];
+ int [] result = new int[66];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -387,7 +470,7 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
- while (i < 1702) {
+ while (i < 1734) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
@@ -665,63 +748,67 @@ public final class Flasm3Lexer extends DefaultJFlexLexer {
return token(TokenType.STRING, tokenStart, tokenLength + 1);
}
}
- case 14: break;
+ case 15: break;
case 9:
{ yybegin(YYINITIAL); return token(TokenType.COMMENT);
}
- case 15: break;
+ case 16: break;
case 4:
{ yybegin(YYINITIAL);
return token(TokenType.ERROR,tokenStart, tokenLength);
}
- case 16: break;
+ case 17: break;
+ case 14:
+ { return token(TokenType.KEYWORD);
+ }
+ case 18: break;
case 11:
{ return token(TokenType.IDENTIFIER,yychar,yylength()-1);
}
- case 17: break;
+ case 19: break;
case 10:
{ yybegin(STRING);
tokenStart = yychar;
tokenLength = 1;
isMultiname=false;
}
- case 18: break;
+ case 20: break;
case 13:
{ isMultiname=true;
yybegin(STRING);
tokenStart = yychar;
tokenLength = yylength();
}
- case 19: break;
+ case 21: break;
case 12:
{ tokenLength += 2;
}
- case 20: break;
+ case 22: break;
case 7:
{ return token(TokenType.IDENTIFIER);
}
- case 21: break;
+ case 23: break;
case 2:
{ yybegin(PARAMETERS);
return token(TokenType.KEYWORD);
}
- case 22: break;
+ case 24: break;
case 8:
{ return token(TokenType.NUMBER);
}
- case 23: break;
+ case 25: break;
case 6:
{ yybegin(YYINITIAL);
}
- case 24: break;
+ case 26: break;
case 1:
{
}
- case 25: break;
+ case 27: break;
case 3:
{ tokenLength += yylength();
}
- case 26: break;
+ case 28: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/jsyntaxpane-0.9.5.jar b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/jsyntaxpane-0.9.5.jar
index e20d1fafe..911a4c945 100644
Binary files a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/jsyntaxpane-0.9.5.jar and b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/jsyntaxpane-0.9.5.jar differ
diff --git a/trunk/manifest.mf b/trunk/manifest.mf
new file mode 100644
index 000000000..1574df4a2
--- /dev/null
+++ b/trunk/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/trunk/nbbuild.xml b/trunk/nbbuild.xml
new file mode 100644
index 000000000..8c5c8b9df
--- /dev/null
+++ b/trunk/nbbuild.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ Builds, tests, and runs the project ASDec.
+
+
+
diff --git a/trunk/nbproject/build-impl.xml b/trunk/nbproject/build-impl.xml
new file mode 100644
index 000000000..ca54e3081
--- /dev/null
+++ b/trunk/nbproject/build-impl.xml
@@ -0,0 +1,891 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set src.dir
+ Must set test.src.dir
+ Must set build.dir
+ Must set dist.dir
+ Must set build.classes.dir
+ Must set dist.javadoc.dir
+ Must set build.test.classes.dir
+ Must set build.test.results.dir
+ Must set build.classes.excludes
+ Must set dist.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+
+
+
+
+
+ java -cp "${run.classpath.with.dist.jar}" ${main.class}
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must set fix.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/trunk/nbproject/configs/Basic_run.properties b/trunk/nbproject/configs/Basic_run.properties
new file mode 100644
index 000000000..61ccf4161
--- /dev/null
+++ b/trunk/nbproject/configs/Basic_run.properties
@@ -0,0 +1,2 @@
+$label=Basic run
+main.class=com.jpexs.asdec.Main
diff --git a/trunk/nbproject/configs/Proxy.properties b/trunk/nbproject/configs/Proxy.properties
new file mode 100644
index 000000000..b7ea418bf
--- /dev/null
+++ b/trunk/nbproject/configs/Proxy.properties
@@ -0,0 +1 @@
+main.class=com.jpexs.asdec.Main
diff --git a/trunk/nbproject/configs/as3.properties b/trunk/nbproject/configs/as3.properties
new file mode 100644
index 000000000..b7ea418bf
--- /dev/null
+++ b/trunk/nbproject/configs/as3.properties
@@ -0,0 +1 @@
+main.class=com.jpexs.asdec.Main
diff --git a/trunk/nbproject/configs/as3_secure.swf.properties b/trunk/nbproject/configs/as3_secure.swf.properties
new file mode 100644
index 000000000..b7ea418bf
--- /dev/null
+++ b/trunk/nbproject/configs/as3_secure.swf.properties
@@ -0,0 +1 @@
+main.class=com.jpexs.asdec.Main
diff --git a/trunk/nbproject/genfiles.properties b/trunk/nbproject/genfiles.properties
new file mode 100644
index 000000000..6735c9257
--- /dev/null
+++ b/trunk/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+nbbuild.xml.data.CRC32=6767af7d
+nbbuild.xml.script.CRC32=36cc2633
+nbbuild.xml.stylesheet.CRC32=28e38971@1.38.2.45
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=6767af7d
+nbproject/build-impl.xml.script.CRC32=94147f4c
+nbproject/build-impl.xml.stylesheet.CRC32=f33e10ff@1.38.2.45
diff --git a/trunk/nbproject/project.properties b/trunk/nbproject/project.properties
new file mode 100644
index 000000000..f1339e47c
--- /dev/null
+++ b/trunk/nbproject/project.properties
@@ -0,0 +1,85 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=ASDec
+application.vendor=JPEXS
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+buildfile=nbbuild.xml
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/ASDec.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.emma.jar=testlib\\emma.jar
+file.reference.emma_ant.jar=testlib\\emma_ant.jar
+file.reference.jpproxy.jar=lib\\jpproxy.jar
+file.reference.jsyntaxpane-0.9.5.jar=lib\\jsyntaxpane-0.9.5.jar
+file.reference.junit-4.8.2.jar=testlib\\junit-4.8.2.jar
+file.reference.trunk-src=src
+file.reference.trunk-test=test
+includes=**
+jar.compress=false
+javac.classpath=\
+ ${file.reference.jpproxy.jar}:\
+ ${file.reference.jsyntaxpane-0.9.5.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}:\
+ ${file.reference.emma.jar}:\
+ ${file.reference.emma_ant.jar}:\
+ ${file.reference.junit-4.8.2.jar}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=${file.reference.trunk-src}
+test.src.dir=${file.reference.trunk-test}
+project.license=gpl20
\ No newline at end of file
diff --git a/trunk/nbproject/project.xml b/trunk/nbproject/project.xml
new file mode 100644
index 000000000..5d8f89fff
--- /dev/null
+++ b/trunk/nbproject/project.xml
@@ -0,0 +1,15 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+ ASDec
+
+
+
+
+
+
+
+
+
diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java
index d43756d28..6a1b958af 100644
--- a/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java
+++ b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java
@@ -337,8 +337,12 @@ public class AVM2Code {
return null;
}
- public String toASMSource(ConstantPool constants) {
+ public String toASMSource(ConstantPool constants,MethodBody body) {
String ret = "";
+ for(int e=0;e
offsets = new ArrayList();
for (AVM2Instruction ins : code) {
offsets.addAll(ins.getOffsets());
@@ -348,6 +352,17 @@ public class AVM2Code {
if (offsets.contains(ofs)) {
ret += "ofs" + Helper.formatAddress(ofs) + ":";
}
+ for(int e=0;e offsetItems = new ArrayList();
List labelItems = new ArrayList();
+ List exceptions=new ArrayList();
+ List exceptionIndices=new ArrayList();
int offset = 0;
Flasm3Lexer lexer = new Flasm3Lexer(is);
@@ -79,6 +83,33 @@ public class ASM3Parser {
AVM2Instruction lastIns = null;
do {
symb = lexer.yylex();
+ if (symb.type == ParsedSymbol.TYPE_EXCEPTION_START){
+ int exIndex=(Integer)symb.value;
+ int listIndex=exceptionIndices.indexOf(exIndex);
+ if(listIndex==-1){
+ throw new ParseException("Undefinex exception index", lexer.yyline());
+ }
+ exceptions.get(listIndex).start=offset;
+ continue;
+ }
+ if (symb.type == ParsedSymbol.TYPE_EXCEPTION_END){
+ int exIndex=(Integer)symb.value;
+ int listIndex=exceptionIndices.indexOf(exIndex);
+ if(listIndex==-1){
+ throw new ParseException("Undefinex exception index", lexer.yyline());
+ }
+ exceptions.get(listIndex).end=offset;
+ continue;
+ }
+ if (symb.type == ParsedSymbol.TYPE_EXCEPTION_TARGET){
+ int exIndex=(Integer)symb.value;
+ int listIndex=exceptionIndices.indexOf(exIndex);
+ if(listIndex==-1){
+ throw new ParseException("Undefinex exception index", lexer.yyline());
+ }
+ exceptions.get(listIndex).target=offset;
+ continue;
+ }
if (symb.type == ParsedSymbol.TYPE_EOF) break;
if (symb.type == ParsedSymbol.TYPE_COMMENT) {
if (lastIns != null) {
@@ -87,6 +118,26 @@ public class ASM3Parser {
continue;
}
if (symb.type == ParsedSymbol.TYPE_INSTRUCTION_NAME) {
+ if(((String)symb.value).toLowerCase().equals("exception")){
+ ParsedSymbol exIndex = lexer.yylex();
+ if (exIndex.type != ParsedSymbol.TYPE_INTEGER) {
+ throw new ParseException("Index expected", lexer.yyline());
+ }
+ ParsedSymbol exName = lexer.yylex();
+ if (exName.type != ParsedSymbol.TYPE_MULTINAME) {
+ throw new ParseException("Multiname expected", lexer.yyline());
+ }
+ ParsedSymbol exType = lexer.yylex();
+ if (exType.type != ParsedSymbol.TYPE_MULTINAME) {
+ throw new ParseException("Multiname expected", lexer.yyline());
+ }
+ ABCException ex=new ABCException();
+ ex.name_index=(int) (long) (Long)exName.value;
+ ex.type_index=(int) (long) (Long)exType.value;
+ exceptions.add(ex);
+ exceptionIndices.add((int)(long)(Long)exIndex.value);
+ continue;
+ }
boolean insFound = false;
for (InstructionDefinition def : AVM2Code.instructionSet) {
if (def.instructionName.equals((String) symb.value)) {
@@ -251,207 +302,10 @@ public class ASM3Parser {
}
}
}
-
- /* BufferedReader br = new BufferedReader(new InputStreamReader(is));
- String s = "";
- Pattern patInsName = Pattern.compile("^([a-z0-9_]+) ");
- Pattern patLabelName = Pattern.compile("^([a-zA-Z_0-9]+): ");
- Pattern patInt = Pattern.compile("^([+-]?[0-9]+) ");
- Pattern patDouble = Pattern.compile("^([+-]?[0-9e.]+) ");
- Pattern patMultiname = Pattern.compile("^m\\[([0-9]+)\\]\"[^\"]*\" ");
- Pattern patString = Pattern.compile("\"([^\"]*)\" ");
- Pattern patofs = Pattern.compile("^([a-zA-Z_0-9]+) ");
-
-
- long line = 0;
-
- while ((s = br.readLine()) != null) {
- line++;
- s += " ";
- Matcher m = patInsName.matcher(s);
- if (m.find()) {
- String insName = m.group(1);
- boolean insFound = false;
- for (InstructionDefinition def : AVM2Code.instructionSet) {
- if (def.instructionName.equals(insName)) {
- insFound = true;
- s = s.substring(insName.length() + 1);
- List operandsList = new ArrayList();
-
- for (int i = 0; i < def.operands.length; i++) {
- switch (def.operands[i]) {
- case AVM2Code.DAT_MULTINAME_INDEX:
- m = patMultiname.matcher(s);
- if (m.find()) {
- operandsList.add(Integer.parseInt(m.group(1)));
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid multiname", line);
- }
- break;
- case AVM2Code.DAT_STRING_INDEX:
- m = patString.matcher(s);
- if (m.find()) {
- String str = m.group(1);
- int sid = constants.getStringId(str);
- if (sid == 0) {
- if((missingHandler!=null)&&(missingHandler.missingString(str))){
- sid=constants.addString(str);
- }else{
- throw new ParseException("Unknown String", line);
- }
- }
- operandsList.add(sid);
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid String", line);
- }
- break;
- case AVM2Code.DAT_INT_INDEX:
- m = patInt.matcher(s);
- if (m.find()) {
- long intVal=Integer.parseInt(m.group(1));
- int iid = constants.getIntId(intVal);
- if (iid == 0) {
- if((missingHandler!=null)&&(missingHandler.missingInt(intVal))){
- iid=constants.addInt(intVal);
- }else{
- throw new ParseException("Unknown int", line);
- }
- }
- operandsList.add(iid);
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid int value", line);
- }
- break;
- case AVM2Code.DAT_UINT_INDEX:
- m = patInt.matcher(s);
- if (m.find()) {
- long intVal=Integer.parseInt(m.group(1));
- int iid = constants.getUIntId(intVal);
- if (iid == 0) {
- if((missingHandler!=null)&&(missingHandler.missingUInt(intVal))){
- iid=constants.addUInt(intVal);
- }else{
- throw new ParseException("Unknown uint", line);
- }
- }
- operandsList.add(iid);
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid uint value", line);
- }
- break;
- case AVM2Code.DAT_DOUBLE_INDEX:
- m = patDouble.matcher(s);
- if (m.find()) {
- double doubleVal=Double.parseDouble(m.group(1));
- int did = constants.getDoubleId(doubleVal);
- if (did == 0) {
- if((missingHandler!=null)&&(missingHandler.missingDouble(doubleVal))){
- did=constants.addDouble(doubleVal);
- }else{
- throw new ParseException("Unknown double", line);
- }
- }
- operandsList.add(did);
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid double value", line);
- }
- break;
- case AVM2Code.DAT_OFFSET:
- m = patofs.matcher(s);
- if (m.find()) {
- offsetItems.add(new OffsetItem(m.group(1), code.code.size(), i));
- operandsList.add(0);
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid offset value", line);
- }
- break;
- case AVM2Code.DAT_CASE_BASEOFFSET:
- m = patofs.matcher(s);
- if (m.find()) {
- offsetItems.add(new CaseOffsetItem(m.group(1), code.code.size(), i));
- operandsList.add(0);
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid offset value", line);
- }
- break;
- case AVM2Code.OPT_CASE_OFFSETS:
- m = patInt.matcher(s);
- if (m.find()) {
- int patCount = Integer.parseInt(m.group(1));
- operandsList.add(patCount);
- s = s.substring(m.group(0).length());
- m = patofs.matcher(s);
- int k = 1;
- for (int c = 0; c <= patCount; c++) {
- if (m.find()) {
- offsetItems.add(new CaseOffsetItem(m.group(1), code.code.size(), i + k));
- operandsList.add(0);
- s = s.substring(m.group(0).length());
- m = patofs.matcher(s);
- k++;
- } else {
- throw new ParseException("Invalid case count", line);
- }
- }
- } else {
- throw new ParseException("Invalid case count", line);
- }
- break;
- default:
- m = patInt.matcher(s);
- if (m.find()) {
- operandsList.add(Integer.parseInt(m.group(1)));
- s = s.substring(m.group(0).length());
- } else {
- throw new ParseException("Invalid value", line);
- }
- }
- }
-
- int operands[] = new int[operandsList.size()];
- for (int i = 0; i < operandsList.size(); i++) {
- operands[i] = operandsList.get(i);
- }
- AVM2Instruction ins = new AVM2Instruction(offset, def, operands, new byte[0]);
- code.code.add(ins);
- offset += ins.getBytes().length;
- break;
- }
- }
- if (!insFound) {
- throw new ParseException("Invalid instruction name:" + insName, line);
- }
- } else {
- m = patLabelName.matcher(s);
- if (m.find()) {
- labelItems.add(new LabelItem(m.group(1), offset));
- } else {
- throw new ParseException("Invalid instruction name", line);
- }
- }
+ body.exceptions=new ABCException[exceptions.size()];
+ for(int e=0;eJFlex 1.4.3
- * on 18.8.10 12:17 from the specification file
+ * on 19.9.10 10:36 from the specification file
* D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex
*/
public final class Flasm3Lexer {
- /**
- * 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 STRING = 2;
- public static final int YYINITIAL = 0;
- public static final int PARAMETERS = 4;
+ /** lexical states */
+ public static final int STRING = 2;
+ public static final int YYINITIAL = 0;
+ 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\12\1\4\1\2\1\0\1\4\1\1\16\12\4\0\1\4\1\0" +
- "\1\26\1\0\1\11\2\0\1\34\3\0\1\23\1\0\1\17\1\20" +
- "\1\0\1\16\3\35\4\24\2\7\1\15\1\3\5\0\4\11\1\21" +
- "\25\11\1\6\1\25\1\10\1\0\1\14\1\0\1\13\1\27\2\13" +
- "\1\22\1\32\6\13\1\5\1\31\3\13\1\33\1\13\1\30\6\13" +
- "\4\0\41\12\2\0\4\11\4\0\1\11\2\0\1\12\7\0\1\11" +
- "\4\0\1\11\5\0\27\11\1\0\37\11\1\0\u013f\11\31\0\162\11" +
- "\4\0\14\11\16\0\5\11\11\0\1\11\21\0\130\12\5\0\23\12" +
- "\12\0\1\11\13\0\1\11\1\0\3\11\1\0\1\11\1\0\24\11" +
- "\1\0\54\11\1\0\46\11\1\0\5\11\4\0\202\11\1\0\4\12" +
- "\3\0\105\11\1\0\46\11\2\0\2\11\6\0\20\11\41\0\46\11" +
- "\2\0\1\11\7\0\47\11\11\0\21\12\1\0\27\12\1\0\3\12" +
- "\1\0\1\12\1\0\2\12\1\0\1\12\13\0\33\11\5\0\3\11" +
- "\15\0\4\12\14\0\6\12\13\0\32\11\5\0\13\11\16\12\7\0" +
- "\12\12\4\0\2\11\1\12\143\11\1\0\1\11\10\12\1\0\6\12" +
- "\2\11\2\12\1\0\4\12\2\11\12\12\3\11\2\0\1\11\17\0" +
- "\1\12\1\11\1\12\36\11\33\12\2\0\3\11\60\0\46\11\13\12" +
- "\1\11\u014f\0\3\12\66\11\2\0\1\12\1\11\20\12\2\0\1\11" +
- "\4\12\3\0\12\11\2\12\2\0\12\12\21\0\3\12\1\0\10\11" +
- "\2\0\2\11\2\0\26\11\1\0\7\11\1\0\1\11\3\0\4\11" +
- "\2\0\1\12\1\11\7\12\2\0\2\12\2\0\3\12\11\0\1\12" +
- "\4\0\2\11\1\0\3\11\2\12\2\0\12\12\4\11\15\0\3\12" +
- "\1\0\6\11\4\0\2\11\2\0\26\11\1\0\7\11\1\0\2\11" +
- "\1\0\2\11\1\0\2\11\2\0\1\12\1\0\5\12\4\0\2\12" +
- "\2\0\3\12\13\0\4\11\1\0\1\11\7\0\14\12\3\11\14\0" +
- "\3\12\1\0\11\11\1\0\3\11\1\0\26\11\1\0\7\11\1\0" +
- "\2\11\1\0\5\11\2\0\1\12\1\11\10\12\1\0\3\12\1\0" +
- "\3\12\2\0\1\11\17\0\2\11\2\12\2\0\12\12\1\0\1\11" +
- "\17\0\3\12\1\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11" +
- "\1\0\2\11\1\0\5\11\2\0\1\12\1\11\6\12\3\0\2\12" +
- "\2\0\3\12\10\0\2\12\4\0\2\11\1\0\3\11\4\0\12\12" +
- "\1\0\1\11\20\0\1\12\1\11\1\0\6\11\3\0\3\11\1\0" +
- "\4\11\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0" +
- "\3\11\3\0\10\11\1\0\3\11\4\0\5\12\3\0\3\12\1\0" +
- "\4\12\11\0\1\12\17\0\11\12\11\0\1\11\7\0\3\12\1\0" +
- "\10\11\1\0\3\11\1\0\27\11\1\0\12\11\1\0\5\11\4\0" +
- "\7\12\1\0\3\12\1\0\4\12\7\0\2\12\11\0\2\11\4\0" +
- "\12\12\22\0\2\12\1\0\10\11\1\0\3\11\1\0\27\11\1\0" +
- "\12\11\1\0\5\11\2\0\1\12\1\11\7\12\1\0\3\12\1\0" +
- "\4\12\7\0\2\12\7\0\1\11\1\0\2\11\4\0\12\12\22\0" +
- "\2\12\1\0\10\11\1\0\3\11\1\0\27\11\1\0\20\11\4\0" +
- "\6\12\2\0\3\12\1\0\4\12\11\0\1\12\10\0\2\11\4\0" +
- "\12\12\22\0\2\12\1\0\22\11\3\0\30\11\1\0\11\11\1\0" +
- "\1\11\2\0\7\11\3\0\1\12\4\0\6\12\1\0\1\12\1\0" +
- "\10\12\22\0\2\12\15\0\60\11\1\12\2\11\7\12\4\0\10\11" +
- "\10\12\1\0\12\12\47\0\2\11\1\0\1\11\2\0\2\11\1\0" +
- "\1\11\2\0\1\11\6\0\4\11\1\0\7\11\1\0\3\11\1\0" +
- "\1\11\1\0\1\11\2\0\2\11\1\0\4\11\1\12\2\11\6\12" +
- "\1\0\2\12\1\11\2\0\5\11\1\0\1\11\1\0\6\12\2\0" +
- "\12\12\2\0\2\11\42\0\1\11\27\0\2\12\6\0\12\12\13\0" +
- "\1\12\1\0\1\12\1\0\1\12\4\0\2\12\10\11\1\0\42\11" +
- "\6\0\24\12\1\0\2\12\4\11\4\0\10\12\1\0\44\12\11\0" +
- "\1\12\71\0\42\11\1\0\5\11\1\0\2\11\1\0\7\12\3\0" +
- "\4\12\6\0\12\12\6\0\6\11\4\12\106\0\46\11\12\0\51\11" +
- "\7\0\132\11\5\0\104\11\5\0\122\11\6\0\7\11\1\0\77\11" +
- "\1\0\1\11\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11" +
- "\2\0\47\11\1\0\1\11\1\0\4\11\2\0\37\11\1\0\1\11" +
- "\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11\2\0\7\11" +
- "\1\0\7\11\1\0\27\11\1\0\37\11\1\0\1\11\1\0\4\11" +
- "\2\0\7\11\1\0\47\11\1\0\23\11\16\0\11\12\56\0\125\11" +
- "\14\0\u026c\11\2\0\10\11\12\0\32\11\5\0\113\11\3\0\3\11" +
- "\17\0\15\11\1\0\4\11\3\12\13\0\22\11\3\12\13\0\22\11" +
- "\2\12\14\0\15\11\1\0\3\11\1\0\2\12\14\0\64\11\40\12" +
- "\3\0\1\11\3\0\2\11\1\12\2\0\12\12\41\0\3\12\2\0" +
- "\12\12\6\0\130\11\10\0\51\11\1\12\126\0\35\11\3\0\14\12" +
- "\4\0\14\12\12\0\12\12\36\11\2\0\5\11\u038b\0\154\11\224\0" +
- "\234\11\4\0\132\11\6\0\26\11\2\0\6\11\2\0\46\11\2\0" +
- "\6\11\2\0\10\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0" +
- "\37\11\2\0\65\11\1\0\7\11\1\0\1\11\3\0\3\11\1\0" +
- "\7\11\3\0\4\11\2\0\6\11\4\0\15\11\5\0\3\11\1\0" +
- "\7\11\17\0\4\12\32\0\5\12\20\0\2\11\23\0\1\11\13\0" +
- "\4\12\6\0\6\12\1\0\1\11\15\0\1\11\40\0\22\11\36\0" +
- "\15\12\4\0\1\12\3\0\6\12\27\0\1\11\4\0\1\11\2\0" +
- "\12\11\1\0\1\11\3\0\5\11\6\0\1\11\1\0\1\11\1\0" +
- "\1\11\1\0\4\11\1\0\3\11\1\0\7\11\3\0\3\11\5\0" +
- "\5\11\26\0\44\11\u0e81\0\3\11\31\0\11\11\6\12\1\0\5\11" +
- "\2\0\5\11\4\0\126\11\2\0\2\12\2\0\3\11\1\0\137\11" +
- "\5\0\50\11\4\0\136\11\21\0\30\11\70\0\20\11\u0200\0\u19b6\11" +
- "\112\0\u51a6\11\132\0\u048d\11\u0773\0\u2ba4\11\u215c\0\u012e\11\2\0\73\11" +
- "\225\0\7\11\14\0\5\11\5\0\1\11\1\12\12\11\1\0\15\11" +
- "\1\0\5\11\1\0\1\11\1\0\2\11\1\0\2\11\1\0\154\11" +
- "\41\0\u016b\11\22\0\100\11\2\0\66\11\50\0\15\11\3\0\20\12" +
- "\20\0\4\12\17\0\2\11\30\0\3\11\31\0\1\11\6\0\5\11" +
- "\1\0\207\11\2\0\1\12\4\0\1\11\13\0\12\12\7\0\32\11" +
- "\4\0\1\11\1\0\32\11\12\0\132\11\3\0\6\11\2\0\6\11" +
- "\2\0\6\11\2\0\3\11\3\0\2\11\3\0\2\11\22\0\3\12" +
- "\4\0";
+ /**
+ * Translates characters to character classes
+ */
+ private static final String ZZ_CMAP_PACKED =
+ "\11\12\1\4\1\2\1\0\1\4\1\1\16\12\4\0\1\40\1\0"+
+ "\1\43\1\0\1\11\2\0\1\46\3\0\1\23\1\0\1\17\1\20"+
+ "\1\0\1\16\3\47\4\24\2\7\1\15\1\3\5\0\4\11\1\21"+
+ "\25\11\1\6\1\25\1\10\1\0\1\14\1\0\1\36\1\44\1\27"+
+ "\1\41\1\22\1\45\1\42\1\13\1\32\3\13\1\5\1\34\1\33"+
+ "\1\30\1\13\1\37\1\35\1\31\3\13\1\26\2\13\4\0\41\12"+
+ "\2\0\4\11\4\0\1\11\2\0\1\12\7\0\1\11\4\0\1\11"+
+ "\5\0\27\11\1\0\37\11\1\0\u013f\11\31\0\162\11\4\0\14\11"+
+ "\16\0\5\11\11\0\1\11\21\0\130\12\5\0\23\12\12\0\1\11"+
+ "\13\0\1\11\1\0\3\11\1\0\1\11\1\0\24\11\1\0\54\11"+
+ "\1\0\46\11\1\0\5\11\4\0\202\11\1\0\4\12\3\0\105\11"+
+ "\1\0\46\11\2\0\2\11\6\0\20\11\41\0\46\11\2\0\1\11"+
+ "\7\0\47\11\11\0\21\12\1\0\27\12\1\0\3\12\1\0\1\12"+
+ "\1\0\2\12\1\0\1\12\13\0\33\11\5\0\3\11\15\0\4\12"+
+ "\14\0\6\12\13\0\32\11\5\0\13\11\16\12\7\0\12\12\4\0"+
+ "\2\11\1\12\143\11\1\0\1\11\10\12\1\0\6\12\2\11\2\12"+
+ "\1\0\4\12\2\11\12\12\3\11\2\0\1\11\17\0\1\12\1\11"+
+ "\1\12\36\11\33\12\2\0\3\11\60\0\46\11\13\12\1\11\u014f\0"+
+ "\3\12\66\11\2\0\1\12\1\11\20\12\2\0\1\11\4\12\3\0"+
+ "\12\11\2\12\2\0\12\12\21\0\3\12\1\0\10\11\2\0\2\11"+
+ "\2\0\26\11\1\0\7\11\1\0\1\11\3\0\4\11\2\0\1\12"+
+ "\1\11\7\12\2\0\2\12\2\0\3\12\11\0\1\12\4\0\2\11"+
+ "\1\0\3\11\2\12\2\0\12\12\4\11\15\0\3\12\1\0\6\11"+
+ "\4\0\2\11\2\0\26\11\1\0\7\11\1\0\2\11\1\0\2\11"+
+ "\1\0\2\11\2\0\1\12\1\0\5\12\4\0\2\12\2\0\3\12"+
+ "\13\0\4\11\1\0\1\11\7\0\14\12\3\11\14\0\3\12\1\0"+
+ "\11\11\1\0\3\11\1\0\26\11\1\0\7\11\1\0\2\11\1\0"+
+ "\5\11\2\0\1\12\1\11\10\12\1\0\3\12\1\0\3\12\2\0"+
+ "\1\11\17\0\2\11\2\12\2\0\12\12\1\0\1\11\17\0\3\12"+
+ "\1\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0\2\11"+
+ "\1\0\5\11\2\0\1\12\1\11\6\12\3\0\2\12\2\0\3\12"+
+ "\10\0\2\12\4\0\2\11\1\0\3\11\4\0\12\12\1\0\1\11"+
+ "\20\0\1\12\1\11\1\0\6\11\3\0\3\11\1\0\4\11\3\0"+
+ "\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0\3\11\3\0"+
+ "\10\11\1\0\3\11\4\0\5\12\3\0\3\12\1\0\4\12\11\0"+
+ "\1\12\17\0\11\12\11\0\1\11\7\0\3\12\1\0\10\11\1\0"+
+ "\3\11\1\0\27\11\1\0\12\11\1\0\5\11\4\0\7\12\1\0"+
+ "\3\12\1\0\4\12\7\0\2\12\11\0\2\11\4\0\12\12\22\0"+
+ "\2\12\1\0\10\11\1\0\3\11\1\0\27\11\1\0\12\11\1\0"+
+ "\5\11\2\0\1\12\1\11\7\12\1\0\3\12\1\0\4\12\7\0"+
+ "\2\12\7\0\1\11\1\0\2\11\4\0\12\12\22\0\2\12\1\0"+
+ "\10\11\1\0\3\11\1\0\27\11\1\0\20\11\4\0\6\12\2\0"+
+ "\3\12\1\0\4\12\11\0\1\12\10\0\2\11\4\0\12\12\22\0"+
+ "\2\12\1\0\22\11\3\0\30\11\1\0\11\11\1\0\1\11\2\0"+
+ "\7\11\3\0\1\12\4\0\6\12\1\0\1\12\1\0\10\12\22\0"+
+ "\2\12\15\0\60\11\1\12\2\11\7\12\4\0\10\11\10\12\1\0"+
+ "\12\12\47\0\2\11\1\0\1\11\2\0\2\11\1\0\1\11\2\0"+
+ "\1\11\6\0\4\11\1\0\7\11\1\0\3\11\1\0\1\11\1\0"+
+ "\1\11\2\0\2\11\1\0\4\11\1\12\2\11\6\12\1\0\2\12"+
+ "\1\11\2\0\5\11\1\0\1\11\1\0\6\12\2\0\12\12\2\0"+
+ "\2\11\42\0\1\11\27\0\2\12\6\0\12\12\13\0\1\12\1\0"+
+ "\1\12\1\0\1\12\4\0\2\12\10\11\1\0\42\11\6\0\24\12"+
+ "\1\0\2\12\4\11\4\0\10\12\1\0\44\12\11\0\1\12\71\0"+
+ "\42\11\1\0\5\11\1\0\2\11\1\0\7\12\3\0\4\12\6\0"+
+ "\12\12\6\0\6\11\4\12\106\0\46\11\12\0\51\11\7\0\132\11"+
+ "\5\0\104\11\5\0\122\11\6\0\7\11\1\0\77\11\1\0\1\11"+
+ "\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11\2\0\47\11"+
+ "\1\0\1\11\1\0\4\11\2\0\37\11\1\0\1\11\1\0\4\11"+
+ "\2\0\7\11\1\0\1\11\1\0\4\11\2\0\7\11\1\0\7\11"+
+ "\1\0\27\11\1\0\37\11\1\0\1\11\1\0\4\11\2\0\7\11"+
+ "\1\0\47\11\1\0\23\11\16\0\11\12\56\0\125\11\14\0\u026c\11"+
+ "\2\0\10\11\12\0\32\11\5\0\113\11\3\0\3\11\17\0\15\11"+
+ "\1\0\4\11\3\12\13\0\22\11\3\12\13\0\22\11\2\12\14\0"+
+ "\15\11\1\0\3\11\1\0\2\12\14\0\64\11\40\12\3\0\1\11"+
+ "\3\0\2\11\1\12\2\0\12\12\41\0\3\12\2\0\12\12\6\0"+
+ "\130\11\10\0\51\11\1\12\126\0\35\11\3\0\14\12\4\0\14\12"+
+ "\12\0\12\12\36\11\2\0\5\11\u038b\0\154\11\224\0\234\11\4\0"+
+ "\132\11\6\0\26\11\2\0\6\11\2\0\46\11\2\0\6\11\2\0"+
+ "\10\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0\37\11\2\0"+
+ "\65\11\1\0\7\11\1\0\1\11\3\0\3\11\1\0\7\11\3\0"+
+ "\4\11\2\0\6\11\4\0\15\11\5\0\3\11\1\0\7\11\17\0"+
+ "\4\12\32\0\5\12\20\0\2\11\23\0\1\11\13\0\4\12\6\0"+
+ "\6\12\1\0\1\11\15\0\1\11\40\0\22\11\36\0\15\12\4\0"+
+ "\1\12\3\0\6\12\27\0\1\11\4\0\1\11\2\0\12\11\1\0"+
+ "\1\11\3\0\5\11\6\0\1\11\1\0\1\11\1\0\1\11\1\0"+
+ "\4\11\1\0\3\11\1\0\7\11\3\0\3\11\5\0\5\11\26\0"+
+ "\44\11\u0e81\0\3\11\31\0\11\11\6\12\1\0\5\11\2\0\5\11"+
+ "\4\0\126\11\2\0\2\12\2\0\3\11\1\0\137\11\5\0\50\11"+
+ "\4\0\136\11\21\0\30\11\70\0\20\11\u0200\0\u19b6\11\112\0\u51a6\11"+
+ "\132\0\u048d\11\u0773\0\u2ba4\11\u215c\0\u012e\11\2\0\73\11\225\0\7\11"+
+ "\14\0\5\11\5\0\1\11\1\12\12\11\1\0\15\11\1\0\5\11"+
+ "\1\0\1\11\1\0\2\11\1\0\2\11\1\0\154\11\41\0\u016b\11"+
+ "\22\0\100\11\2\0\66\11\50\0\15\11\3\0\20\12\20\0\4\12"+
+ "\17\0\2\11\30\0\3\11\31\0\1\11\6\0\5\11\1\0\207\11"+
+ "\2\0\1\12\4\0\1\11\13\0\12\12\7\0\32\11\4\0\1\11"+
+ "\1\0\32\11\12\0\132\11\3\0\6\11\2\0\6\11\2\0\6\11"+
+ "\2\0\3\11\3\0\2\11\3\0\2\11\22\0\3\12\4\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\1\1\3\2\4\1\1\1\5" +
- "\2\6\1\7\1\10\1\11\1\10\1\11\2\1\1\12" +
- "\1\0\1\13\1\14\2\15\1\16\1\17\1\20\1\21" +
- "\1\22\1\23\1\24\1\25\1\0\1\26\1\0\1\26" +
- "\1\0\1\15\1\0\1\26\2\0\1\27";
+ private static final String ZZ_ACTION_PACKED_0 =
+ "\3\0\2\1\1\2\1\1\1\2\1\3\2\4\1\1"+
+ "\1\5\2\6\1\7\1\10\1\11\1\10\1\11\2\1"+
+ "\1\12\1\0\1\13\1\2\1\14\2\15\1\16\1\17"+
+ "\1\20\1\21\1\22\1\23\1\24\1\25\1\0\1\26"+
+ "\1\0\1\26\1\0\1\2\1\15\1\0\1\26\1\0"+
+ "\1\2\1\0\1\2\1\27\15\2\1\0\2\2\2\0"+
+ "\2\2\1\30\1\2\6\0\1\31\1\32";
- private static int[] zzUnpackAction() {
- int[] result = new int[46];
- int offset = 0;
- offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
- return result;
+ private static int [] zzUnpackAction() {
+ int [] result = new int[81];
+ int offset = 0;
+ offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAction(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Translates a state to a row index in the transition table
+ */
+ private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
+
+ private static final String ZZ_ROWMAP_PACKED_0 =
+ "\0\0\0\50\0\120\0\170\0\240\0\310\0\360\0\u0118"+
+ "\0\u0140\0\u0168\0\170\0\u0190\0\170\0\u01b8\0\170\0\u01e0"+
+ "\0\u0208\0\u0230\0\u0258\0\u0280\0\u02a8\0\u02d0\0\170\0\360"+
+ "\0\170\0\u02f8\0\170\0\u0320\0\u0348\0\170\0\170\0\170"+
+ "\0\170\0\170\0\170\0\170\0\170\0\u0370\0\u0398\0\u03c0"+
+ "\0\u0280\0\u02d0\0\u03e8\0\170\0\u0410\0\u0438\0\u0438\0\u0460"+
+ "\0\u0488\0\u04b0\0\170\0\u04d8\0\u0500\0\u0528\0\u0550\0\u0578"+
+ "\0\u05a0\0\u05c8\0\u05f0\0\u0618\0\u0640\0\u0668\0\u0690\0\u06b8"+
+ "\0\u06e0\0\u0708\0\u0730\0\u0758\0\u0780\0\u07a8\0\u07d0\0\170"+
+ "\0\u07f8\0\u0820\0\u0848\0\u0870\0\u0898\0\u08c0\0\u08e8\0\170"+
+ "\0\170";
+
+ private static int [] zzUnpackRowMap() {
+ int [] result = new int[81];
+ int offset = 0;
+ offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int high = packed.charAt(i++) << 16;
+ result[j++] = high | packed.charAt(i++);
+ }
+ return j;
+ }
+
+ /**
+ * The transition table of the DFA
+ */
+ private static final int [] ZZ_TRANS = zzUnpackTrans();
+
+ private static final String ZZ_TRANS_PACKED_0 =
+ "\4\4\1\5\1\6\3\4\1\7\1\4\1\6\1\7"+
+ "\4\4\1\7\1\10\3\4\12\6\1\5\2\6\1\4"+
+ "\2\6\2\4\1\11\1\12\1\13\22\11\1\14\15\11"+
+ "\1\15\4\11\1\4\1\16\1\17\1\20\1\4\1\21"+
+ "\1\4\1\22\1\4\1\23\1\4\2\23\1\4\1\24"+
+ "\1\25\1\26\2\23\1\4\1\22\1\4\12\23\1\4"+
+ "\2\23\1\27\2\23\1\4\1\22\54\0\1\5\33\0"+
+ "\1\5\14\0\1\6\1\0\1\6\1\0\2\30\2\6"+
+ "\1\31\1\6\2\0\1\30\1\6\1\0\1\6\1\0"+
+ "\12\6\1\0\2\6\1\0\2\6\1\0\1\6\5\0"+
+ "\1\30\1\0\1\30\1\0\4\30\1\31\1\30\2\0"+
+ "\2\30\1\0\1\30\1\0\12\30\1\0\2\30\1\0"+
+ "\2\30\1\0\1\30\5\0\1\6\1\0\1\6\1\0"+
+ "\2\30\2\6\1\31\1\6\2\0\1\30\1\6\1\0"+
+ "\1\6\1\0\1\32\11\6\1\0\2\6\1\0\2\6"+
+ "\1\0\1\6\1\11\2\0\22\11\1\0\15\11\1\0"+
+ "\4\11\2\0\1\13\45\0\2\33\1\0\13\33\1\34"+
+ "\5\33\1\35\1\36\3\33\1\37\2\33\1\40\2\33"+
+ "\1\41\3\33\1\42\1\43\1\44\1\45\1\34\2\0"+
+ "\1\17\45\0\1\20\2\0\45\20\5\0\1\23\1\46"+
+ "\1\23\1\0\4\23\1\0\1\23\2\0\2\23\1\0"+
+ "\1\23\1\0\12\23\1\0\2\23\1\0\2\23\1\0"+
+ "\1\23\7\0\1\22\6\0\1\22\1\0\1\47\2\50"+
+ "\1\0\1\22\22\0\1\22\5\0\1\23\1\0\1\23"+
+ "\1\0\4\23\1\0\1\23\2\0\2\23\1\0\1\23"+
+ "\1\0\12\23\1\0\2\23\1\0\2\23\1\0\1\23"+
+ "\7\0\1\51\6\0\1\51\1\0\1\47\2\50\1\0"+
+ "\1\51\22\0\1\51\7\0\1\22\6\0\1\51\1\0"+
+ "\1\52\3\0\1\22\22\0\1\22\7\0\1\47\6\0"+
+ "\1\47\5\0\1\47\22\0\1\47\5\0\1\6\1\0"+
+ "\1\6\1\0\2\30\2\6\1\31\1\6\2\0\1\30"+
+ "\1\6\1\0\1\6\1\0\1\6\1\53\10\6\1\0"+
+ "\2\6\1\0\2\6\1\0\1\6\16\0\1\35\5\0"+
+ "\1\35\22\0\1\35\16\0\1\54\5\0\1\54\22\0"+
+ "\1\54\7\0\1\55\6\0\1\55\5\0\1\55\22\0"+
+ "\1\55\7\0\1\47\6\0\1\47\2\0\2\50\1\0"+
+ "\1\47\22\0\1\47\7\0\1\56\6\0\1\56\1\57"+
+ "\3\0\1\57\1\56\22\0\1\56\5\0\1\6\1\0"+
+ "\1\6\1\0\2\30\2\6\1\31\1\6\2\0\1\30"+
+ "\1\60\1\0\1\6\1\0\12\6\1\0\2\6\1\0"+
+ "\2\6\1\0\1\6\7\0\1\55\1\61\5\0\1\55"+
+ "\5\0\1\55\22\0\1\55\7\0\1\56\6\0\1\56"+
+ "\5\0\1\56\22\0\1\56\5\0\1\6\1\0\1\6"+
+ "\1\0\2\30\2\6\1\31\1\6\2\0\1\30\1\6"+
+ "\1\0\1\6\1\0\2\6\1\62\7\6\1\0\2\6"+
+ "\1\0\2\6\1\0\1\6\43\0\1\63\11\0\1\6"+
+ "\1\0\1\6\1\0\2\30\2\6\1\31\1\6\2\0"+
+ "\1\30\1\6\1\0\1\6\1\0\3\6\1\64\6\6"+
+ "\1\0\2\6\1\0\2\6\1\0\1\6\5\0\1\6"+
+ "\1\0\1\6\1\0\2\30\2\6\1\31\1\6\2\0"+
+ "\1\30\1\6\1\0\1\6\1\0\4\6\1\65\5\6"+
+ "\1\0\2\6\1\0\2\6\1\0\1\6\5\0\1\6"+
+ "\1\0\1\6\1\0\2\30\2\6\1\31\1\6\2\0"+
+ "\1\30\1\6\1\0\1\6\1\0\5\6\1\66\4\6"+
+ "\1\0\2\6\1\0\2\6\1\0\1\6\5\0\1\6"+
+ "\1\0\1\6\1\0\2\30\2\6\1\31\1\6\2\0"+
+ "\1\30\1\6\1\0\1\6\1\0\6\6\1\67\3\6"+
+ "\1\0\2\6\1\0\2\6\1\0\1\6\5\0\1\6"+
+ "\1\0\1\6\1\0\2\30\2\6\1\31\1\6\2\0"+
+ "\1\30\1\70\1\0\1\6\1\0\3\6\1\71\3\6"+
+ "\1\72\2\6\1\0\2\6\1\0\2\6\1\0\1\6"+
+ "\5\0\1\6\1\0\1\6\1\0\2\30\2\6\1\31"+
+ "\1\6\2\0\1\30\1\6\1\0\1\6\1\0\6\6"+
+ "\1\73\3\6\1\0\2\6\1\0\2\6\1\0\1\6"+
+ "\5\0\1\6\1\0\1\6\1\0\2\30\2\6\1\31"+
+ "\1\6\2\0\1\30\1\6\1\0\1\6\1\0\10\6"+
+ "\1\74\1\6\1\0\2\6\1\0\2\6\1\0\1\6"+
+ "\5\0\1\6\1\0\1\6\1\0\2\30\2\6\1\31"+
+ "\1\6\2\0\1\30\1\6\1\0\1\6\1\0\3\6"+
+ "\1\75\6\6\1\0\2\6\1\0\2\6\1\0\1\6"+
+ "\5\0\1\6\1\0\1\6\1\0\2\30\2\6\1\31"+
+ "\1\6\2\0\1\30\1\6\1\0\1\6\1\0\12\6"+
+ "\1\0\1\76\1\6\1\0\2\6\1\0\1\6\5\0"+
+ "\1\6\1\0\1\6\1\0\2\30\2\6\1\31\1\6"+
+ "\2\0\1\30\1\6\1\0\1\6\1\0\11\6\1\77"+
+ "\1\0\2\6\1\0\2\6\1\0\1\6\5\0\1\6"+
+ "\1\0\1\6\1\0\2\30\2\6\1\31\1\6\2\0"+
+ "\1\30\1\6\1\0\1\6\1\0\10\6\1\100\1\6"+
+ "\1\0\2\6\1\0\2\6\1\0\1\6\5\0\1\6"+
+ "\1\0\1\6\1\0\2\30\2\6\1\31\1\6\2\0"+
+ "\1\30\1\6\1\0\1\6\1\0\12\6\1\101\2\6"+
+ "\1\0\2\6\1\0\1\6\5\0\1\6\1\0\1\6"+
+ "\1\0\2\30\2\6\1\31\1\6\2\0\1\30\1\6"+
+ "\1\0\1\6\1\0\12\6\1\0\1\6\1\102\1\0"+
+ "\2\6\1\0\1\6\5\0\1\6\1\0\1\6\1\0"+
+ "\2\30\2\6\1\31\1\6\2\0\1\30\1\6\1\0"+
+ "\1\6\1\0\11\6\1\103\1\0\2\6\1\0\2\6"+
+ "\1\0\1\6\7\0\1\104\6\0\1\105\5\0\1\104"+
+ "\22\0\1\104\5\0\1\6\1\0\1\6\1\0\2\30"+
+ "\2\6\1\31\1\6\2\0\1\30\1\106\1\0\1\6"+
+ "\1\0\12\6\1\0\2\6\1\0\2\6\1\0\1\6"+
+ "\5\0\1\6\1\0\1\6\1\0\2\30\2\6\1\31"+
+ "\1\6\2\0\1\30\1\6\1\0\1\6\1\0\3\6"+
+ "\1\107\6\6\1\0\2\6\1\0\2\6\1\0\1\6"+
+ "\7\0\1\104\5\0\1\110\1\104\5\0\1\104\22\0"+
+ "\1\104\15\0\1\110\37\0\1\6\1\0\1\6\1\0"+
+ "\2\30\2\6\1\31\1\6\2\0\1\30\1\6\1\0"+
+ "\1\6\1\0\3\6\1\111\6\6\1\0\2\6\1\0"+
+ "\2\6\1\0\1\6\5\0\1\6\1\0\1\6\1\0"+
+ "\2\30\2\6\1\31\1\6\2\0\1\30\1\6\1\0"+
+ "\1\6\1\0\12\6\1\112\2\6\1\0\2\6\1\0"+
+ "\1\6\5\0\1\6\1\0\1\6\1\0\2\30\2\6"+
+ "\1\31\1\6\2\0\1\30\1\6\1\0\1\6\1\0"+
+ "\12\6\1\113\2\6\1\0\2\6\1\0\1\6\7\0"+
+ "\1\114\6\0\1\115\5\0\1\114\22\0\1\114\7\0"+
+ "\1\116\6\0\1\117\5\0\1\116\22\0\1\116\7\0"+
+ "\1\114\5\0\1\120\1\114\5\0\1\114\22\0\1\114"+
+ "\15\0\1\120\41\0\1\116\5\0\1\121\1\116\5\0"+
+ "\1\116\22\0\1\116\15\0\1\121\32\0";
+
+ private static int [] zzUnpackTrans() {
+ int [] result = new int[2320];
+ int offset = 0;
+ offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackTrans(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ value--;
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /* error codes */
+ private static final int ZZ_UNKNOWN_ERROR = 0;
+ private static final int ZZ_NO_MATCH = 1;
+ private static final int ZZ_PUSHBACK_2BIG = 2;
+
+ /* error messages for the codes above */
+ private static final String ZZ_ERROR_MSG[] = {
+ "Unkown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /**
+ * ZZ_ATTRIBUTE[aState] contains the attributes of state aState
+ */
+ private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private static final String ZZ_ATTRIBUTE_PACKED_0 =
+ "\3\0\1\11\6\1\1\11\1\1\1\11\1\1\1\11"+
+ "\7\1\1\11\1\0\1\11\1\1\1\11\2\1\10\11"+
+ "\1\0\1\1\1\0\1\1\1\0\1\1\1\11\1\0"+
+ "\1\1\1\0\1\1\1\0\1\1\1\11\15\1\1\0"+
+ "\2\1\2\0\2\1\1\11\1\1\6\0\2\11";
+
+ private static int [] zzUnpackAttribute() {
+ int [] result = new int[81];
+ int offset = 0;
+ offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAttribute(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /** the input device */
+ private java.io.Reader zzReader;
+
+ /** the current state of the DFA */
+ private int zzState;
+
+ /** the current lexical state */
+ private int zzLexicalState = YYINITIAL;
+
+ /** this buffer contains the current text to be matched and is
+ the source of the yytext() string */
+ private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
+
+ /** the textposition at the last accepting state */
+ private int zzMarkedPos;
+
+ /** the 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;
+
+ /* user code: */
+
+ StringBuffer string = new StringBuffer();
+ boolean isMultiname=false;
+ long multinameId=0;
+
+
+ /**
+ * Create an empty lexer, yyrset will be called later to reset and assign
+ * the reader
+ */
+ public Flasm3Lexer() {
+
+ }
+
+ public int yychar() {
+ return yychar;
+ }
+
+ public int yyline() {
+ return yyline+1;
+ }
+
+
+
+ /**
+ * Creates a new scanner
+ * There is also a java.io.InputStream version of this constructor.
+ *
+ * @param in the java.io.Reader to read input from.
+ */
+ public Flasm3Lexer(java.io.Reader in) {
+ this.zzReader = in;
+ }
+
+ /**
+ * Creates a new scanner.
+ * There is also java.io.Reader version of this constructor.
+ *
+ * @param in the java.io.Inputstream to read input from.
+ */
+ public Flasm3Lexer(java.io.InputStream in) {
+ this(new java.io.InputStreamReader(in));
+ }
+
+ /**
+ * Unpacks the compressed character translation table.
+ *
+ * @param packed the packed character translation table
+ * @return the unpacked character translation table
+ */
+ private static char [] zzUnpackCMap(String packed) {
+ char [] map = new char[0x10000];
+ int i = 0; /* index in packed string */
+ int j = 0; /* index in unpacked array */
+ while (i < 1738) {
+ 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) {
+ System.arraycopy(zzBuffer, zzStartRead,
+ zzBuffer, 0,
+ zzEndRead-zzStartRead);
+
+ /* translate stored positions */
+ zzEndRead-= zzStartRead;
+ zzCurrentPos-= zzStartRead;
+ zzMarkedPos-= zzStartRead;
+ zzStartRead = 0;
}
- 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;
+ /* is the buffer big enough? */
+ if (zzCurrentPos >= zzBuffer.length) {
+ /* if not: blow it up */
+ char newBuffer[] = new char[zzCurrentPos*2];
+ System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
+ zzBuffer = newBuffer;
}
+ /* finally: fill the buffer with new input */
+ int numRead = zzReader.read(zzBuffer, zzEndRead,
+ zzBuffer.length-zzEndRead);
- /**
- * 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\36\0\74\0\132\0\170\0\226\0\264\0\322" +
- "\0\360\0\132\0\u010e\0\132\0\u012c\0\132\0\u014a\0\u0168" +
- "\0\u0186\0\u01a4\0\u01c2\0\u01e0\0\u01fe\0\132\0\264\0\132" +
- "\0\132\0\u021c\0\u023a\0\132\0\132\0\132\0\132\0\132" +
- "\0\132\0\132\0\132\0\u0258\0\u0276\0\u0294\0\u01c2\0\u01fe" +
- "\0\132\0\u02b2\0\u02d0\0\u02d0\0\u02ee\0\132";
-
- private static int[] zzUnpackRowMap() {
- int[] result = new int[46];
- int offset = 0;
- offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
- return result;
+ if (numRead > 0) {
+ zzEndRead+= numRead;
+ return false;
}
-
- private static int zzUnpackRowMap(String packed, int offset, int[] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int high = packed.charAt(i++) << 16;
- result[j++] = high | packed.charAt(i++);
- }
- return j;
- }
-
- /**
- * The transition table of the DFA
- */
- private static final int[] ZZ_TRANS = zzUnpackTrans();
-
- private static final String ZZ_TRANS_PACKED_0 =
- "\4\4\1\5\1\6\3\4\1\7\1\4\1\6\1\7" +
- "\4\4\1\7\1\6\4\4\5\6\2\4\1\10\1\11" +
- "\1\12\22\10\1\13\1\14\7\10\1\4\1\15\1\16" +
- "\1\17\1\4\1\20\1\4\1\21\1\4\1\22\1\4" +
- "\2\22\1\4\1\23\1\24\1\25\2\22\1\4\1\21" +
- "\1\4\1\26\5\22\1\4\1\21\42\0\1\5\36\0" +
- "\1\6\1\0\1\6\1\0\2\27\2\6\1\30\1\6" +
- "\2\0\1\27\1\6\1\0\1\6\2\0\5\6\1\0" +
- "\1\6\5\0\1\27\1\0\1\27\1\0\4\27\1\30" +
- "\1\27\2\0\2\27\1\0\1\27\2\0\5\27\1\0" +
- "\1\27\1\10\2\0\22\10\2\0\7\10\2\0\1\12" +
- "\33\0\2\31\1\0\13\31\1\32\5\31\1\33\1\34" +
- "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\32" +
- "\2\0\1\16\33\0\1\17\2\0\33\17\5\0\1\22" +
- "\1\44\1\22\1\0\4\22\1\0\1\22\2\0\2\22" +
- "\1\0\1\22\2\0\5\22\1\0\1\22\7\0\1\21" +
- "\6\0\1\21\1\0\1\45\2\46\1\0\1\21\10\0" +
- "\1\21\5\0\1\22\1\0\1\22\1\0\4\22\1\0" +
- "\1\22\2\0\2\22\1\0\1\22\2\0\5\22\1\0" +
- "\1\22\7\0\1\47\6\0\1\47\1\0\1\45\2\46" +
- "\1\0\1\47\10\0\1\47\7\0\1\21\6\0\1\47" +
- "\1\0\1\50\3\0\1\21\10\0\1\21\7\0\1\45" +
- "\6\0\1\45\5\0\1\45\10\0\1\45\16\0\1\33" +
- "\5\0\1\33\10\0\1\33\16\0\1\51\5\0\1\51" +
- "\10\0\1\51\7\0\1\52\6\0\1\52\5\0\1\52" +
- "\10\0\1\52\7\0\1\45\6\0\1\45\2\0\2\46" +
- "\1\0\1\45\10\0\1\45\7\0\1\53\6\0\1\53" +
- "\1\54\3\0\1\54\1\53\10\0\1\53\7\0\1\52" +
- "\1\55\5\0\1\52\5\0\1\52\10\0\1\52\7\0" +
- "\1\53\6\0\1\53\5\0\1\53\10\0\1\53\26\0" +
- "\1\56\7\0";
-
- private static int[] zzUnpackTrans() {
- int[] result = new int[780];
- int offset = 0;
- offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackTrans(String packed, int offset, int[] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- value--;
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
-
- /* error codes */
- private static final int ZZ_UNKNOWN_ERROR = 0;
- private static final int ZZ_NO_MATCH = 1;
- private static final int ZZ_PUSHBACK_2BIG = 2;
-
- /* error messages for the codes above */
- private static final String ZZ_ERROR_MSG[] = {
- "Unkown internal scanner error",
- "Error: could not match input",
- "Error: pushback value was too large"
- };
-
- /**
- * ZZ_ATTRIBUTE[aState] contains the attributes of state aState
- */
- private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
- private static final String ZZ_ATTRIBUTE_PACKED_0 =
- "\3\0\1\11\5\1\1\11\1\1\1\11\1\1\1\11" +
- "\7\1\1\11\1\0\2\11\2\1\10\11\1\0\1\1" +
- "\1\0\1\1\1\0\1\11\1\0\1\1\2\0\1\11";
-
- private static int[] zzUnpackAttribute() {
- int[] result = new int[46];
- int offset = 0;
- offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
- return result;
- }
-
- private static int zzUnpackAttribute(String packed, int offset, int[] result) {
- int i = 0; /* index in packed string */
- int j = offset; /* index in unpacked array */
- int l = packed.length();
- while (i < l) {
- int count = packed.charAt(i++);
- int value = packed.charAt(i++);
- do result[j++] = value; while (--count > 0);
- }
- return j;
- }
-
- /**
- * the input device
- */
- private java.io.Reader zzReader;
-
- /**
- * the current state of the DFA
- */
- private int zzState;
-
- /**
- * the current lexical state
- */
- private int zzLexicalState = YYINITIAL;
-
- /**
- * this buffer contains the current text to be matched and is
- * the source of the yytext() string
- */
- private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
- /**
- * the textposition at the last accepting state
- */
- private int zzMarkedPos;
-
- /**
- * the 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;
-
- /* user code: */
-
- StringBuffer string = new StringBuffer();
- boolean isMultiname = false;
- long multinameId = 0;
-
-
- /**
- * Create an empty lexer, yyrset will be called later to reset and assign
- * the reader
- */
- public Flasm3Lexer() {
-
- }
-
- public int yychar() {
- return yychar;
- }
-
- public int yyline() {
- return yyline + 1;
- }
-
-
- /**
- * Creates a new scanner
- * There is also a java.io.InputStream version of this constructor.
- *
- * @param in the java.io.Reader to read input from.
- */
- public Flasm3Lexer(java.io.Reader in) {
- this.zzReader = in;
- }
-
- /**
- * Creates a new scanner.
- * There is also java.io.Reader version of this constructor.
- *
- * @param in the java.io.Inputstream to read input from.
- */
- public Flasm3Lexer(java.io.InputStream in) {
- this(new java.io.InputStreamReader(in));
- }
-
- /**
- * Unpacks the compressed character translation table.
- *
- * @param packed the packed character translation table
- * @return the unpacked character translation table
- */
- private static char[] zzUnpackCMap(String packed) {
- char[] map = new char[0x10000];
- int i = 0; /* index in packed string */
- int j = 0; /* index in unpacked array */
- while (i < 1722) {
- 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.
- * @throws java.io.IOException if any I/O-Error occurs
- */
- private boolean zzRefill() throws java.io.IOException {
-
- /* first: make room (if you can) */
- if (zzStartRead > 0) {
- System.arraycopy(zzBuffer, zzStartRead,
- zzBuffer, 0,
- zzEndRead - zzStartRead);
-
- /* translate stored positions */
- zzEndRead -= zzStartRead;
- zzCurrentPos -= zzStartRead;
- zzMarkedPos -= zzStartRead;
- zzStartRead = 0;
- }
-
- /* is the buffer big enough? */
- if (zzCurrentPos >= zzBuffer.length) {
- /* if not: blow it up */
- char newBuffer[] = new char[zzCurrentPos * 2];
- System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
- zzBuffer = newBuffer;
- }
-
- /* finally: fill the buffer with new input */
- int numRead = zzReader.read(zzBuffer, zzEndRead,
- zzBuffer.length - zzEndRead);
-
- if (numRead > 0) {
- zzEndRead += numRead;
- return false;
- }
- // unlikely but not impossible: read 0 characters, but not at end of stream
- if (numRead == 0) {
- int c = zzReader.read();
- if (c == -1) {
- return true;
- } else {
- zzBuffer[zzEndRead++] = (char) c;
- return false;
- }
- }
-
- // numRead < 0
+ // unlikely but not impossible: read 0 characters, but not at end of stream
+ if (numRead == 0) {
+ int c = zzReader.read();
+ if (c == -1) {
return true;
+ } else {
+ zzBuffer[zzEndRead++] = (char) c;
+ return false;
+ }
}
+ // numRead < 0
+ return true;
+ }
- /**
- * Closes the input stream.
- */
- public final void yyclose() throws java.io.IOException {
- zzAtEOF = true; /* indicate end of file */
- zzEndRead = zzStartRead; /* invalidate buffer */
+
+ /**
+ * 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();
+ 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.
+ *
+ * @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;
+ yyline = yychar = yycolumn = 0;
+ zzLexicalState = YYINITIAL;
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ public final int yystate() {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ public final void yybegin(int newState) {
+ zzLexicalState = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ public final String yytext() {
+ return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
+ }
+
+
+ /**
+ * Returns the character at position 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];
}
-
- /**
- * 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.
- *
- * @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;
- yyline = yychar = yycolumn = 0;
- zzLexicalState = YYINITIAL;
- }
+ throw new Error(message);
+ }
- /**
- * Returns the current lexical state.
- */
- public final int yystate() {
- return zzLexicalState;
- }
+ /**
+ * 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;
+ }
- /**
- * Enters a new lexical state
- *
- * @param newState the new lexical state
- */
- public final void yybegin(int newState) {
- zzLexicalState = newState;
- }
+ /**
+ * 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 ParsedSymbol yylex() throws java.io.IOException, ParseException {
+ int zzInput;
+ int zzAction;
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char [] zzBufferL = zzBuffer;
+ char [] zzCMapL = ZZ_CMAP;
- /**
- * Returns the text matched by the current regular expression.
- */
- public final String yytext() {
- return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
- }
+ int [] zzTransL = ZZ_TRANS;
+ int [] zzRowMapL = ZZ_ROWMAP;
+ int [] zzAttrL = ZZ_ATTRIBUTE;
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
- /**
- * 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];
- }
+ yychar+= zzMarkedPosL-zzStartRead;
-
- /**
- * 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];
+ boolean zzR = false;
+ for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
+ zzCurrentPosL++) {
+ switch (zzBufferL[zzCurrentPosL]) {
+ case '\u000B':
+ case '\u000C':
+ case '\u0085':
+ case '\u2028':
+ case '\u2029':
+ yyline++;
+ yycolumn = 0;
+ zzR = false;
+ break;
+ case '\r':
+ yyline++;
+ yycolumn = 0;
+ zzR = true;
+ break;
+ case '\n':
+ if (zzR)
+ zzR = false;
+ else {
+ yyline++;
+ yycolumn = 0;
+ }
+ break;
+ default:
+ zzR = false;
+ yycolumn++;
}
- catch (ArrayIndexOutOfBoundsException e) {
- message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ 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;
- throw new Error(message);
- }
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
- /**
- * 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 ParsedSymbol yylex() throws java.io.IOException, ParseException {
- 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;
- for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
- zzCurrentPosL++) {
- switch (zzBufferL[zzCurrentPosL]) {
- case '\u000B':
- case '\u000C':
- case '\u0085':
- case '\u2028':
- case '\u2029':
- yyline++;
- yycolumn = 0;
- zzR = false;
- break;
- case '\r':
- yyline++;
- yycolumn = 0;
- zzR = true;
- break;
- case '\n':
- if (zzR)
- zzR = false;
- else {
- yyline++;
- yycolumn = 0;
- }
- break;
- default:
- zzR = false;
- yycolumn++;
- }
+
+ if (zzCurrentPosL < zzEndReadL)
+ zzInput = zzBufferL[zzCurrentPosL++];
+ 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 = zzBufferL[zzCurrentPosL++];
}
- zzAction = -1;
+ }
+ int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
+ if (zzNext == -1) break zzForAction;
+ zzState = zzNext;
- zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+ int zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ( (zzAttributes & 8) == 8 ) break zzForAction;
+ }
- zzState = ZZ_LEXSTATE[zzLexicalState];
-
-
- zzForAction:
- {
- while (true) {
-
- if (zzCurrentPosL < zzEndReadL)
- zzInput = zzBufferL[zzCurrentPosL++];
- else if (zzAtEOF) {
- zzInput = YYEOF;
- break zzForAction;
- } else {
- // store back cached positions
- zzCurrentPos = zzCurrentPosL;
- zzMarkedPos = zzMarkedPosL;
- 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 = zzBufferL[zzCurrentPosL++];
- }
- }
- int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];
- if (zzNext == -1) break zzForAction;
- zzState = zzNext;
-
- int 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 8: {
- return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER, yytext());
- }
- case 24:
- break;
- case 21: {
- string.append('\'');
- }
- case 25:
- break;
- case 9: {
- return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER, new Long(Long.parseLong((yytext()))));
- }
- case 26:
- break;
- case 3: {
- string.append(yytext());
- }
- case 27:
- break;
- case 13: {
- char val = (char) Integer.parseInt(yytext().substring(1), 8);
- string.append(val);
- }
- case 28:
- break;
- case 5: {
- yybegin(PARAMETERS);
- // length also includes the trailing quote
- if (isMultiname) {
- return new ParsedSymbol(ParsedSymbol.TYPE_MULTINAME, new Long(multinameId));
- } else {
- return new ParsedSymbol(ParsedSymbol.TYPE_STRING, string.toString());
- }
- }
- case 29:
- break;
- case 20: {
- string.append('\r');
- }
- case 30:
- break;
- case 6: {
- yybegin(YYINITIAL);
- }
- case 31:
- break;
- case 2: {
- yybegin(PARAMETERS);
- return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME, yytext());
- }
- case 32:
- break;
- case 7: {
- return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT, yytext().substring(1));
- }
- case 33:
- break;
- case 11: {
- String s = yytext();
- return new ParsedSymbol(ParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1));
- }
- case 34:
- break;
- case 16: {
- string.append('\b');
- }
- case 35:
- break;
- case 4: {
- throw new ParseException("Unterminated string at end of line", yyline + 1);
- }
- case 36:
- break;
- case 10: {
- isMultiname = false;
- yybegin(STRING);
- string.setLength(0);
- }
- case 37:
- break;
- case 17: {
- string.append('\t');
- }
- case 38:
- break;
- case 22: {
- return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT, new Double(Double.parseDouble((yytext()))));
- }
- case 39:
- break;
- case 14: {
- string.append('\\');
- }
- case 40:
- break;
- case 12: {
- throw new ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1);
- }
- case 41:
- break;
- case 23: {
- isMultiname = true;
- String s = yytext();
- multinameId = Long.parseLong(s.substring(2, s.length() - 2));
- yybegin(STRING);
- string.setLength(0);
- }
- case 42:
- break;
- case 18: {
- string.append('\n');
- }
- case 43:
- break;
- case 19: {
- string.append('\f');
- }
- case 44:
- break;
- case 15: {
- string.append('\"');
- }
- case 45:
- break;
- case 1: {
- }
- case 46:
- break;
- default:
- if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
- zzAtEOF = true;
- {
- return new ParsedSymbol(ParsedSymbol.TYPE_EOF);
- }
- } else {
- zzScanError(ZZ_NO_MATCH);
- }
- }
}
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 8:
+ { return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER,yytext());
+ }
+ case 27: break;
+ case 21:
+ { string.append( '\'' );
+ }
+ case 28: break;
+ case 9:
+ { return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER,new Long(Long.parseLong((yytext()))));
+ }
+ case 29: break;
+ case 26:
+ { String s=yytext();
+ return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_TARGET,Integer.parseInt(s.substring(16,s.length()-1)));
+ }
+ case 30: break;
+ case 3:
+ { string.append( yytext() );
+ }
+ case 31: break;
+ case 13:
+ { char val = (char) Integer.parseInt(yytext().substring(1),8);
+ string.append( val );
+ }
+ case 32: break;
+ case 25:
+ { String s=yytext();
+ return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_START,Integer.parseInt(s.substring(15,s.length()-1)));
+ }
+ case 33: break;
+ case 5:
+ { yybegin(PARAMETERS);
+ // length also includes the trailing quote
+ if(isMultiname){
+ return new ParsedSymbol(ParsedSymbol.TYPE_MULTINAME,new Long(multinameId));
+ }else{
+ return new ParsedSymbol(ParsedSymbol.TYPE_STRING,string.toString());
+ }
+ }
+ case 34: break;
+ case 6:
+ { yybegin(YYINITIAL);
+ }
+ case 35: break;
+ case 2:
+ { yybegin(PARAMETERS);
+ return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME,yytext());
+ }
+ case 36: break;
+ case 17:
+ { string.append( '\r' );
+ }
+ case 37: break;
+ case 24:
+ { String s=yytext();
+ return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_END,Integer.parseInt(s.substring(13,s.length()-1)));
+ }
+ case 38: break;
+ case 7:
+ { return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT,yytext().substring(1));
+ }
+ case 39: break;
+ case 19:
+ { string.append( '\b' );
+ }
+ case 40: break;
+ case 11:
+ { String s=yytext();
+ return new ParsedSymbol(ParsedSymbol.TYPE_LABEL,s.substring(0,s.length()-1));
+ }
+ case 41: break;
+ case 4:
+ { throw new ParseException("Unterminated string at end of line",yyline+1);
+ }
+ case 42: break;
+ case 10:
+ { isMultiname=false;
+ yybegin(STRING);
+ string.setLength(0);
+ }
+ case 43: break;
+ case 15:
+ { string.append( '\t' );
+ }
+ case 44: break;
+ case 22:
+ { return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT,new Double(Double.parseDouble((yytext()))));
+ }
+ case 45: break;
+ case 14:
+ { string.append( '\\' );
+ }
+ case 46: break;
+ case 12:
+ { throw new ParseException("Illegal escape sequence \""+yytext()+"\"",yyline+1);
+ }
+ case 47: break;
+ case 23:
+ { isMultiname=true;
+ String s=yytext();
+ multinameId=Long.parseLong(s.substring(2,s.length()-2));
+ yybegin(STRING);
+ string.setLength(0);
+ }
+ case 48: break;
+ case 16:
+ { string.append( '\n' );
+ }
+ case 49: break;
+ case 20:
+ { string.append( '\f' );
+ }
+ case 50: break;
+ case 18:
+ { string.append( '\"' );
+ }
+ case 51: break;
+ case 1:
+ {
+ }
+ case 52: break;
+ default:
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ {
+ return new ParsedSymbol(ParsedSymbol.TYPE_EOF);
+ }
+ }
+ else {
+ zzScanError(ZZ_NO_MATCH);
+ }
+ }
}
+ }
}
diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java
index a3a9679f0..0ab15a2ff 100644
--- a/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java
+++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java
@@ -32,6 +32,9 @@ public class ParsedSymbol {
public static final int TYPE_EOF = 7;
public static final int TYPE_LABEL = 8;
public static final int TYPE_COMMENT = 9;
+ public static final int TYPE_EXCEPTION_START=10;
+ public static final int TYPE_EXCEPTION_END=11;
+ public static final int TYPE_EXCEPTION_TARGET=12;
public ParsedSymbol(int type, Object value) {
this.type = type;
diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex b/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex
index 472b7357e..d9c9948d6 100644
--- a/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex
+++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex
@@ -61,6 +61,8 @@ Label = {Identifier}:
/* integer literals */
NumberLiteral = 0 | -?[1-9][0-9]*
+
+PositiveNumberLiteral = 0 | [1-9][0-9]*
/* floating point literals */
FloatLiteral = -?({FLit1}|{FLit2}|{FLit3}) {Exponent}?
@@ -75,6 +77,10 @@ OctDigit = [0-7]
/* string and character literals */
StringCharacter = [^\r\n\"\\]
+ExceptionStart = "exceptionstart "{PositiveNumberLiteral}":"
+ExceptionEnd = "exceptionend "{PositiveNumberLiteral}":"
+ExceptionTarget = "exceptiontarget "{PositiveNumberLiteral}":"
+
%state STRING,PARAMETERS
%%
@@ -85,6 +91,18 @@ StringCharacter = [^\r\n\"\\]
/* whitespace */
{WhiteSpace} { }
+ {ExceptionStart} {
+ String s=yytext();
+ return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_START,Integer.parseInt(s.substring(15,s.length()-1)));
+ }
+ {ExceptionEnd} {
+ String s=yytext();
+ return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_END,Integer.parseInt(s.substring(13,s.length()-1)));
+ }
+ {ExceptionTarget} {
+ String s=yytext();
+ return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_TARGET,Integer.parseInt(s.substring(16,s.length()-1)));
+ }
{Label} {
String s=yytext();
return new ParsedSymbol(ParsedSymbol.TYPE_LABEL,s.substring(0,s.length()-1));
diff --git a/trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java b/trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java
index 6fbbd5c00..649bc6eb8 100644
--- a/trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java
+++ b/trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java
@@ -44,7 +44,7 @@ public class ASMSourceEditorPane extends JEditorPane {
public void setBodyIndex(int bodyIndex, ABC abc) {
this.bodyIndex = bodyIndex;
this.abc = abc;
- setText(abc.bodies[bodyIndex].code.toASMSource(abc.constants));
+ setText(abc.bodies[bodyIndex].code.toASMSource(abc.constants,abc.bodies[bodyIndex]));
}
public void graph(){
@@ -53,7 +53,7 @@ public class ASMSourceEditorPane extends JEditorPane {
public void save(ConstantPool constants) {
try {
- AVM2Code acode = ASM3Parser.parse(new ByteArrayInputStream(getText().getBytes()), constants, new DialogMissingSymbolHandler());
+ AVM2Code acode = ASM3Parser.parse(new ByteArrayInputStream(getText().getBytes()), constants, new DialogMissingSymbolHandler(),abc.bodies[bodyIndex]);
abc.bodies[bodyIndex].code = acode;
Main.abcMainFrame.decompiledTextArea.reloadClass();
Main.abcMainFrame.decompiledTextArea.gotoLastTrait();
@@ -68,14 +68,13 @@ public class ASMSourceEditorPane extends JEditorPane {
public void verify(ConstantPool constants, ABC abc) {
try {
- AVM2Code acode = ASM3Parser.parse(new ByteArrayInputStream(getText().getBytes()), constants, new DialogMissingSymbolHandler());
- acode.clearSecureSWF(abc.constants, abc.bodies[bodyIndex]);
- setText(acode.toASMSource(constants));
+ AVM2Code acode = ASM3Parser.parse(new ByteArrayInputStream(getText().getBytes()), constants, new DialogMissingSymbolHandler(),abc.bodies[bodyIndex]);
+ //acode.clearSecureSWF(abc.constants, abc.bodies[bodyIndex]);
+ setText(acode.toASMSource(constants,abc.bodies[bodyIndex]));
//Main.mainFrame.decompiledTextArea.setBody(mb, abc);
} catch (IOException ex) {
- } catch (ConvertException ex) {
} catch (ParseException ex) {
JOptionPane.showMessageDialog(this, (ex.text + " on line " + ex.line));
selectLine((int) ex.line);
diff --git a/trunk/testdata/as2.fla b/trunk/testdata/as2.fla
new file mode 100644
index 000000000..47f7a8d77
Binary files /dev/null and b/trunk/testdata/as2.fla differ
diff --git a/trunk/testdata/as2.html b/trunk/testdata/as2.html
new file mode 100644
index 000000000..121b30245
--- /dev/null
+++ b/trunk/testdata/as2.html
@@ -0,0 +1,318 @@
+
+
+
+as2
+
+
+
+
+
+
+
+
+
+
diff --git a/trunk/testdata/as2.swf b/trunk/testdata/as2.swf
new file mode 100644
index 000000000..9dc5b3de6
Binary files /dev/null and b/trunk/testdata/as2.swf differ
diff --git a/trunk/testdata/as3.fla b/trunk/testdata/as3.fla
new file mode 100644
index 000000000..88d0a0919
Binary files /dev/null and b/trunk/testdata/as3.fla differ
diff --git a/trunk/testdata/as3.html b/trunk/testdata/as3.html
new file mode 100644
index 000000000..1f4482a67
--- /dev/null
+++ b/trunk/testdata/as3.html
@@ -0,0 +1,318 @@
+
+
+
+as3
+
+
+
+
+
+
+
+
+
+
diff --git a/trunk/testdata/as3.swf b/trunk/testdata/as3.swf
new file mode 100644
index 000000000..db83c18f3
Binary files /dev/null and b/trunk/testdata/as3.swf differ
diff --git a/trunk/testdata/classes/Test.as b/trunk/testdata/classes/Test.as
new file mode 100644
index 000000000..f862970d7
--- /dev/null
+++ b/trunk/testdata/classes/Test.as
@@ -0,0 +1,313 @@
+package classes {
+
+public class Test {
+ private var testPriv:int=5;
+ protected var testProt:int=9;
+
+
+ public function testHello(){
+ trace("hello");
+ }
+
+ public function testIncDec() {
+ var a=5;
+ var b=0;
+ trace("++var");
+ b=++a;
+ trace("var++");
+ b=a++;
+ trace("--var");
+ b=--a;
+ trace("var--");
+ b=a--;
+ var c=[1,2,3,4,5];
+ trace("++arr");
+ b=++c[2];
+ trace("arr++");
+ b=c[2]++;
+ trace("--arr");
+ b=--c[2];
+ trace("arr--");
+ b=c[2]--;
+
+ var d=new TestClass1();
+ trace("++property");
+ trace(++d.attrib);
+ trace("property++");
+ trace(d.attrib++);
+ trace("--property");
+ trace(--d.attrib);
+ trace("property--");
+ trace(d.attrib--);
+ return;
+ }
+ public function testDoWhile() {
+ var a=8;
+ do
+ {
+ trace("a="+a);
+ a++;
+ }
+ while(a<20);
+ return;
+ }
+ public function testInnerTry(){
+ try
+ {
+ try
+ {
+ trace("try body 1");
+ }
+ catch(e:DefinitionError)
+ {
+ trace("catched DefinitionError");
+ }
+ trace("after try 1");
+ }
+ catch(e:Error)
+ {
+ trace("catched Error");
+ }
+ finally
+ {
+ trace("finally block");
+ }
+ }
+ public function testWhileContinue() {
+ var a=5;
+ while(true)
+ {
+ if(a==9)
+ {
+ if(a==8)
+ {
+ continue;
+ }
+ if(a==9)
+ {
+ break;
+ }
+ trace("hello 1");
+ }
+ trace("hello2");
+ }
+ return;
+ }
+ public function testPrecedence() {
+ var a=0;
+ a=(5+6)*7;
+ a=5*(2+3);
+ a=5+6*7;
+ a=5*2+2;
+ trace("a="+a);
+ return;
+ }
+ public function testStrings() {
+ trace("hello");
+ trace("quotes:\"hello!\"");
+ trace("backslash: \\ ");
+ trace("single quotes: \'hello!\'");
+ trace("new line \r\n hello!");
+ }
+ public function tryContinueLevels() {
+ var a=5;
+ loop123:
+ switch(a)
+ {
+ case 57*a:
+ trace("fiftyseven multiply a");
+ var b=0;
+ while(b<50)
+ {
+ if(b==10)
+ {
+ break;
+ }
+ if(b==15)
+ {
+ break loop123;
+ }
+ b=b+1;
+ }
+ break;
+ case 13:
+ trace("thirteen");
+ case 14:
+ trace("fourteen");
+ break;
+ case 89:
+ trace("eightynine");
+ break;
+ default:
+ trace("default clause");
+ }
+
+ loop182:
+ for(var c=0;c<8;c=c+1)
+ {
+
+ loop165:
+ for(var d=0;d<25;d++)
+ {
+
+ for(var e=0;e<50;e++)
+ {
+ if(e==9)
+ {
+ break loop165;
+ }
+ if(e==20)
+ {
+ continue loop182;
+ }
+ if(e==8)
+ {
+ break;
+ }
+ break loop182;
+ }
+ }
+ trace("hello");
+ }
+ }
+ public function testSwitchDefault(){
+ var a=5;
+ switch(a)
+ {
+ case 57*a:
+ trace("fiftyseven multiply a");
+ break;
+ case 13:
+ trace("thirteen");
+ case 14:
+ trace("fourteen");
+ break;
+ case 89:
+ trace("eightynine");
+ break;
+ default:
+ trace("default clause");
+ }
+ }
+ public function testMultipleCondition(){
+ var a=5;
+ var b=8;
+ var c=9;
+ if((a<=4||b<=8)&&c==7)
+ {
+ trace("onTrue");
+ }
+ else
+ {
+ trace("onFalse");
+ }
+ }
+ public function testForBreak(){
+ for(var a=0;a<10;a++)
+ {
+ if(a==5)
+ {
+ break;
+ }
+ trace("hello:"+a);
+ }
+ }
+
+ public function testIf(){
+ var a=5;
+ if(a==7)
+ {
+ trace("onTrue");
+ }
+ }
+
+ public function testIfElse(){
+ var a=5;
+ if(a==7)
+ {
+ trace("onTrue");
+ }
+ else
+ {
+ trace("onFalse");
+ }
+ }
+ public function testFor() {
+ for(var a=0;a<10;a++)
+ {
+ trace("a="+a);
+ }
+ }
+ public function testForContinue() {
+ for(var a=0;a<10;a=a+1)
+ {
+ if(a==9)
+ {
+ if(a==5)
+ {
+ trace("part1");
+ continue;
+ }
+ trace("a="+a);
+ if(a==7)
+ {
+ trace("part2");
+ continue;
+ }
+ trace("part3");
+ }
+ else
+ {
+ trace("part4");
+ }
+ trace("part5");
+ }
+ }
+ public function testTry() {
+ var i:int;
+ i=7;
+ try
+ {
+ trace("try body");
+ }
+ catch(e:DefinitionError)
+ {
+ trace("catched DefinitionError");
+ }
+ catch(e:Error)
+ {
+ trace("Error message:"+e.message);
+ trace("Stacktrace:"+e.getStackTrace());
+ }
+ finally
+ {
+ trace("Finally part");
+ }
+ }
+ public function testSwitch(){
+ var a=5;
+ switch(a)
+ {
+ case 57*a:
+ trace("fiftyseven multiply a");
+ break;
+ case 13:
+ trace("thirteen");
+ case 14:
+ trace("fourteen");
+ break;
+ case 89:
+ trace("eightynine");
+ break;
+ }
+ }
+ public function testTernarOperator(){
+ var a=5;
+ var b=4;
+ var c=4;
+ var d=78;
+ var e=(a==b)?((c==d)?1:7):3;
+ trace("e="+e);
+ }
+ }
+}
\ No newline at end of file
diff --git a/trunk/testdata/classes/TestClass1.as b/trunk/testdata/classes/TestClass1.as
new file mode 100644
index 000000000..34b05d54c
--- /dev/null
+++ b/trunk/testdata/classes/TestClass1.as
@@ -0,0 +1,5 @@
+package classes{
+ public dynamic class TestClass1{
+ public var attrib:int=5;
+ }
+}
\ No newline at end of file