Пример #1
0
        public Processor(IMain mainWindow, ASTResult ast)
        {
            window  = mainWindow;
            astTree = ast;

            evaluator = new Evaluator();
        }
Пример #2
0
        public MainWindow()
        {
            InitializeComponent();

            string path     = @"C:\Users\Daniel\Documents\UVA\Software Construction\Assignments\project\many-ql\FelipezConde\testsamples\";
            string fileName = "test9.txt";

            TestClass test = new TestClass();
            ASTResult ast  = test.GetAST(path + fileName);

            Processor procesor = new Processor(this, ast);
            UIElement element  = Processor.ProcessBody(ast.Ast.GetBody(), this._stack);
        }
        public ASTResult AST([FromBody] CompilationRequest request)
        {
            ASTResult result = new ASTResult();

            LexicalAnalyzer analyzer = new LexicalAnalyzer(LexicalLanguage.GetLanguage(), request.Input);
            BottomUpParser  parser   = new BottomUpParser(analyzer);

            parser.Parse();

            result.AST += "digraph C {\r\n";
            result.AST += parser.TopLevelAST.ToDot();
            result.AST += "}";

            return(result);
        }
Пример #4
0
        public static ASTResult GetTypeCheckDiagnosis(ASTResult astResult)
        {
            //Precondition: no previous errors
            if (astResult.HasError()) // if it already has errors, refuse to add more
            {
                return(astResult);
            }

            Form rootNode = astResult.RootNode;
            INotificationManager manager = new NotificationManager();

            manager.Combine(new IdentifierChecker(manager).AnalyzeAndReport(rootNode));

            manager.Combine(new ExpressionContainerChecker(manager, GetIdentifierTypes(rootNode))
                            .AnalyzeAndReport(rootNode.GetBody())
                            );

            manager.Combine(new CyclicDependencyChecker(manager).AnalyzeAndReport(rootNode.GetBody()));
            manager.Combine(new LabelChecker().AnalyzeAndReport(rootNode.GetBody()));

            astResult.CombineNotifications(manager);

            return(astResult);
        }
Пример #5
0
 public MainController(MainWindow mainWindow, ASTResult ast)
 {
     window  = mainWindow;
     astTree = ast;
 }