diff --git a/CHANGELOG.md b/CHANGELOG.md index dd74a5561..e9a04fcc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ All notable changes to this project will be documented in this file. - Nullpointer on recent searches loader - [#2177] Leftover process when invalid SWF opened - now main window is shown - Opening files with "Open with FFDec" on windows did not use same instance +- [#2183] AS1/2 Direct editation - case sensitive identifiers since SWF version 7 ### Changed - [#2185] MochiCrypt no longer offered for auto decrypt, user needs to choose variant from "Use unpacker" menu @@ -3386,6 +3387,7 @@ Major version of SWF to XML export changed to 2. [#2175]: https://www.free-decompiler.com/flash/issues/2175 [#2178]: https://www.free-decompiler.com/flash/issues/2178 [#2177]: https://www.free-decompiler.com/flash/issues/2177 +[#2183]: https://www.free-decompiler.com/flash/issues/2183 [#2100]: https://www.free-decompiler.com/flash/issues/2100 [#2123]: https://www.free-decompiler.com/flash/issues/2123 [#2119]: https://www.free-decompiler.com/flash/issues/2119 diff --git a/libsrc/ffdec_lib/lexers/actionscript_script.flex b/libsrc/ffdec_lib/lexers/actionscript_script.flex index 5cdf6dd24..a262f7410 100644 --- a/libsrc/ffdec_lib/lexers/actionscript_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript_script.flex @@ -38,6 +38,14 @@ import java.util.Stack; private int repeatNum = 1; + private boolean caseSensitiveIdentifiers = false; + + public static final int SWF_VERSION_CASE_SENSITIVE = 7; + + public void setCaseSensitiveIdentifiers(boolean val) { + this.caseSensitiveIdentifiers = val; + } + public int yychar() { return yychar; } @@ -182,97 +190,143 @@ Preprocessor = \u00A7\u00A7 {Identifier} "this" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); } "true" { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); } /* getURL */ - [gG][eE][tT][uU][rR][lL] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); } + [gG][eE][tT][uU][rR][lL] { if (caseSensitiveIdentifiers && !"getURL".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); } /* trace */ - [tT][rR][aA][cC][eE] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); } + [tT][rR][aA][cC][eE] { if (caseSensitiveIdentifiers && !"trace".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); } /* gotoAndStop */ - [gG][oO][tT][oO][aA][nN][dD][sS][tT][oO][pP] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); } + [gG][oO][tT][oO][aA][nN][dD][sS][tT][oO][pP] { if (caseSensitiveIdentifiers && !"gotoAndStop".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); } /* nextFrame */ - [nN][eE][xX][tT][fF][rR][aA][mM][eE] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); } + [nN][eE][xX][tT][fF][rR][aA][mM][eE] { if (caseSensitiveIdentifiers && !"nextFrame".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); } /* play */ - [pP][lL][aA][yY] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); } + [pP][lL][aA][yY] { if (caseSensitiveIdentifiers && !"play".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); } /* prevFrame */ - [pP][rR][eE][vV][fF][rR][aA][mM][eE] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); } + [pP][rR][eE][vV][fF][rR][aA][mM][eE] { if (caseSensitiveIdentifiers && !"prevFrame".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); } /* tellTarget */ - [tT][eE][lL][lL][tT][aA][rR][gG][eE][tT] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); } + [tT][eE][lL][lL][tT][aA][rR][gG][eE][tT] { if (caseSensitiveIdentifiers && !"tellTarget".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); } /* stop */ - [sS][tT][oO][pP] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); } + [sS][tT][oO][pP] { if (caseSensitiveIdentifiers && !"stop".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); } /* stopAllSounds */ - [sS][tT][oO][pP][aA][lL][lL][sS][oO][uU][nN][dD][sS] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); } + [sS][tT][oO][pP][aA][lL][lL][sS][oO][uU][nN][dD][sS] { if (caseSensitiveIdentifiers && !"stopAllSounds".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); } /* toggleHighQuality */ - [tT][oO][gG][gG][lL][eE][hH][iI][gG][hH][qQ][uU][aA][lL][iI][tT][yY] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); } + [tT][oO][gG][gG][lL][eE][hH][iI][gG][hH][qQ][uU][aA][lL][iI][tT][yY] { if (caseSensitiveIdentifiers && !"toggleHighQuality".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); } /* ifFrameLoaded */ - [iI][fF][fF][rR][aA][mM][eE][lL][oO][aA][dD][eE][dD] { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); } + [iI][fF][fF][rR][aA][mM][eE][lL][oO][aA][dD][eE][dD] { if (caseSensitiveIdentifiers && !"ifFrameLoaded".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); } /* ord */ - [oO][rR][dD] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); } + [oO][rR][dD] { if (caseSensitiveIdentifiers && !"ord".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); } /* chr */ - [cC][hH][rR] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); } + [cC][hH][rR] { if (caseSensitiveIdentifiers && !"chr".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); } /* duplicateMovieClip */ - [dD][uU][pP][lL][iI][cC][aA][tT][eE][mM][oO][vV][iI][eE][cC][lL][iI][pP] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); } + [dD][uU][pP][lL][iI][cC][aA][tT][eE][mM][oO][vV][iI][eE][cC][lL][iI][pP] { if (caseSensitiveIdentifiers && !"duplicateMovieClip".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); } /* stopDrag */ - [sS][tT][oO][pP][dD][rR][aA][gG] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); } + [sS][tT][oO][pP][dD][rR][aA][gG] { if (caseSensitiveIdentifiers && !"stopDrag".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); } /* getTimer */ - [gG][eE][tT][tT][iI][mM][eE][rR] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); } + [gG][eE][tT][tT][iI][mM][eE][rR] { if (caseSensitiveIdentifiers && !"getTimer".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); } /* loadVariables */ - [lL][oO][aA][dD][vV][aA][rR][iI][aA][bB][lL][eE][sS] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); } + [lL][oO][aA][dD][vV][aA][rR][iI][aA][bB][lL][eE][sS] { if (caseSensitiveIdentifiers && !"loadVariables".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); } /* loadMovie */ - [lL][oO][aA][dD][mM][oO][vV][iI][eE] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); } + [lL][oO][aA][dD][mM][oO][vV][iI][eE] { if (caseSensitiveIdentifiers && !"loadMovie".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); } /* gotoAndPlay */ - [gG][oO][tT][oO][aA][nN][dD][pP][lL][aA][yY] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); } + [gG][oO][tT][oO][aA][nN][dD][pP][lL][aA][yY] { if (caseSensitiveIdentifiers && !"gotoAndPlay".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); } /* mbord */ - [mM][bB][oO][rR][dD] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); } + [mM][bB][oO][rR][dD] { if (caseSensitiveIdentifiers && !"mbord".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); } /* mbchr */ - [mM][bB][cC][hH][rR] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); } + [mM][bB][cC][hH][rR] { if (caseSensitiveIdentifiers && !"mbchr".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); } /* mblength */ - [mM][bB][lL][eE][nN][gG][tT][hH] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); } + [mM][bB][lL][eE][nN][gG][tT][hH] { if (caseSensitiveIdentifiers && !"mblength".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); } /* mbsubstring */ - [mM][bB][sS][uU][bB][sS][tT][rR][iI][nN][gG] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); } + [mM][bB][sS][uU][bB][sS][tT][rR][iI][nN][gG] { if (caseSensitiveIdentifiers && !"mbsubstring".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); } /* random */ - [rR][aA][nN][dD][oO][mM] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); } + [rR][aA][nN][dD][oO][mM] { if (caseSensitiveIdentifiers && !"random".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); } /* removeMovieClip */ - [rR][eE][mM][oO][vV][eE][mM][oO][vV][iI][eE][cC][lL][iI][pP] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); } + [rR][eE][mM][oO][vV][eE][mM][oO][vV][iI][eE][cC][lL][iI][pP] { if (caseSensitiveIdentifiers && !"removeMovieClip".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); } /* startDrag */ - [sS][tT][aA][rR][tT][dD][rR][aA][gG] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); } + [sS][tT][aA][rR][tT][dD][rR][aA][gG] { if (caseSensitiveIdentifiers && !"startDrag".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); } /* substr */ - [sS][uU][bB][sS][tT][rR] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); } + [sS][uU][bB][sS][tT][rR] { if (caseSensitiveIdentifiers && !"substr".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); } /* length */ - [lL][eE][nN][gG][tT][hH] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); } + [lL][eE][nN][gG][tT][hH] { if (caseSensitiveIdentifiers && !"length".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); } /* int */ - [iI][nN][tT] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); } + [iI][nN][tT] { if (caseSensitiveIdentifiers && !"int".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); } /* targetPath */ - [tT][aA][rR][gG][eE][tT][pP][aA][tT][hH] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); } + [tT][aA][rR][gG][eE][tT][pP][aA][tT][hH] { if (caseSensitiveIdentifiers && !"targetPath".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); } /* Number */ - [nN][uU][mM][bB][eE][rR] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); } + [nN][uU][mM][bB][eE][rR] { if (caseSensitiveIdentifiers && !"Number".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); } /* String */ - [sS][tT][rR][iI][nN][gG] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); } + [sS][tT][rR][iI][nN][gG] { if (caseSensitiveIdentifiers && !"String".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); } /* eval */ - [eE][vV][aA][lL] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); } + [eE][vV][aA][lL] { if (caseSensitiveIdentifiers && !"eval".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); } /* undefined */ - [uU][nN][dD][eE][fF][iI][nN][eE][dD] { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); } + [uU][nN][dD][eE][fF][iI][nN][eE][dD] { if (caseSensitiveIdentifiers && !"undefined".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); } /* newline */ - [nN][eE][wW][lL][iI][nN][eE] { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); } + [nN][eE][wW][lL][iI][nN][eE] { if (caseSensitiveIdentifiers && !"newline".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); } /* getVersion */ - [gG][eE][tT][vV][eE][rR][sS][iI][oO][nN] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); } + [gG][eE][tT][vV][eE][rR][sS][iI][oO][nN] { if (caseSensitiveIdentifiers && !"getVersion".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); } /* call */ - [cC][aA][lL][lL] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); } + [cC][aA][lL][lL] { if (caseSensitiveIdentifiers && !"call".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); } /* loadMovieNum */ - [lL][oO][aA][dD][mM][oO][vV][iI][eE][nN][uU][mM] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); } + [lL][oO][aA][dD][mM][oO][vV][iI][eE][nN][uU][mM] { if (caseSensitiveIdentifiers && !"loadMovieNum".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); } /* loadVariablesNum */ - [lL][oO][aA][dD][vV][aA][rR][iI][aA][bB][lL][eE][sS][nN][uU][mM] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); } + [lL][oO][aA][dD][vV][aA][rR][iI][aA][bB][lL][eE][sS][nN][uU][mM] { if (caseSensitiveIdentifiers && !"loadVariablesNum".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); } /* printAsBitmapNum */ - [pP][rR][iI][nN][tT][aA][sS][bB][iI][tT][mM][aA][pP][nN][uU][mM] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); } + [pP][rR][iI][nN][tT][aA][sS][bB][iI][tT][mM][aA][pP][nN][uU][mM] { if (caseSensitiveIdentifiers && !"printAsBitmapNum".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); } /* printNum */ - [pP][rR][iI][nN][tT][nN][uU][mM] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); } + [pP][rR][iI][nN][tT][nN][uU][mM] { if (caseSensitiveIdentifiers && !"printNum".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); } /* printAsBitmap */ - [pP][rR][iI][nN][tT][aA][sS][bB][iI][tT][mM][aA][pP] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); } + [pP][rR][iI][nN][tT][aA][sS][bB][iI][tT][mM][aA][pP] { if (caseSensitiveIdentifiers && !"printAsBitmap".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); } /* print */ - [pP][rR][iI][nN][tT] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); } + [pP][rR][iI][nN][tT] { if (caseSensitiveIdentifiers && !"print".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); } /* unloadMovie */ - [uU][nN][lL][oO][aA][dD][mM][oO][vV][iI][eE] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); } + [uU][nN][lL][oO][aA][dD][mM][oO][vV][iI][eE] { if (caseSensitiveIdentifiers && !"unloadMovie".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); } /* unloadMovieNum */ - [uU][nN][lL][oO][aA][dD][mM][oO][vV][iI][eE][nN][uU][mM] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); } + [uU][nN][lL][oO][aA][dD][mM][oO][vV][iI][eE][nN][uU][mM] { if (caseSensitiveIdentifiers && !"unloadMovieNum".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); } /* fscommand */ - [fF][sS][cC][oO][mM][mM][aA][nN][dD] { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); } + [fF][sS][cC][oO][mM][mM][aA][nN][dD] { if (caseSensitiveIdentifiers && !"fscommand".equals(yytext())) return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); } /* operators */ diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java index d7df0e90d..627195c30 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java @@ -175,8 +175,8 @@ import java.util.Map; * * @author JPEXS */ -public class ActionScript2Parser { - +public class ActionScript2Parser { + public static final List BUILTIN_CASTS = Arrays.asList(new String[]{ "flash.display.BitmapData", "flash.external.ExternalInterface", @@ -2107,6 +2107,9 @@ public class ActionScript2Parser { List retTree = new ArrayList<>(); this.constantPool = constantPool; lexer = new ActionScriptLexer(new StringReader(str)); + if (swfVersion >= ActionScriptLexer.SWF_VERSION_CASE_SENSITIVE) { + lexer.setCaseSensitiveIdentifiers(true); + } BUTTONCONDACTION newButtonCond = new BUTTONCONDACTION(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java index 1eb0a74e0..ff986a92b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java @@ -1,16 +1,18 @@ -/* - * Copyright (C) 2010-2023 JPEXS, All rights reserved. - * +/* The following code was generated by JFlex 1.6.0 */ + + /* + * Copyright (C) 2010-2016 JPEXS, All rights reserved. + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. */ @@ -84,159 +86,165 @@ public final class ActionScriptLexer { + "\1\6\17\0\1\7\1\6\1\7\36\6\33\7\2\0\131\6\13\7" + "\1\6\16\0\12\7\41\6\11\7\2\6\4\0\1\6\2\0\1\7" + "\30\6\4\7\1\6\11\7\1\6\3\7\1\6\5\7\22\0\31\6" - + "\3\7\4\0\13\6\65\0\25\6\1\0\22\6\13\0\61\7\66\6" - + "\3\7\1\6\22\7\1\6\7\7\12\6\2\7\2\0\12\7\1\0" - + "\20\6\3\7\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6" - + "\1\0\1\6\3\0\4\6\2\0\1\7\1\6\7\7\2\0\2\7" - + "\2\0\3\7\1\6\10\0\1\7\4\0\2\6\1\0\3\6\2\7" - + "\2\0\12\7\4\6\7\0\2\6\1\0\1\7\2\0\3\7\1\0" - + "\6\6\4\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0" - + "\2\6\1\0\2\6\2\0\1\7\1\0\5\7\4\0\2\7\2\0" - + "\3\7\3\0\1\7\7\0\4\6\1\0\1\6\7\0\14\7\3\6" - + "\1\7\13\0\3\7\1\0\11\6\1\0\3\6\1\0\26\6\1\0" - + "\7\6\1\0\2\6\1\0\5\6\2\0\1\7\1\6\10\7\1\0" - + "\3\7\1\0\3\7\2\0\1\6\17\0\2\6\2\7\2\0\12\7" - + "\1\0\1\6\7\0\1\6\6\7\1\0\3\7\1\0\10\6\2\0" - + "\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6\2\0" - + "\1\7\1\6\7\7\2\0\2\7\2\0\3\7\7\0\3\7\4\0" - + "\2\6\1\0\3\6\2\7\2\0\12\7\1\0\1\6\20\0\1\7" - + "\1\6\1\0\6\6\3\0\3\6\1\0\4\6\3\0\2\6\1\0" - + "\1\6\1\0\2\6\3\0\2\6\3\0\3\6\3\0\14\6\4\0" - + "\5\7\3\0\3\7\1\0\4\7\2\0\1\6\6\0\1\7\16\0" - + "\12\7\11\0\1\6\6\0\5\7\10\6\1\0\3\6\1\0\27\6" - + "\1\0\20\6\3\0\1\6\7\7\1\0\3\7\1\0\4\7\7\0" - + "\2\7\1\0\3\6\5\0\2\6\2\7\2\0\12\7\20\0\1\6" - + "\3\7\1\0\10\6\1\0\3\6\1\0\27\6\1\0\12\6\1\0" - + "\5\6\2\0\1\7\1\6\7\7\1\0\3\7\1\0\4\7\7\0" - + "\2\7\7\0\1\6\1\0\2\6\2\7\2\0\12\7\1\0\2\6" - + "\15\0\4\7\11\6\1\0\3\6\1\0\51\6\2\7\1\6\7\7" - + "\1\0\3\7\1\0\4\7\1\6\5\0\3\6\1\7\7\0\3\6" - + "\2\7\2\0\12\7\12\0\6\6\1\0\3\7\1\0\22\6\3\0" - + "\30\6\1\0\11\6\1\0\1\6\2\0\7\6\3\0\1\7\4\0" - + "\6\7\1\0\1\7\1\0\10\7\6\0\12\7\2\0\2\7\15\0" - + "\60\6\1\7\2\6\7\7\4\0\10\6\10\7\1\0\12\7\47\0" - + "\2\6\1\0\1\6\1\0\5\6\1\0\30\6\1\0\1\6\1\0" - + "\12\6\1\7\2\6\11\7\1\6\2\0\5\6\1\0\1\6\1\0" - + "\6\7\2\0\12\7\2\0\4\6\40\0\1\6\27\0\2\7\6\0" - + "\12\7\13\0\1\7\1\0\1\7\1\0\1\7\4\0\2\7\10\6" - + "\1\0\44\6\4\0\24\7\1\0\2\7\5\6\13\7\1\0\44\7" - + "\11\0\1\7\71\0\53\6\24\7\1\6\12\7\6\0\6\6\4\7" - + "\4\6\3\7\1\6\3\7\2\6\7\7\3\6\4\7\15\6\14\7" - + "\1\6\17\7\2\0\46\6\1\0\1\6\5\0\1\6\2\0\53\6" - + "\1\0\u014d\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6" - + "\2\0\51\6\1\0\4\6\2\0\41\6\1\0\4\6\2\0\7\6" - + "\1\0\1\6\1\0\4\6\2\0\17\6\1\0\71\6\1\0\4\6" - + "\2\0\103\6\2\0\3\7\40\0\20\6\20\0\126\6\2\0\6\6" - + "\3\0\u026c\6\2\0\21\6\1\0\32\6\5\0\113\6\3\0\13\6" - + "\7\0\15\6\1\0\4\6\3\7\13\0\22\6\3\7\13\0\22\6" - + "\2\7\14\0\15\6\1\0\3\6\1\0\2\7\14\0\64\6\40\7" - + "\3\0\1\6\3\0\2\6\1\7\2\0\12\7\41\0\4\7\1\0" - + "\12\7\6\0\131\6\7\0\5\6\2\7\42\6\1\7\1\6\5\0" - + "\106\6\12\0\37\6\1\0\14\7\4\0\14\7\12\0\12\7\36\6" - + "\2\0\5\6\13\0\54\6\4\0\32\6\6\0\12\7\46\0\27\6" - + "\5\7\4\0\65\6\12\7\1\0\35\7\2\0\13\7\6\0\12\7" - + "\15\0\1\6\10\0\16\7\1\0\2\7\77\0\5\7\57\6\21\7" - + "\7\6\4\0\12\7\21\0\11\7\14\0\3\7\36\6\15\7\2\6" - + "\12\7\54\6\16\7\14\0\44\6\24\7\10\0\12\7\3\0\3\6" - + "\12\7\44\6\2\0\11\6\7\0\53\6\2\0\3\6\20\0\3\7" - + "\1\0\25\7\4\6\1\7\6\6\1\7\2\6\3\7\1\6\5\0" - + "\300\6\72\7\1\0\5\7\u0116\6\2\0\6\6\2\0\46\6\2\0" - + "\6\6\2\0\10\6\1\0\1\6\1\0\1\6\1\0\1\6\1\0" - + "\37\6\2\0\65\6\1\0\7\6\1\0\1\6\3\0\3\6\1\0" - + "\7\6\3\0\4\6\2\0\6\6\4\0\15\6\5\0\3\6\1\0" - + "\7\6\16\0\5\7\30\0\1\124\1\124\5\7\20\0\2\6\23\0" - + "\1\6\13\0\5\7\1\0\12\7\1\0\1\6\15\0\1\6\20\0" - + "\15\6\3\0\40\6\20\0\15\7\4\0\1\7\3\0\14\7\21\0" - + "\1\6\4\0\1\6\2\0\12\6\1\0\1\6\3\0\5\6\6\0" - + "\1\6\1\0\1\6\1\0\1\6\1\0\4\6\1\0\13\6\2\0" - + "\4\6\5\0\5\6\4\0\1\6\21\0\51\6\u0a77\0\57\6\1\0" - + "\57\6\1\0\205\6\6\0\4\6\3\7\2\6\14\0\46\6\1\0" - + "\1\6\5\0\1\6\2\0\70\6\7\0\1\6\17\0\1\7\27\6" - + "\11\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6" - + "\1\0\7\6\1\0\7\6\1\0\7\6\1\0\40\7\57\0\1\6" - + "\u01d5\0\3\6\31\0\11\6\6\7\1\0\5\6\2\0\5\6\4\0" - + "\126\6\2\0\2\7\2\0\3\6\1\0\132\6\1\0\4\6\5\0" - + "\53\6\1\0\136\6\21\0\40\6\60\0\20\6\u0200\0\u19c0\6\100\0" - + "\u51fd\6\3\0\u048d\6\103\0\56\6\2\0\u010d\6\3\0\20\6\12\7" - + "\2\6\24\0\57\6\1\7\4\0\12\7\1\0\37\6\2\7\120\6" - + "\2\7\45\0\11\6\2\0\147\6\2\0\65\6\2\0\11\6\52\0" - + "\15\6\1\7\3\6\1\7\4\6\1\7\27\6\5\7\4\0\1\7" - + "\13\0\1\6\7\0\64\6\14\0\2\7\62\6\22\7\12\0\12\7" - + "\6\0\22\7\6\6\3\0\1\6\1\0\2\6\13\7\34\6\10\7" - + "\2\0\27\6\15\7\14\0\35\6\3\0\4\7\57\6\16\7\16\0" - + "\1\6\12\7\6\0\5\6\1\7\12\6\12\7\5\6\1\0\51\6" - + "\16\7\11\0\3\6\1\7\10\6\2\7\2\0\12\7\6\0\27\6" - + "\3\0\1\6\3\7\62\6\1\7\1\6\3\7\2\6\2\7\5\6" - + "\2\7\1\6\1\7\1\6\30\0\3\6\2\0\13\6\5\7\2\0" - + "\3\6\2\7\12\0\6\6\2\0\6\6\2\0\6\6\11\0\7\6" - + "\1\0\7\6\1\0\53\6\1\0\16\6\6\0\163\6\10\7\1\0" - + "\2\7\2\0\12\7\6\0\u2ba4\6\14\0\27\6\4\0\61\6\u2104\0" - + "\u016e\6\2\0\152\6\46\0\7\6\14\0\5\6\5\0\1\6\1\7" - + "\12\6\1\0\15\6\1\0\5\6\1\0\1\6\1\0\2\6\1\0" - + "\2\6\1\0\154\6\41\0\u016b\6\22\0\100\6\2\0\66\6\50\0" - + "\15\6\3\0\20\7\20\0\20\7\3\0\2\6\30\0\3\6\31\0" - + "\1\6\6\0\5\6\1\0\207\6\2\0\1\7\4\0\1\6\13\0" - + "\12\7\7\0\32\6\4\0\1\6\1\0\32\6\13\0\131\6\3\0" - + "\6\6\2\0\6\6\2\0\6\6\2\0\3\6\3\0\2\6\3\0" - + "\2\6\22\0\3\7\4\0\14\6\1\0\32\6\1\0\23\6\1\0" - + "\2\6\1\0\17\6\2\0\16\6\42\0\173\6\105\0\65\6\210\0" - + "\1\7\202\0\35\6\3\0\61\6\17\0\1\7\37\0\40\6\15\0" - + "\36\6\5\0\46\6\5\7\5\0\36\6\2\0\44\6\4\0\10\6" - + "\1\0\5\6\52\0\236\6\2\0\12\7\6\0\44\6\4\0\44\6" - + "\4\0\50\6\10\0\64\6\234\0\u0137\6\11\0\26\6\12\0\10\6" - + "\230\0\6\6\2\0\1\6\1\0\54\6\1\0\2\6\3\0\1\6" - + "\2\0\27\6\12\0\27\6\11\0\37\6\101\0\23\6\1\0\2\6" - + "\12\0\26\6\12\0\32\6\106\0\70\6\6\0\2\6\100\0\1\6" - + "\3\7\1\0\2\7\5\0\4\7\4\6\1\0\3\6\1\0\35\6" - + "\2\0\3\7\4\0\1\7\40\0\35\6\3\0\35\6\43\0\10\6" - + "\1\0\34\6\2\7\31\0\66\6\12\0\26\6\12\0\23\6\15\0" - + "\22\6\156\0\111\6\67\0\63\6\15\0\63\6\15\0\44\6\4\7" - + "\10\0\12\7\u0146\0\52\6\1\0\2\7\3\0\2\6\116\0\35\6" - + "\12\0\1\6\10\0\26\6\13\7\137\0\25\6\33\0\27\6\11\0" - + "\3\7\65\6\17\7\37\0\12\7\17\0\4\7\55\6\13\7\2\0" - + "\1\7\17\0\1\7\2\0\31\6\7\0\12\7\6\0\3\7\44\6" - + "\16\7\1\0\12\7\4\0\1\6\2\7\1\6\10\0\43\6\1\7" - + "\2\0\1\6\11\0\3\7\60\6\16\7\4\6\4\0\4\7\1\0" - + "\14\7\1\6\1\0\1\6\43\0\22\6\1\0\31\6\14\7\6\0" - + "\1\7\101\0\7\6\1\0\1\6\1\0\4\6\1\0\17\6\1\0" - + "\12\6\7\0\57\6\14\7\5\0\12\7\6\0\4\7\1\0\10\6" - + "\2\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6" - + "\1\0\2\7\1\6\7\7\2\0\2\7\2\0\3\7\2\0\1\6" - + "\6\0\1\7\5\0\5\6\2\7\2\0\7\7\3\0\5\7\213\0" - + "\65\6\22\7\4\6\5\0\12\7\4\0\1\7\3\6\36\0\60\6" - + "\24\7\2\6\1\0\1\6\10\0\12\7\246\0\57\6\7\7\2\0" - + "\11\7\27\0\4\6\2\7\42\0\60\6\21\7\3\0\1\6\13\0" - + "\12\7\46\0\53\6\15\7\1\6\7\0\12\7\66\0\33\6\2\0" - + "\17\7\4\0\12\7\306\0\54\6\17\7\145\0\100\6\12\7\25\0" - + "\10\6\2\0\1\6\2\0\10\6\1\0\2\6\1\0\30\6\6\7" - + "\1\0\2\7\2\0\4\7\1\6\1\7\1\6\2\7\14\0\12\7" - + "\106\0\10\6\2\0\47\6\7\7\2\0\7\7\1\6\1\0\1\6" - + "\1\7\33\0\1\6\12\7\50\6\7\7\1\6\4\7\10\0\1\7" - + "\10\0\1\6\13\7\56\6\20\7\3\0\1\6\42\0\71\6\u0107\0" - + "\11\6\1\0\45\6\10\7\1\0\10\7\1\6\17\0\12\7\30\0" - + "\36\6\2\0\26\7\1\0\16\7\111\0\7\6\1\0\2\6\1\0" - + "\46\6\6\7\3\0\1\7\1\0\2\7\1\0\7\7\1\6\1\7" - + "\10\0\12\7\6\0\6\6\1\0\2\6\1\0\40\6\5\7\1\0" - + "\2\7\1\0\5\7\1\6\7\0\12\7\u0136\0\23\6\4\7\271\0" - + "\1\6\54\0\4\6\37\0\u039a\6\146\0\157\6\21\0\304\6\u0abc\0" - + "\u042f\6\1\0\11\7\u0fc7\0\u0247\6\u21b9\0\u0239\6\7\0\37\6\1\0" - + "\12\7\146\0\36\6\2\0\5\7\13\0\60\6\7\7\11\0\4\6" - + "\14\0\12\7\11\0\25\6\5\0\23\6\u02b0\0\100\6\200\0\113\6" - + "\4\0\1\7\1\6\67\7\7\0\4\7\15\6\100\0\2\6\1\0" - + "\1\6\1\7\13\0\2\7\16\0\u17f8\6\10\0\u04d6\6\52\0\11\6" - + "\u22f7\0\u011f\6\61\0\3\6\21\0\4\6\10\0\u018c\6\u0904\0\153\6" - + "\5\0\15\6\3\0\11\6\7\0\12\6\3\0\2\7\1\0\4\7" - + "\u14c1\0\5\7\3\0\26\7\2\0\7\7\36\0\4\7\224\0\3\7" - + "\u01bb\0\125\6\1\0\107\6\1\0\2\6\2\0\1\6\2\0\2\6" - + "\2\0\4\6\1\0\14\6\1\0\1\6\1\0\7\6\1\0\101\6" - + "\1\0\4\6\2\0\10\6\1\0\7\6\1\0\34\6\1\0\4\6" - + "\1\0\5\6\1\0\1\6\3\0\7\6\1\0\u0154\6\2\0\31\6" - + "\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6\1\0\31\6" - + "\1\0\37\6\1\0\31\6\1\0\37\6\1\0\31\6\1\0\10\6" - + "\2\0\62\7\u0200\0\67\7\4\0\62\7\10\0\1\7\16\0\1\7" - + "\26\0\5\7\1\0\17\7\u0550\0\7\7\1\0\21\7\2\0\7\7" - + "\1\0\2\7\1\0\5\7\325\0\55\6\3\0\7\7\7\6\2\0" - + "\12\7\4\0\1\6\u0171\0\54\6\16\7\5\0\1\6\u0500\0\305\6" + + "\3\7\4\0\13\6\5\0\30\6\1\0\6\6\1\0\2\7\6\0" + + "\10\7\52\6\72\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6" + + "\2\7\2\0\12\7\1\0\20\6\3\7\1\0\10\6\2\0\2\6" + + "\2\0\26\6\1\0\7\6\1\0\1\6\3\0\4\6\2\0\1\7" + + "\1\6\7\7\2\0\2\7\2\0\3\7\1\6\10\0\1\7\4\0" + + "\2\6\1\0\3\6\2\7\2\0\12\7\4\6\7\0\2\6\1\0" + + "\1\7\2\0\3\7\1\0\6\6\4\0\2\6\2\0\26\6\1\0" + + "\7\6\1\0\2\6\1\0\2\6\1\0\2\6\2\0\1\7\1\0" + + "\5\7\4\0\2\7\2\0\3\7\3\0\1\7\7\0\4\6\1\0" + + "\1\6\7\0\14\7\3\6\1\7\13\0\3\7\1\0\11\6\1\0" + + "\3\6\1\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6\2\0" + + "\1\7\1\6\10\7\1\0\3\7\1\0\3\7\2\0\1\6\17\0" + + "\2\6\2\7\2\0\12\7\1\0\1\6\7\0\1\6\6\7\1\0" + + "\3\7\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0" + + "\2\6\1\0\5\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0" + + "\3\7\7\0\3\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7" + + "\1\0\1\6\20\0\1\7\1\6\1\0\6\6\3\0\3\6\1\0" + + "\4\6\3\0\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0" + + "\3\6\3\0\14\6\4\0\5\7\3\0\3\7\1\0\4\7\2\0" + + "\1\6\6\0\1\7\16\0\12\7\11\0\1\6\6\0\5\7\10\6" + + "\1\0\3\6\1\0\27\6\1\0\20\6\2\0\1\7\1\6\7\7" + + "\1\0\3\7\1\0\4\7\7\0\2\7\1\0\3\6\2\0\1\6" + + "\2\0\2\6\2\7\2\0\12\7\20\0\1\6\3\7\1\0\10\6" + + "\1\0\3\6\1\0\27\6\1\0\12\6\1\0\5\6\2\0\1\7" + + "\1\6\7\7\1\0\3\7\1\0\4\7\7\0\2\7\6\0\2\6" + + "\1\0\2\6\2\7\2\0\12\7\1\0\2\6\15\0\4\7\11\6" + + "\1\0\3\6\1\0\51\6\2\7\1\6\7\7\1\0\3\7\1\0" + + "\4\7\1\6\5\0\3\6\1\7\7\0\3\6\2\7\2\0\12\7" + + "\12\0\6\6\1\0\3\7\1\0\22\6\3\0\30\6\1\0\11\6" + + "\1\0\1\6\2\0\7\6\3\0\1\7\4\0\6\7\1\0\1\7" + + "\1\0\10\7\6\0\12\7\2\0\2\7\15\0\60\6\1\7\2\6" + + "\7\7\4\0\10\6\10\7\1\0\12\7\47\0\2\6\1\0\1\6" + + "\1\0\5\6\1\0\30\6\1\0\1\6\1\0\12\6\1\7\2\6" + + "\11\7\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7" + + "\2\0\4\6\40\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7" + + "\1\0\1\7\1\0\1\7\4\0\2\7\10\6\1\0\44\6\4\0" + + "\24\7\1\0\2\7\5\6\13\7\1\0\44\7\11\0\1\7\71\0" + + "\53\6\24\7\1\6\12\7\6\0\6\6\4\7\4\6\3\7\1\6" + + "\3\7\2\6\7\7\3\6\4\7\15\6\14\7\1\6\17\7\2\0" + + "\46\6\1\0\1\6\5\0\1\6\2\0\53\6\1\0\u014d\6\1\0" + + "\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\51\6\1\0" + + "\4\6\2\0\41\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0" + + "\4\6\2\0\17\6\1\0\71\6\1\0\4\6\2\0\103\6\2\0" + + "\3\7\40\0\20\6\20\0\126\6\2\0\6\6\3\0\u026c\6\2\0" + + "\21\6\1\0\32\6\5\0\113\6\3\0\13\6\7\0\22\6\4\7" + + "\11\0\23\6\3\7\13\0\22\6\2\7\14\0\15\6\1\0\3\6" + + "\1\0\2\7\14\0\64\6\40\7\3\0\1\6\3\0\2\6\1\7" + + "\2\0\12\7\41\0\17\7\6\0\131\6\7\0\5\6\2\7\42\6" + + "\1\7\1\6\5\0\106\6\12\0\37\6\1\0\14\7\4\0\14\7" + + "\12\0\12\7\36\6\2\0\5\6\13\0\54\6\4\0\32\6\6\0" + + "\12\7\46\0\27\6\5\7\4\0\65\6\12\7\1\0\35\7\2\0" + + "\13\7\6\0\12\7\15\0\1\6\10\0\16\7\1\0\20\7\61\0" + + "\5\7\57\6\21\7\10\6\3\0\12\7\21\0\11\7\14\0\3\7" + + "\36\6\15\7\2\6\12\7\54\6\16\7\14\0\44\6\24\7\10\0" + + "\12\7\3\0\3\6\12\7\44\6\2\0\11\6\7\0\53\6\2\0" + + "\3\6\20\0\3\7\1\0\25\7\4\6\1\7\6\6\1\7\2\6" + + "\3\7\1\6\5\0\300\6\100\7\u0116\6\2\0\6\6\2\0\46\6" + + "\2\0\6\6\2\0\10\6\1\0\1\6\1\0\1\6\1\0\1\6" + + "\1\0\37\6\2\0\65\6\1\0\7\6\1\0\1\6\3\0\3\6" + + "\1\0\7\6\3\0\4\6\2\0\6\6\4\0\15\6\5\0\3\6" + + "\1\0\7\6\16\0\5\7\30\0\1\124\1\124\5\7\20\0\2\6" + + "\23\0\1\6\13\0\5\7\1\0\12\7\1\0\1\6\15\0\1\6" + + "\20\0\15\6\3\0\41\6\17\0\15\7\4\0\1\7\3\0\14\7" + + "\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6\3\0\5\6" + + "\6\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6\1\0\13\6" + + "\2\0\4\6\5\0\5\6\4\0\1\6\21\0\51\6\u0a77\0\345\6" + + "\6\0\4\6\3\7\2\6\14\0\46\6\1\0\1\6\5\0\1\6" + + "\2\0\70\6\7\0\1\6\17\0\1\7\27\6\11\0\7\6\1\0" + + "\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0" + + "\7\6\1\0\7\6\1\0\40\7\57\0\1\6\u01d5\0\3\6\31\0" + + "\11\6\6\7\1\0\5\6\2\0\5\6\4\0\126\6\2\0\2\7" + + "\2\0\3\6\1\0\132\6\1\0\4\6\5\0\53\6\1\0\136\6" + + "\21\0\40\6\60\0\20\6\u0200\0\u19c0\6\100\0\u568d\6\103\0\56\6" + + "\2\0\u010d\6\3\0\20\6\12\7\2\6\24\0\57\6\1\7\4\0" + + "\12\7\1\0\37\6\2\7\120\6\2\7\45\0\11\6\2\0\147\6" + + "\2\0\100\6\5\0\2\6\1\0\1\6\1\0\5\6\30\0\20\6" + + "\1\7\3\6\1\7\4\6\1\7\27\6\5\7\4\0\1\7\13\0" + + "\1\6\7\0\64\6\14\0\2\7\62\6\22\7\12\0\12\7\6\0" + + "\22\7\6\6\3\0\1\6\1\0\2\6\13\7\34\6\10\7\2\0" + + "\27\6\15\7\14\0\35\6\3\0\4\7\57\6\16\7\16\0\1\6" + + "\12\7\6\0\5\6\1\7\12\6\12\7\5\6\1\0\51\6\16\7" + + "\11\0\3\6\1\7\10\6\2\7\2\0\12\7\6\0\27\6\3\0" + + "\1\6\3\7\62\6\1\7\1\6\3\7\2\6\2\7\5\6\2\7" + + "\1\6\1\7\1\6\30\0\3\6\2\0\13\6\5\7\2\0\3\6" + + "\2\7\12\0\6\6\2\0\6\6\2\0\6\6\11\0\7\6\1\0" + + "\7\6\1\0\53\6\1\0\16\6\6\0\163\6\10\7\1\0\2\7" + + "\2\0\12\7\6\0\u2ba4\6\14\0\27\6\4\0\61\6\u2104\0\u016e\6" + + "\2\0\152\6\46\0\7\6\14\0\5\6\5\0\1\6\1\7\12\6" + + "\1\0\15\6\1\0\5\6\1\0\1\6\1\0\2\6\1\0\2\6" + + "\1\0\154\6\41\0\u016b\6\22\0\100\6\2\0\66\6\50\0\15\6" + + "\3\0\20\7\20\0\20\7\3\0\2\6\30\0\3\6\31\0\1\6" + + "\6\0\5\6\1\0\207\6\2\0\1\7\4\0\1\6\13\0\12\7" + + "\7\0\32\6\4\0\1\6\1\0\32\6\13\0\131\6\3\0\6\6" + + "\2\0\6\6\2\0\6\6\2\0\3\6\3\0\2\6\3\0\2\6" + + "\22\0\3\7\4\0\14\6\1\0\32\6\1\0\23\6\1\0\2\6" + + "\1\0\17\6\2\0\16\6\42\0\173\6\105\0\65\6\210\0\1\7" + + "\202\0\35\6\3\0\61\6\17\0\1\7\37\0\40\6\15\0\36\6" + + "\5\0\46\6\5\7\5\0\36\6\2\0\44\6\4\0\10\6\1\0" + + "\5\6\52\0\236\6\2\0\12\7\6\0\44\6\4\0\44\6\4\0" + + "\50\6\10\0\64\6\14\0\13\6\1\0\17\6\1\0\7\6\1\0" + + "\2\6\1\0\13\6\1\0\17\6\1\0\7\6\1\0\2\6\103\0" + + "\u0137\6\11\0\26\6\12\0\10\6\30\0\6\6\1\0\52\6\1\0" + + "\11\6\105\0\6\6\2\0\1\6\1\0\54\6\1\0\2\6\3\0" + + "\1\6\2\0\27\6\12\0\27\6\11\0\37\6\101\0\23\6\1\0" + + "\2\6\12\0\26\6\12\0\32\6\106\0\70\6\6\0\2\6\100\0" + + "\1\6\3\7\1\0\2\7\5\0\4\7\4\6\1\0\3\6\1\0" + + "\35\6\2\0\3\7\4\0\1\7\40\0\35\6\3\0\35\6\43\0" + + "\10\6\1\0\34\6\2\7\31\0\66\6\12\0\26\6\12\0\23\6" + + "\15\0\22\6\156\0\111\6\67\0\63\6\15\0\63\6\15\0\44\6" + + "\4\7\10\0\12\7\u0146\0\52\6\1\0\2\7\3\0\2\6\116\0" + + "\35\6\12\0\1\6\10\0\26\6\13\7\37\0\22\6\4\7\52\0" + + "\25\6\33\0\27\6\11\0\3\7\65\6\17\7\37\0\13\7\2\6" + + "\2\7\1\6\11\0\4\7\55\6\13\7\2\0\1\7\4\0\1\7" + + "\12\0\1\7\2\0\31\6\7\0\12\7\6\0\3\7\44\6\16\7" + + "\1\0\12\7\4\0\1\6\2\7\1\6\10\0\43\6\1\7\2\0" + + "\1\6\11\0\3\7\60\6\16\7\4\6\4\0\4\7\1\0\14\7" + + "\1\6\1\0\1\6\43\0\22\6\1\0\31\6\14\7\6\0\1\7" + + "\101\0\7\6\1\0\1\6\1\0\4\6\1\0\17\6\1\0\12\6" + + "\7\0\57\6\14\7\5\0\12\7\6\0\4\7\1\0\10\6\2\0" + + "\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6\1\0" + + "\2\7\1\6\7\7\2\0\2\7\2\0\3\7\2\0\1\6\6\0" + + "\1\7\5\0\5\6\2\7\2\0\7\7\3\0\5\7\213\0\65\6" + + "\22\7\4\6\5\0\12\7\4\0\1\7\3\6\36\0\60\6\24\7" + + "\2\6\1\0\1\6\10\0\12\7\246\0\57\6\7\7\2\0\11\7" + + "\27\0\4\6\2\7\42\0\60\6\21\7\3\0\1\6\13\0\12\7" + + "\46\0\53\6\15\7\1\6\7\0\12\7\66\0\33\6\2\0\17\7" + + "\4\0\12\7\6\0\7\6\271\0\54\6\17\7\145\0\100\6\12\7" + + "\25\0\10\6\2\0\1\6\2\0\10\6\1\0\2\6\1\0\30\6" + + "\6\7\1\0\2\7\2\0\4\7\1\6\1\7\1\6\2\7\14\0" + + "\12\7\106\0\10\6\2\0\47\6\7\7\2\0\7\7\1\6\1\0" + + "\1\6\1\7\33\0\1\6\12\7\50\6\7\7\1\6\4\7\10\0" + + "\1\7\10\0\1\6\13\7\56\6\20\7\3\0\1\6\22\0\111\6" + + "\u0107\0\11\6\1\0\45\6\10\7\1\0\10\7\1\6\17\0\12\7" + + "\30\0\36\6\2\0\26\7\1\0\16\7\111\0\7\6\1\0\2\6" + + "\1\0\46\6\6\7\3\0\1\7\1\0\2\7\1\0\7\7\1\6" + + "\1\7\10\0\12\7\6\0\6\6\1\0\2\6\1\0\40\6\5\7" + + "\1\0\2\7\1\0\5\7\1\6\7\0\12\7\u0136\0\23\6\4\7" + + "\271\0\1\6\54\0\4\6\37\0\u039a\6\146\0\157\6\21\0\304\6" + + "\u0a4c\0\141\6\17\0\u042f\6\1\0\11\7\u0fc7\0\u0247\6\u21b9\0\u0239\6" + + "\7\0\37\6\1\0\12\7\6\0\117\6\1\0\12\7\6\0\36\6" + + "\2\0\5\7\13\0\60\6\7\7\11\0\4\6\14\0\12\7\11\0" + + "\25\6\5\0\23\6\u02b0\0\100\6\200\0\113\6\4\0\1\7\1\6" + + "\67\7\7\0\4\7\15\6\100\0\2\6\1\0\1\6\1\7\13\0" + + "\2\7\16\0\u17f8\6\10\0\u04d6\6\52\0\11\6\u22e7\0\4\6\1\0" + + "\7\6\1\0\2\6\1\0\u0123\6\55\0\3\6\21\0\4\6\10\0" + + "\u018c\6\u0904\0\153\6\5\0\15\6\3\0\11\6\7\0\12\6\3\0" + + "\2\7\1\0\4\7\u125c\0\56\7\2\0\27\7\u021e\0\5\7\3\0" + + "\26\7\2\0\7\7\36\0\4\7\224\0\3\7\u01bb\0\125\6\1\0" + + "\107\6\1\0\2\6\2\0\1\6\2\0\2\6\2\0\4\6\1\0" + + "\14\6\1\0\1\6\1\0\7\6\1\0\101\6\1\0\4\6\2\0" + + "\10\6\1\0\7\6\1\0\34\6\1\0\4\6\1\0\5\6\1\0" + + "\1\6\3\0\7\6\1\0\u0154\6\2\0\31\6\1\0\31\6\1\0" + + "\37\6\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6\1\0" + + "\31\6\1\0\37\6\1\0\31\6\1\0\10\6\2\0\62\7\u0200\0" + + "\67\7\4\0\62\7\10\0\1\7\16\0\1\7\26\0\5\7\1\0" + + "\17\7\u0450\0\37\6\341\0\7\7\1\0\21\7\2\0\7\7\1\0" + + "\2\7\1\0\5\7\325\0\55\6\3\0\7\7\7\6\2\0\12\7" + + "\4\0\1\6\u0141\0\36\6\1\7\21\0\54\6\16\7\5\0\1\6" + + "\u04e0\0\7\6\1\0\4\6\1\0\2\6\1\0\17\6\1\0\305\6" + "\13\0\7\7\51\0\104\6\7\7\1\6\4\0\12\7\u0356\0\1\6" + "\u014f\0\4\6\1\0\33\6\1\0\2\6\1\0\1\6\2\0\1\6" + "\1\0\12\6\1\0\4\6\1\0\1\6\1\0\1\6\6\0\1\6" @@ -244,8 +252,8 @@ public final class ActionScriptLexer { + "\1\0\1\6\2\0\1\6\1\0\1\6\1\0\1\6\1\0\1\6" + "\1\0\1\6\1\0\2\6\1\0\1\6\2\0\4\6\1\0\7\6" + "\1\0\4\6\1\0\4\6\1\0\1\6\1\0\12\6\1\0\21\6" - + "\5\0\3\6\1\0\5\6\1\0\21\6\u0d34\0\12\7\u0406\0\ua6de\6" - + "\42\0\u1035\6\13\0\336\6\2\0\u1682\6\16\0\u1d31\6\u0c1f\0\u021e\6" + + "\5\0\3\6\1\0\5\6\1\0\21\6\u0d34\0\12\7\u0406\0\ua6e0\6" + + "\40\0\u1039\6\7\0\336\6\2\0\u1682\6\16\0\u1d31\6\u0c1f\0\u021e\6" + "\u05e2\0\u134b\6\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uecc0\0" + "\1\7\36\0\140\7\200\0\360\7\uffff\0\uffff\0\ufe12\0"; @@ -1250,6 +1258,14 @@ public final class ActionScriptLexer { private int repeatNum = 1; + private boolean caseSensitiveIdentifiers = false; + + public static final int SWF_VERSION_CASE_SENSITIVE = 7; + + public void setCaseSensitiveIdentifiers(boolean val) { + this.caseSensitiveIdentifiers = val; + } + public int yychar() { return yychar; } @@ -1326,7 +1342,7 @@ public final class ActionScriptLexer { /* index in packed string */ int j = 0; /* index in unpacked array */ - while (i < 3742) { + while (i < 3862) { int count = packed.charAt(i++); char value = packed.charAt(i++); do { @@ -2071,6 +2087,9 @@ public final class ActionScriptLexer { case 262: break; case 85: { + if (caseSensitiveIdentifiers && !"chr".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); } case 263: @@ -2081,6 +2100,9 @@ public final class ActionScriptLexer { case 264: break; case 87: { + if (caseSensitiveIdentifiers && !"ord".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); } case 265: @@ -2096,6 +2118,9 @@ public final class ActionScriptLexer { case 267: break; case 90: { + if (caseSensitiveIdentifiers && !"int".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); } case 268: @@ -2141,6 +2166,9 @@ public final class ActionScriptLexer { case 276: break; case 99: { + if (caseSensitiveIdentifiers && !"eval".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); } case 277: @@ -2161,11 +2189,17 @@ public final class ActionScriptLexer { case 280: break; case 103: { + if (caseSensitiveIdentifiers && !"call".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); } case 281: break; case 104: { + if (caseSensitiveIdentifiers && !"stop".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); } case 282: @@ -2191,6 +2225,9 @@ public final class ActionScriptLexer { case 286: break; case 109: { + if (caseSensitiveIdentifiers && !"play".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); } case 287: @@ -2252,6 +2289,9 @@ public final class ActionScriptLexer { case 297: break; case 120: { + if (caseSensitiveIdentifiers && !"trace".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); } case 298: @@ -2272,16 +2312,25 @@ public final class ActionScriptLexer { case 301: break; case 124: { + if (caseSensitiveIdentifiers && !"print".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); } case 302: break; case 125: { + if (caseSensitiveIdentifiers && !"mbchr".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); } case 303: break; case 126: { + if (caseSensitiveIdentifiers && !"mbord".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); } case 304: @@ -2292,11 +2341,17 @@ public final class ActionScriptLexer { case 305: break; case 128: { + if (caseSensitiveIdentifiers && !"random".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); } case 306: break; case 129: { + if (caseSensitiveIdentifiers && !"String".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); } case 307: @@ -2307,6 +2362,9 @@ public final class ActionScriptLexer { case 308: break; case 131: { + if (caseSensitiveIdentifiers && !"substr".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); } case 309: @@ -2317,6 +2375,9 @@ public final class ActionScriptLexer { case 310: break; case 133: { + if (caseSensitiveIdentifiers && !"Number".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); } case 311: @@ -2337,6 +2398,9 @@ public final class ActionScriptLexer { case 314: break; case 137: { + if (caseSensitiveIdentifiers && !"length".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); } case 315: @@ -2347,6 +2411,9 @@ public final class ActionScriptLexer { case 316: break; case 139: { + if (caseSensitiveIdentifiers && !"getURL".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); } case 317: @@ -2357,6 +2424,9 @@ public final class ActionScriptLexer { case 318: break; case 141: { + if (caseSensitiveIdentifiers && !"newline".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); } case 319: @@ -2387,6 +2457,9 @@ public final class ActionScriptLexer { case 324: break; case 147: { + if (caseSensitiveIdentifiers && !"stopDrag".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); } case 325: @@ -2397,26 +2470,41 @@ public final class ActionScriptLexer { case 326: break; case 149: { + if (caseSensitiveIdentifiers && !"printNum".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); } case 327: break; case 150: { + if (caseSensitiveIdentifiers && !"mblength".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); } case 328: break; case 151: { + if (caseSensitiveIdentifiers && !"getTimer".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); } case 329: break; case 152: { + if (caseSensitiveIdentifiers && !"startDrag".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); } case 330: break; case 153: { + if (caseSensitiveIdentifiers && !"nextFrame".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); } case 331: @@ -2427,31 +2515,49 @@ public final class ActionScriptLexer { case 332: break; case 155: { + if (caseSensitiveIdentifiers && !"undefined".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); } case 333: break; case 156: { + if (caseSensitiveIdentifiers && !"fscommand".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); } case 334: break; case 157: { + if (caseSensitiveIdentifiers && !"loadMovie".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); } case 335: break; case 158: { + if (caseSensitiveIdentifiers && !"prevFrame".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); } case 336: break; case 159: { + if (caseSensitiveIdentifiers && !"tellTarget".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); } case 337: break; case 160: { + if (caseSensitiveIdentifiers && !"targetPath".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); } case 338: @@ -2467,81 +2573,129 @@ public final class ActionScriptLexer { case 340: break; case 163: { + if (caseSensitiveIdentifiers && !"getVersion".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); } case 341: break; case 164: { + if (caseSensitiveIdentifiers && !"unloadMovie".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); } case 342: break; case 165: { + if (caseSensitiveIdentifiers && !"mbsubstring".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); } case 343: break; case 166: { + if (caseSensitiveIdentifiers && !"gotoAndStop".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); } case 344: break; case 167: { + if (caseSensitiveIdentifiers && !"gotoAndPlay".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); } case 345: break; case 168: { + if (caseSensitiveIdentifiers && !"loadMovieNum".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); } case 346: break; case 169: { + if (caseSensitiveIdentifiers && !"stopAllSounds".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); } case 347: break; case 170: { + if (caseSensitiveIdentifiers && !"ifFrameLoaded".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); } case 348: break; case 171: { + if (caseSensitiveIdentifiers && !"loadVariables".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); } case 349: break; case 172: { + if (caseSensitiveIdentifiers && !"printAsBitmap".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); } case 350: break; case 173: { + if (caseSensitiveIdentifiers && !"unloadMovieNum".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); } case 351: break; case 174: { + if (caseSensitiveIdentifiers && !"removeMovieClip".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); } case 352: break; case 175: { + if (caseSensitiveIdentifiers && !"loadVariablesNum".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); } case 353: break; case 176: { + if (caseSensitiveIdentifiers && !"printAsBitmapNum".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); } case 354: break; case 177: { + if (caseSensitiveIdentifiers && !"toggleHighQuality".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); } case 355: break; case 178: { + if (caseSensitiveIdentifiers && !"duplicateMovieClip".equals(yytext())) { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); } case 356: diff --git a/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java b/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java index efb255978..eee5b7f80 100644 --- a/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java @@ -258,6 +258,11 @@ public class ActionPanel extends JPanel implements SearchListener= ActionScriptLexer.SWF_VERSION_CASE_SENSITIVE) { + lex.setCaseSensitiveIdentifiers(true); + } + } try { ParsedSymbol symb = lex.lex(); if (symb.type == SymbolType.IDENTIFIER) {