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); } } }
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); } } }
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); } } }