private static ParseResult Parse(string subject, string fileName) { subject = subject ?? ""; try { IList<LexicalElement> lexicalElements; var grammar = new Pegasus.Parser.PegParser().Parse(subject, fileName, out lexicalElements); return new ParseResult { Grammar = grammar, LexicalElements = lexicalElements, Errors = new List<CompilerError>(), }; } catch (Exception ex) { var cursor = ex.Data["cursor"] as Cursor ?? new Cursor(subject, 0, fileName); var parts = Regex.Split(ex.Message, @"(?<=^\w+):"); if (parts.Length == 1) { parts = new[] { "", parts[0] }; } return new ParseResult { Errors = new List<CompilerError> { new CompilerError(fileName, cursor.Line, cursor.Column, errorNumber: parts[0], errorText: parts[1]), }, }; } }
private static ParseResult Parse(string subject) { subject = subject ?? string.Empty; IList <LexicalElement> lexicalElements; try { var grammar = new Pegasus.Parser.PegParser().Parse(subject, SentinelFileName, out lexicalElements); return(new ParseResult { Grammar = grammar, LexicalElements = lexicalElements, Errors = new List <CompilerError>(), }); } catch (Exception ex) { var cursor = ex.Data["cursor"] as Cursor ?? new Cursor(subject, 0, SentinelFileName); lexicalElements = cursor.GetLexicalElements(); var parts = Regex.Split(ex.Message, @"(?<=^\w+):"); if (parts.Length == 1) { parts = new[] { string.Empty, parts[0] }; } return(new ParseResult { LexicalElements = lexicalElements, Errors = new List <CompilerError> { new CompilerError(SentinelFileName, cursor.Line, cursor.Column, errorNumber: parts[0], errorText: parts[1]), }, }); } }