Example #1
0
        /// <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})");
        }
Example #2
0
 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;
     }
 }
Example #3
0
 /// <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);
Example #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LoreParser"/> class.
 /// </summary>
 /// <param name="unit">Unit.</param>
 LoreParser(ParsingUnit unit)
 {
     this.unit = unit;
 }