Exemple #1
0
 public static bool ExpectType(this JackTokenizer.ClassifiedJackToken token, bool acceptVoid = false, bool throwException = true)
 {
     if (token.TokenType() == JackTokenizer.JackTokenType.identifier)
     {
         return(true);
     }
     else if (
         token.TokenType() == JackTokenizer.JackTokenType.keyword &&
         (
             token.ParseKeyWord() == JackTokenizer.JackKeywordTypes.INT ||
             token.ParseKeyWord() == JackTokenizer.JackKeywordTypes.CHAR ||
             token.ParseKeyWord() == JackTokenizer.JackKeywordTypes.BOOLEAN ||
             (acceptVoid ? token.ParseKeyWord() == JackTokenizer.JackKeywordTypes.VOID : false)
         )
         )
     {
         return(true);
     }
     else
     {
         if (throwException)
         {
             throw new Exception("Expected a type keyword but found '" + token.value + "'.");
         }
         else
         {
             return(false);
         }
     }
 }
Exemple #2
0
 public static bool ExpectKeyword(this JackTokenizer.ClassifiedJackToken token, JackTokenizer.JackKeywordTypes[] keywords, bool throwException = true)
 {
     if (token.TokenType() == JackTokenizer.JackTokenType.keyword &&
         keywords.Contains(token.ParseKeyWord()))
     {
         return(true);
     }
     else
     {
         if (throwException)
         {
             throw new Exception("Expected one of these keywords '" + keywords.Select(x => x.ToString()).ToString() + "' but found '" + token.value + "'.");
         }
         else
         {
             return(false);
         }
     }
 }
Exemple #3
0
 public static bool ExpectKeyword(this JackTokenizer.ClassifiedJackToken token, JackTokenizer.JackKeywordTypes keyword, bool throwException = true)
 {
     if (token.TokenType() == JackTokenizer.JackTokenType.keyword &&
         token.ParseKeyWord() == keyword)
     {
         return(true);
     }
     else
     {
         if (throwException)
         {
             throw new Exception("Expected keyword 'class' but found '" + token.value + "'.");
         }
         else
         {
             return(false);
         }
     }
 }