def parse(tokens): next_token = next(tokens) if lower(next_token) == "all": limit_all = True expression = None else: limit_all = False expression_tokens, next_token = get_tokens_until_one_of( tokens, [], first_token=next_token) expression, _ = ExpressionParser.parse(iter(expression_tokens)) return LimitClause(limit_all, expression)
def test_limit_parentheses(): actual = SQLStatementParser.parse(to_tokens("SELECT 1 LIMIT (((3)))")) expected = SelectStatement( expressions=[Integer(1)], limit_clause=LimitClause( limit_all=False, expression=Parenthesis(Parenthesis(Parenthesis(Integer(3)))), ), semi_colon=False, ) assert actual == expected