Example #1
0
 public static Module ParseModule(SourceUnit sourceUnit, HappyLanguageContext languageContext)
 {
     Lexer lexer = new Lexer(sourceUnit, languageContext);
     Parser parser = new Parser(lexer, languageContext);
     Module retval = null;
     try
     {
         retval = parser.Parse();
     }
     catch(AbortParseException)
     {
         //Left blank intentionally because AbortParseExceptions should never
         //be allowed to bubble up to the caller.
     }
     catch(SyntaxErrorException)
     {
         //We actually want to allow this exception to propogate as-is back
         //to the caller.  This is needed because of the catch-all below
         throw;
     }
     catch(Exception e)
     {
         //All other exceptions are to be considered an internal error
         //We may not know the exact location of the error, but we'll just
         //take the next token out of the lexer to give *some* kind of
         //idea line might contain the error
         DebugAssert.IsNotNull(e);
         Token t = lexer.NextToken();
         throw new InternalSourceException(e, t.Location,
             "The parser threw an unhandled exception.  This is usually caused by a syntax error " +
             "in the script being parsed.  The error ocurred at or before the this locaiton.");
     }
     return retval;
 }
Example #2
0
 protected internal static Token NextTokenAssert(Lexer lexer, HappyTokenKind expectedHappyTokenKind, string expectedText)
 {
     Token t = lexer.NextToken();
     Assert.AreEqual(expectedHappyTokenKind, t.HappyTokenKind, "Token Text:  {0}", t.Text);
     Assert.AreEqual(expectedText, t.Text);
     return t;
 }
Example #3
0
 protected internal static void NextTokenAssert(Lexer lexer, HappyTokenKind expectedHappyTokenKind)
 {
     Token t = lexer.NextToken();
     Assert.AreEqual(expectedHappyTokenKind, t.HappyTokenKind, "Token Text:  {0}", t.Text);
 }
Example #4
0
 internal Parser(Lexer lexer, HappyLanguageContext languageContext)
 {
     _lexer = lexer;
     _errorCollector = new ErrorCollector(languageContext.ErrorSink);
 }
Example #5
0
 internal Lexer TestVerbatimLexer(string text)
 {
     Lexer retval = new Lexer(LanguageContext.CreateSnippet("<|" + text + "|>", SourceCodeKind.AutoDetect), LanguageContext);
     NextTokenAssert(retval, HappyTokenKind.BeginTemplate);
     Assert.AreEqual(Lexer.LexerMode.LexingVerbatimText, retval.Mode);
     return retval;
 }