<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_terminal_token(cls, parser, text):
 """Parses a terminal token that doesn't contain parentheses nor colon symbol. Note: Handles a special case of tokens where a ':' is needed (for `texkey` queries). If we're parsing text not in parentheses, then some DSL keywords (e.g. And, Or, Not, defined above) should not be recognized as terminals, thus we check if they are in the Keywords table (namespace like structure handled by PyPeg). This is done only when we are not parsing a parenthesized SimpleValue. Also, helps in supporting more implicit-and queries cases (last two checks). """

        token_regex = cls.token_regex
        if parser._parsing_texkey_expression:
            token_regex = cls.texkey_token_regex
            parser._parsing_texkey_expression = False

        match = token_regex.match(text)
        if match:
            matched_token = match.group(0)

            # Check if token is a DSL keyword. Disable this check in the case where the parser isn't parsing a
            # parenthesized terminal.
            if not parser._parsing_parenthesized_terminal and matched_token.lower() in Keyword.table:
                return text, SyntaxError("found DSL keyword: " + matched_token)

            remaining_text = text[len(matched_token):]

            # Attempt to recognize whether current terminal is followed by a ":", which definitely signifies that
            # we are parsing a keyword, and we shouldn't.
            if cls.starts_with_colon.match(remaining_text):
                return text, \
                       SyntaxError("parsing a keyword (token followed by \":\"): \"" + repr(matched_token) + "\"")

            # Attempt to recognize whether current terminal is a non shortened version of Inspire keywords. This is
            # done for supporting implicit-and in case of SPIRES style keyword queries. Using the non shortened version
            # of the keywords, makes this recognition not eager.
            if not parser._parsing_parenthesized_simple_values_expression \
                    and matched_token in INSPIRE_KEYWORDS_SET:
                return text, SyntaxError("parsing a keyword (non shortened INSPIRE keyword)")

            result = remaining_text, matched_token
        else:
            result = text, SyntaxError("expecting match on " + repr(cls.token_regex.pattern))
        return result