private void Init(GrammarModel modelIn)
        {
            model = modelIn;

            GrammarNodeVDrawVisitor visitor = new GrammarNodeVDrawVisitor();
            model.VisualisedGrammar.StartSymbol.accept(visitor);
        }
        public GrammarAnalysis(GrammarModel modelIn)
        {
            InitializeComponent();

            model = modelIn;

            currentGrammar.Document = model.DefinitiveGrammar.PrintGrammarRich();

            FillAnalysisOptions();
        }
        public GrammarController(GrammarModel modelIn, View viewIn)
        {
            model = modelIn;
            view = viewIn;

            // register for events from the viewListener
            ViewController.ViewListener.NonterminalCollapsedControlEvent +=new ViewListener.MyEventHandler(NonterminalCollapsedControlEvent);
            ViewController.ViewListener.NonterminalExpandedControlEvent += new ViewListener.MyEventHandler(NonterminalExpandedControlEvent);
            ViewController.ViewListener.TerminalControlEvent += new ViewListener.MyEventHandler(TerminalControlEvent);
            ViewController.ViewListener.UndefinedControlEvent += new ViewListener.MyEventHandler(UndefinedControlEvent);
        }
        private void Init(GrammarModel modelIn)
        {
            model = modelIn;

            ViewController.ReInit();

            // draw controls
            GrammarNodeVDrawVisitor visitor = new GrammarNodeVDrawVisitor();
            model.VisualisedGrammar.accept(visitor);
            this.Content = visitor.DrawnItem;

            // update global information
            VADG.Global.Information.Nonterminals = model.getNonterminalNames();
        }
        public static void Main(String[] args)
        {
            while (true)
            {
                try
                {
                    GrammarModel model = new GrammarModel(Console.ReadLine());

                    VADG.Model.Analysis.FactorisationAnalyser.Analyse(model.DefinitiveGrammar);

                    Console.WriteLine();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    String file = System.IO.File.ReadAllText("grammar.txt");
                    Console.WriteLine(file);

                    GrammarModel model = new GrammarModel();
                    model.setDefinitiveGrammar(file, "S");
                    Console.WriteLine(model.DefinitiveGrammar.PrintGrammar());
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                finally
                {
                    Console.ReadLine();
                }
            }
        }
        public View(GrammarModel modelIn)
        {
            InitializeComponent();

            Init(modelIn);
        }
        public Window1()
        {
            InitializeComponent();

            model = new GrammarModel();
        }
        void controller_ErrorEventSerious(Exception exception)
        {
            controller_Error(exception);

            // set up default
            model = new GrammarModel(TestGrammars.Basic);
            SetView();
        }
        private void previewButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                this.Cursor = Cursors.Wait;

                Factorisation factorisation = analysisOptions.SelectedItem as Factorisation;

                if (factorisation == null)
                    throw new Exception("You did not select a factorisation option");

                String newRule = "NewRule_" + new Random().Next(0, 9999).ToString();

                String currentGrammarStr = model.DefinitiveGrammar.PrintGrammar();
                String newGrammarStr = factorisation.applyRule(currentGrammarStr, newRule);

                GrammarModel newModel = new GrammarModel(newGrammarStr);
                newGrammar = new GrammarModel(newModel.DefinitiveGrammar);

                // highlight rules that are being factorised
                // first unselect any rules selected
                GrammarNodeDUnselectVisitor visitor = new GrammarNodeDUnselectVisitor();
                model.DefinitiveGrammar.StartSymbol.accept(visitor);
                newModel.DefinitiveGrammar.StartSymbol.accept(visitor);

                foreach (NonterminalHeadD nont in factorisation.NontHeads)
                {
                    model.DefinitiveGrammar.getNonterminal(nont.Name).IsSelected = true;
                    newModel.DefinitiveGrammar.getNonterminal(nont.Name).IsSelected = true;
                }

                newModel.DefinitiveGrammar.getNonterminal(newRule).IsSelected = true;

                // print grammars
                currentGrammar.Document = model.DefinitiveGrammar.PrintGrammarRich();
                previewGrammar.Document = newModel.DefinitiveGrammar.PrintGrammarRich();

                this.Cursor = Cursors.Arrow;
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Arrow;
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                this.Close();
            }
        }
 public Functions(GrammarModel modelIn)
 {
     model = modelIn;
 }
 public GrammarView2(GrammarModel modelIn)
 {
     Init(modelIn);
 }
 private void Initialise()
 {
     model = new GrammarModel();
     model.setDefinitiveGrammar(TestGrammars.Basic);
 }