17 using System.Collections.Generic;
18 using System.Windows.Forms;
19 using DynVarManagement;
20 using TargetPlatforms;
22 namespace CommandLine {
23 static class Program {
24 static void Main(
string[] args) {
26 args =
new string[] {
"sample.cs",
"/run" };
33 Inference.Core.Parser.Parse(parameters.InputFileNames, parameters.OutputFileName,
parameters.TargetPlatform, Application.StartupPath +
"\\",
"ilasm.exe",
"TypeTable.txt", parameters.Run, parameters.ServerOptimization);
39 private static Parameters parameters;
41 public static void ParseArguments(
string[] args) {
43 if (args.Length == 0) {
48 IList<string> inputFileNames =
new List<string>();
49 foreach (
string parameter
in args)
50 ParseParameter(parameter, inputFileNames);
54 System.Environment.Exit(3);
57 parameters.InputFileNames =
new string[inputFileNames.Count];
58 inputFileNames.CopyTo(parameters.InputFileNames, 0);
60 if (parameters.OutputFileName == null)
61 parameters.OutputFileName = ObtainOutputFileName(parameters.InputFileNames);
70 private static void ParseParameter(
string parameter, IList<string> inputFileNames) {
71 foreach (
string parameterPrefix
in OptionsConfiguration.optionsPrefix) {
72 if (parameter.Substring(0, parameterPrefix.Length).ToLower().Equals(parameterPrefix)) {
74 ParseOption(parameter.Substring(parameterPrefix.Length, parameter.Length - parameterPrefix.Length).ToLower());
79 inputFileNames.Add(parameter);
85 private static void SetDefaultParameters() {
94 private static void ParseOption(
string option) {
96 foreach (
string opString
in OptionsConfiguration.helpOptions)
97 if (option.Equals(opString)) {
100 System.Environment.Exit(0);
103 foreach (
string opString
in OptionsConfiguration.everythigDynamicOptions)
104 if (option.Equals(opString)) {
105 DynVarOptions.Instance.EverythingDynamic =
true;
109 foreach (
string opString
in OptionsConfiguration.everythigStaticOptions)
110 if (option.Equals(opString)) {
111 DynVarOptions.Instance.EverythingStatic =
true;
115 foreach (
string opString
in OptionsConfiguration.runOptions)
116 if (option.Equals(opString)) {
117 parameters.Run =
true;
121 foreach (
string opString
in OptionsConfiguration.serverOptions)
122 if (option.Equals(opString))
124 parameters.ServerOptimization =
true;
128 foreach (
string opString
in OptionsConfiguration.outputOptions)
129 if (option.StartsWith(opString)) {
130 string outFileName = ParseValue(option.Substring(opString.Length, option.Length - opString.Length));
131 parameters.OutputFileName = outFileName;
135 foreach (
string opString
in OptionsConfiguration.targetOptions)
136 if (option.StartsWith(opString)) {
137 string targetName = ParseValue(option.Substring(opString.Length, option.Length - opString.Length));
138 if (Array.IndexOf(OptionsConfiguration.targetNames, targetName) == -1) {
140 System.Environment.Exit(4);
142 parameters.TargetPlatform = TargetPlatformRepresentation.Instance.getPlatformFromName(targetName);
147 System.Environment.Exit(1);
155 private static string ParseValue(
string value) {
157 foreach (
string opAssignment
in OptionsConfiguration.optionsAssignment)
158 if (value.StartsWith(opAssignment))
159 return value.Substring(opAssignment.Length, value.Length - opAssignment.Length);
162 System.Environment.Exit(2);
171 private static string ObtainOutputFileName(
string[] inputFileNames) {
172 return Path.ChangeExtension(inputFileNames[0],
".exe");
static DynVarOptions Instance
Unique class instance (Singleton)
Offers the global options of the dynamic behaviour configuration.
bool EverythingDynamic
To ignore all the dyn files, setting all the references to dynamic.
bool EverythingStatic
To ignore all the dyn files, setting all the references to dynamic.
static readonly TargetPlatform defaultTargetPlatform
const string errorMessage
const string dynAndStaErrorMessage
const string noInputMessage
static readonly bool defaultRunOption