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); }
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(); }; }