コード例 #1
0
        public static SyntaxParser GetSyntaxParser(string text)
        {
            var inputStream       = new AntlrInputStream(text);
            var syntaxLexer       = new SyntaxLexer(inputStream);
            var commonTokenStream = new CommonTokenStream(syntaxLexer);
            var syntaxParser      = new SyntaxParser(commonTokenStream);

            return(syntaxParser);
        }
コード例 #2
0
        public Form1()
        {
            grammarLoader.Load(@"D:\TranslationSystems\parsegrammar2.txt");
            grammarLoader.CreateRecognizeTable();
            parser = new SyntaxParser.SyntaxParser(grammarLoader);
            lexer  = new Lex.Lex();
            InitializeComponent();
            ReadCode.MouseClick += (o, e) =>
            {
                using (StreamReader sr = new StreamReader(@"D:\code.txt"))
                {
                    CodeBox.Text = sr.ReadToEnd();
                }
            };
            GrammarLoad.Click += (o, e) =>
            {
                //try
                //{

                //    if (parser.IsParsed(lexs_bag.Lexems.ToList()))
                //    {
                //        ErrorsBox.Text += "Complete";
                //    }
                //    else
                //    {
                //        ErrorsBox.Text += "Failed";
                //    }
                //}
                //catch (Exception ex)
                //{
                //    ErrorsBox.Text = ex.Message;
                //}
            };
            AnalysButton.MouseClick += (o, e) =>
            {
                try
                {
                    IList <SyntaxParser.Operation> opers;

                    var lexs_bag = lexer.Analys(CodeBox.Lines);
                    if (parser.IsParsed(lexs_bag.Lexems.ToList(), out opers))
                    {
                        var codegen = new CodeGenerator();
                        ErrorsBox.Lines = codegen.generate(opers).Split('\n');

                        //ErrorsBox.Text = "Complete";
                        //ErrorsBox.Text = tree.ToString();
                        //CodeBox.Lines = tree.toStringArr().ToArray();
                    }
                    else
                    {
                        ErrorsBox.Text = "Failed";
                    }
                }
                catch (Exception ex)
                {
                    ErrorsBox.Text = ex.Message;
                }
                //var generator = new CodeGenerator();
                //ErrorsBox.Text = generator.Execute(generator.CreateOutputArray(CodeBox.Lines[0])).ToString();
            };
            CodeBox.TextChanged += (o, e) =>
            {
                string[] nums = new string[CodeBox.Lines.Length];
                for (int i = 1; i <= CodeBox.Lines.Length; i++)
                {
                    nums[i - 1] = i.ToString();
                }
                numericCode.Lines = nums;
            };
            CodeBox.VScroll += (o, e) =>
            {
                numericCode.Select(numericCode.Text.Length - 1, 0);
                numericCode.ScrollToCaret();
            };
        }