Exemplo n.º 1
0
        public CompilerResults Compile(string generatedCodeFileName = null)
        {
            var options = new Dictionary<string, string>
                          {
                          	{"CompilerVersion", "v3.5"}
                          };
            var codeProvider = new CSharpCodeProvider(options);

            var scanner = new Scanner(this.fileName);
            var parser = new Parser(scanner);

            parser.Parse();

            var generatator = new Generator();
            var generatedCode = generatator.Generate(null, parser.ruleClassStatement, "");

            if (generatedCodeFileName != null)
            {
                using (var stream = new StreamWriter(generatedCodeFileName, false, Encoding.UTF8))
                {
                    stream.Write(generatedCode);
                }
            }

            return codeProvider.CompileAssemblyFromSource(this._compilerParams, generatedCode.ToString());
        }
Exemplo n.º 2
0
        public MainWindow()
        {
            this.InitializeComponent();

            var fileName = @"E:\Himic\My Project\Unit.WolfGenerator\WolfGenerator.Core\CodeGenerator\Generator.rule";
            var text = new StreamReader( fileName ).ReadToEnd();

            var parser = new Parser( text );
            parser.Parse();

            this.RuleClass = parser.ruleClassStatement;
            this.TextBox.Text = text;
        }
Exemplo n.º 3
0
        static void Main()
        {
            var scanner = new Scanner( @"Rules\Main.txt" );
            var parser = new Parser( scanner );

            parser.Parse();

            var mainClass = new MainClass();

            try
            {
                Console.WriteLine( mainClass.Main( new object[] { "Id", "Name" } ) );
            }
            catch (Exception e)
            {
                Console.WriteLine( e );
            }
            var code = new Generator().Generate( null, parser.ruleClassStatement, "test.rule" ).ToString();

            using (var stream = new StreamWriter( "../../GeneratedClass.cs" ))
            {
                stream.WriteLine( code );
            }
        }
        protected override byte[] GenerateCode( string inputFileName, string inputFileContent )
        {
            this.fileName = inputFileName;

            var serviseObject = this.GetService<ProjectItem>();
            Project containintProject;

            if (serviseObject != null)
            {
                containintProject = serviseObject.ContainingProject;
                var dte = containintProject.DTE;
                var outputWindow = dte.Windows.Item( Constants.vsWindowKindOutput );
                var output = (OutputWindow)outputWindow.Object;
                foreach (OutputWindowPane pane in output.OutputWindowPanes)
                {
                    if (pane.Name != wolfGeneratorPaneName) continue;

                    this.generatorPane = pane;
                    this.generatorPane.Clear();
                    break;
                }
                if (this.generatorPane == null)
                    this.generatorPane = output.OutputWindowPanes.Add( wolfGeneratorPaneName );
            }

            string programCode;
            try
            {
                var scanner = new GeneratorScanner( inputFileName, this );
                var parser = new Parser( scanner );

                parser.Parse();

                if (parser.errors.count == 0)
                    programCode = new Generator().Generate( FileNameSpace, parser.ruleClassStatement, Path.GetFileName( inputFileName ) ).ToString();
                else
                    programCode = "parser errors: " + parser.errors.count;
            }
            catch (Exception e)
            {
                programCode = "// Exception See OutputWindow/WolfGenerator for detaile";
                WriteError( 0, 0, ErrorLevel.Error, e.Message );
            }

            return Encoding.UTF8.GetBytes( programCode );
        }