```
milovidov-desktop :) SELECT -1::INT

Syntax error: failed at position 10 ('::')
```
ASTPtr length_node;
    if (!ParserKeyword("RIGHT").ignore(pos, expected))
        return false;
    if (pos->type != TokenType::OpeningRoundBracket)
        return false;
    ++pos;
    if (!ParserExpression().parse(pos, expr_node, expected))
        return false;
    ParserToken(TokenType::Comma).ignore(pos, expected);
    if (!ParserExpression().parse(pos, length_node, expected))
        return false;
    if (pos->type != TokenType::ClosingRoundBracket)
        return false;
    ++pos;
    auto start_expr_list_args = std::make_shared<ASTExpressionList>();
    start_expr_list_args->children = {length_node};
    auto start_node = std::make_shared<ASTFunction>();
    start_node->name = "negate";
    start_node->arguments = std::move(start_expr_list_args);
    start_node->children.push_back(start_node->arguments);
    auto expr_list_args = std::make_shared<ASTExpressionList>();
    expr_list_args->children = {expr_node, start_node};
    auto func_node = std::make_shared<ASTFunction>();
    func_node->name = "substring";
    func_node->arguments = std::move(expr_list_args);
    func_node->children.push_back(func_node->arguments);
    node = std::move(func_node);
    return true;
}
bool ParserExtractExpression::parseImpl(Pos & pos, ASTPtr & node, Expected & expected)