in modules/asc/src/java/macromedia/asc/embedding/Main.java [79:380]
public static void main(String[] args) throws Exception
{
String filename = "";
String ext = "";
if (args.length == 0)
{
do_help = true;
}
else
{
for (int i = 0; i < args.length; ++i)
{
String flag = args[i];
if (flag.charAt(0) == '-')
{
if( flag.length() < 2 )
{
do_help = true;
continue;
}
switch (flag.charAt(1))
{
case '!':
use_static_semantics = true;
break;
case 'b':
show_bytes = true;
break;
case 'f':
show_flow = true;
break;
case 'p':
show_parsetrees = true;
break;
case 'i':
if (flag.length() == 3 && flag.charAt(2) == 'n') // -in
// <filespec>
{
++i;
include_filespecs.add(args[i]);
}
else if (flag.length() == 7 && "-import".equals(flag)) // -import
// <filespec>
{
++i;
import_filespecs.add(args[i].trim());
}
else
{
show_instructions = true;
}
break;
case 'm':
if (flag.length() == 10 && "-movieclip".equals(flag))
{
make_movieclip = true;
}
else if (flag.length() == 3 && "-md".equals(flag))
{
emit_metadata = true;
}
else
{
show_instructions = true; // -m implies -i
show_machinecode = true;
}
break;
case 'a':
if (flag.length() == 10 && "-abcfuture".equals(flag))
{
FUTURE_ABC = true;
}
else if ( flag.length() == 10 && "-avmtarget".equals(flag))
{
++i;
try
{
String vm_target = args[i].trim();
int v = Integer.parseInt(vm_target);
switch(v) {
case 1:
target = TARGET_AVM1;
break;
case 2:
target = TARGET_AVM2;
break;
default:
do_help = true;
break;
}
}
catch(Exception e)
{
do_help = true;
}
}
break;
case 'c':
if (flag.length() == 6 && "-coach".equals(flag))
{
lint_mode = true;
}
else if( flag.length() == 7 && "-config".equals(flag))
{
++i;
String temp = args[i];
ConfigVar cv = parseConfigVar(temp);
if( cv != null)
config_vars.push_back(cv);
else
do_help = true;
}
break;
case 'w':
if (flag.length() == 9 && "-warnings".equals(flag))
{
lint_mode = true;
}
break;
case 's':
if (flag.length() == 7)
{
if ("-strict".equals(flag))
{
use_static_semantics = true;
}
else if ("-sanity".equals(flag))
{
sanity_mode = true;
}
}
else if (flag.length() == 4 && "-swf".equals(flag))
{
++i;
swf_options = args[i];
if (swf_options.indexOf("-g") > -1) // -g means make it a debuggable swf
emit_debug_info = true;
}
break;
case 'e':
if (flag.length() == 4)
{
if ("-exe".equals(flag))
{
++i;
avmplus_exe = args[i];
}
}
break;
case 'd':
if (flag.length() == 4 && "-doc".equals(flag))
{
emit_doc_info = true;
}
else
{
emit_debug_info = true;
}
break;
case 'l':
if (flag.length() == 4 && "-log".equals(flag))
{
log = true;
}
else if (flag.length() == 9 && "-language".equals(flag))
{
i++;
language = args[i];
}
else
{
show_linenums = true;
}
break;
case 't':
do_test = true;
break;
case 'h':
do_help = true;
break;
case 'o':
if ( "-O".equalsIgnoreCase(flag))
{
optimize = true;
}
else if (flag.substring(0, 3).equalsIgnoreCase("-O2") )
{
if ( null == optimizer_configs)
{
optimizer_configs = new ObjectList<ConfigVar>();
}
if ( flag.length() > 4)
{
String option_name = flag.substring(4);
String option_value = "";
int eq_pos = option_name.indexOf('=');
if ( eq_pos != -1 )
{
option_value = option_name.substring(eq_pos+1); // Skip the "=" char
option_name = option_name.substring(0, eq_pos);
}
optimizer_configs.add(new ConfigVar("o2", option_name, option_value));
}
}
break;
case 'A':
if (flag.length() == 4 && "-AS3".equalsIgnoreCase(flag))
{
dialect = 10;
}
break;
case 'E':
if (flag.length() == 3 && "-ES".equalsIgnoreCase(flag))
{
dialect = 9;
}
else if (flag.length() == 4 && "-ES4".equalsIgnoreCase(flag))
{
dialect = 11;
}
break;
case 'u':
if (flag.length() == 4 && "-use".equals(flag)) // -use <namespace>
{
++i;
if (use_namespaces == null)
use_namespaces = new ObjectList<String>();
use_namespaces.add(args[i].trim());
}
break;
default:
try
{
if (flag.length() > 1
&& (dialect = -1 * Integer.parseInt(flag)) != 0)
{
if (dialect < earliest_dialect
|| dialect > latest_dialect)
{
do_help = true;
}
// otherwise, we have a valid dialect number
}
}
catch (NumberFormatException nfe)
{
do_help = true;
}
break;
}
}
// assume it's a filename
else
{
filename = new String(args[i].trim());
if (filename.endsWith(".as"))
{
ext = ".as";
}
else if (filename.endsWith(".es"))
{
ext = ".es";
}
else if (filename.endsWith(".js"))
{
ext = ".js";
}
else
{
ext = "";
}
filespecFound = true;
handleFile(filename, ext);
}
}
}
if (!(do_help || filespecFound))
{
Context cx = new Context(new ContextStatics());
System.err.println(cx.errorString(ErrorConstants.kError_MissingFilespec));
System.exit(1);
}
else if (do_help)
{
handleFile("","");
}
}