LispEngine.Lexing.Scanner.fail C# (CSharp) Method

fail() public method

public fail ( string fmt ) : ParseException
fmt string
return LispEngine.Parsing.ParseException
        public ParseException fail(string fmt, params object[] args)
        {
            var errorMsg = string.Format(fmt, args);
            var line = LineSoFar;
            var w = new StringWriter();
            w.WriteLine("{0}({1}): {2}", Filename, LineNumber, errorMsg);
            var ln = LineNumber - previousLines.Count;
            foreach(var l in previousLines)
                w.WriteLine("{0}({1}): {2}", Filename, ln++, l);
            w.WriteLine("{0}({1}): {2}", Filename, ln++, line);
            w.WriteLine("{0}({1}): {2}^: {3}", Filename, ln++, new string(' ', line.Length), errorMsg);
            w.Flush();
            var msg = w.ToString();
            return new ParseException(msg);
        }
    }

Usage Example

Example #1
0
 // TODO:
 // WE should implement actual reader macros for this part of things.
 private static TokenType?matchHash(Scanner s)
 {
     if (s.peek() != '#')
     {
         return(null);
     }
     s.readChar();
     if (s.peek() == '(')
     {
         s.readChar();
         return(TokenType.VectorOpen);
     }
     if (s.isOneOf("tfTF"))
     {
         s.readChar();
         return(TokenType.Boolean);
     }
     throw s.fail("Unrecognized token");
 }
All Usage Examples Of LispEngine.Lexing.Scanner::fail