private void Compile(string iFileName)
        {
            try
            {
                Debug.Assert(null != iFileName);

                VMEE.compiler.icode s = null;

                if (File.Exists("output.txt"))
                    s = new icode(@"output.txt", new System.IO.FileStream(iFileName, System.IO.FileMode.Open));
                else
                    s = new icode(@"output.txt", new System.IO.FileStream(iFileName, System.IO.FileMode.Open));

                VMEE.compiler.Parser parser = new Parser(s);
                Debug.Assert(null != parser);

                parser.Parse();

                if (parser.HasErrors)
                {
                    for (int i = 0; i < parser.ErrorMessages.Count; i++)
                        Console.WriteLine(parser.ErrorMessages[i]);

                    return;
                }

                System.Collections.ArrayList code = parser.GetIntermededateCode();
                VMEE.compiler.CodeGenerator codegenerator = new CodeGenerator(parser.GetIntermededateCode(), errorDelegate);
                codegenerator.GenerateInstructions();

                System.IO.FileStream fi = new System.IO.FileStream(outputFileName, System.IO.FileMode.OpenOrCreate);
                BinaryFormatter bf = new BinaryFormatter();

                IEnumerator ienum = codegenerator.Code.GetEnumerator();

                try
                {
                    bf.Serialize(fi, codegenerator.Code.Count);
                    bf.Serialize(fi, codegenerator.Code);
                }
                catch (Exception ex)
                {
                    errorDelegate.Invoke(ex);
                }
                finally
                {
                    fi.Close();
                    s.Dispose();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Example #2
0
        private void Compile()
        {
            try
            {
                VMEE.compiler.icode s = new icode(@"c:\donre\development\output.txt",new System.IO.FileStream(fileName,System.IO.FileMode.Open));

                VMEE.compiler.Parser parser = new Parser(s);
                parser.Parse();

                if(parser.HasErrors)
                {
                    for(int i=0;i<parser.ErrorMessages.Count;i++)
                        Console.WriteLine(parser.ErrorMessages[i]);

                    return;
                }
                code = parser.GetIntermededateCode();
                VMEE.compiler.CodeGenerator codegenerator = new CodeGenerator(parser.GetIntermededateCode(),null);
                codegenerator.GenerateInstructions();

                System.IO.FileStream fi = new System.IO.FileStream(outputFileName,System.IO.FileMode.OpenOrCreate);
                BinaryFormatter bf = new BinaryFormatter();

                IEnumerator ienum = codegenerator.Code.GetEnumerator();

                try
                {
                    bf.Serialize(fi,codegenerator.Code.Count);
                    bf.Serialize(fi,codegenerator.Code);
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }

                fi.Close();

            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }