/// <summary> /// Create a new instance of the <see cref="Capture"/> class. /// </summary> /// <param name="unit">Unit.</param> /// <param name="lex">Lex.</param> public static Capture Create(ParsingUnit unit, Lexeme <LoreToken> lex) { if (lex.Is(LoreToken.Identifier)) { return(new Capture(lex.Value, capturesAll: false)); } if (lex.Is(LoreToken.Operator) && lex.Is("=")) { return(new Capture(lex.Value, capturesAll: true)); } // Invalid capture throw LoreException.Create(unit.Location).Describe($"Not a capture: '{lex.Value}' ({lex.Token})"); }
public static LoreLLVMCompiler CreateFromFile(string fileName) { try { var sunit = SourceUnit.FromFile(fileName); var lexer = LoreLexer.Create(sunit); var lexemes = lexer.Tokenize(); var punit = ParsingUnit.Create(lexemes); var parser = LoreParser.Create(punit); var ast = parser.Parse(); return(Create(ast, LoreModule.Create(fileName))); } catch (LoreException e) { Console.WriteLine(e.Message); throw; } catch (Exception e) { Console.WriteLine($"Fatal exception: ${e.Message}"); throw; } }
/// <summary> /// Creates a new instance of the <see cref="LoreParser"/> class. /// </summary> /// <param name="unit">The parsing unit.</param> public static LoreParser Create(ParsingUnit unit) => new LoreParser(unit);
/// <summary> /// Initializes a new instance of the <see cref="LoreParser"/> class. /// </summary> /// <param name="unit">Unit.</param> LoreParser(ParsingUnit unit) { this.unit = unit; }