public static void Main(string[] args) { Properties arguments = new Properties(); string error = ""; bool ok = args.Length > 0; if (ok) { arguments.setProperty("Trace", "Off"); arguments.setProperty("Rule", "xri"); for (int i = 0; i < args.Length; i++) { if (args[i].Equals("-trace")) arguments.setProperty("Trace", "On"); else if (args[i].Equals("-visitor")) arguments.setProperty("Visitor", args[++i]); else if (args[i].Equals("-file")) arguments.setProperty("File", args[++i]); else if (args[i].Equals("-string")) arguments.setProperty("String", args[++i]); else if (args[i].Equals("-rule")) arguments.setProperty("Rule", args[++i]); else { error = "unknown argument: " + args[i]; ok = false; } } } if (arguments.getProperty("File") == null && arguments.getProperty("String") == null) { error = "insufficient arguments"; ok = false; } if (!ok) { Logger.Info("error: " + error); Logger.Info("usage: Parser [-rule rulename] [-trace] <-file file | -string string> [-visitor visitor]"); } else { try { Parser parser = new Parser(); Rule rule = null; parser.traceOff(); if (arguments.getProperty("Trace").Equals("On")) parser.traceOn(); if (arguments.getProperty("File") != null) rule = parser.parse(arguments.getProperty("Rule"), File.OpenRead(arguments.getProperty("File"))); else if (arguments.getProperty("String") != null) rule = parser.parse(arguments.getProperty("Rule"), arguments.getProperty("String")); if (arguments.getProperty("Visitor") != null) { Visitor visitor = (Visitor)Activator.CreateInstance(Type.GetType(arguments.getProperty("Visitor"))); visitor.visit(rule); } } catch (ArgumentException e) { Logger.Info("argument error: " + e.Message); } catch (IOException e) { Logger.Info("io error: " + e.Message); } catch (ParserException e) { Logger.Info("parser error: " + e.Message); } catch (TypeLoadException e) { Logger.Info("visitor error: class not found - " + e.Message); } catch (MethodAccessException e) { Logger.Info("visitor error: illegal access - " + e.Message); } catch (TargetInvocationException e) { Logger.Info("visitor error: instantiation failure - " + e.Message); } } }