Ejemplo n.º 1
0
        public void PascalInput_Should_CreateOutput(string input, string output)
        {
            var tokens = lexer.Tokenize(input.Trim());
            var node   = ast.Evaluate(tokens);

            table.CheckSyntax(node);
            var result = cSharp.VisitNode(node).Trim();

            //result.Should().Be(output.Trim());

            CompileCSharp.CompileExecutable2(output, "test").Should().BeTrue();
        }
Ejemplo n.º 2
0
        public void Compile(string PascalCode)
        {
            Build = "";
            con.Clear();
            ErrorMessage.Clear();

            var tokens = lexer.TokenizeResult(PascalCode);

            ErrorMessage.AddRange(tokens.Errors.Select(p => p.Message));

            var tree = ast.EvaluateResult(tokens.Result);

            Tree = tree.Result;
            ErrorMessage.AddRange(tree.Errors.Select(p => p.Message));
            var symbols = analyzer.CheckSyntaxResult(tree.Result);

            ErrorMessage.AddRange(symbols.Errors.Select(p => p.Message));

            if (ErrorMessage.Any())
            {
                StateHasChanged();
                return;
            }
            CSharpCode = csharp.VisitNode(tree.Result);
            interpreter.Interpret(tree.Result);

            Output = con.Output;

            this.StateHasChanged();
        }