2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / Microsoft.JScript / Microsoft.JScript / driver.cs
index dbd1beea6eec83a4888da7f3ef2905386fdbac4d..875255f772995111f6b7c7f86edc676980cb62b6 100644 (file)
@@ -7,72 +7,47 @@
 // (C) 2003, Cesar Lopez Nataren
 //
 
-namespace Microsoft.JScript.Tmp
-{
-       using System;
-       using System.IO;
-       using System.Collections;
-       using System.Reflection.Emit;
-       using System.Reflection;
-       using System.Runtime.CompilerServices;
-
-       public class Jsc 
-       {
-               string filename;
-               string assemblyName;
-               ASTList program;
-               SemanticAnaliser semAnalizer;
-               CodeGenerator codeGen;
-
-               public Jsc (string filename)
-               {
-                       this.filename = filename;
-                       this.assemblyName = Path.GetFileNameWithoutExtension (filename);
-
-                       program = new ASTList ();
-               }
-
-
-               public void Run ()
-               {
-                       this.GetAST (filename);
-                       // this.SemanticAnalysis ();
-                       this.GenerateCode ();
-
-                       this.codeGen.assemblyBuilder.Save (assemblyName + ".exe");
-               }
-
-                       
-               public void GenerateCode ()
-               {
-                       this.codeGen = new CodeGenerator (assemblyName,
-                                                         AssemblyBuilderAccess.RunAndSave);
-
-                       this.codeGen.EmitJScript0 (this.program);
-                       this.codeGen.EmitJScriptMain ();                        
-               }
-
-
-               public void GetAST (string filename)
-               {
-                       StreamReader reader = new StreamReader (filename);
-                       JScriptLexer lexer = new JScriptLexer (reader);
-                       JScriptParser parser = new JScriptParser (lexer);
-
-                       parser.program (program);
-               }
-
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
 
-               public static void Main (string [] args)
-               {
-                       try {                   
-                               Jsc compiler = new Jsc (args [0]);
+using System;
 
-                               compiler.Run ();
+namespace Microsoft.JScript {
 
-                       } catch (IndexOutOfRangeException) {
+       public class Driver {
+               
+               public static void Main (string [] args) {
+       
+                       if (args.Length < 1) {
                                Console.WriteLine ("Usage: [mono] mjs.exe filename.js");
+                               Environment.Exit (0);
                        }
+
+                       string filename = args [0];
+                       Context ctx = new Context (filename);
+                       JSParser parser = new JSParser (ctx);
+                       ScriptBlock prog_tree = parser.Parse ();                        
+                       SemanticAnalyser.Run (prog_tree);
+                       CodeGenerator.Run (args [0], prog_tree);
+                       Console.WriteLine ("Compilation succeeded.");
                }
        }
 }