MCPcopy Create free account
hub / github.com/GraphLite-AI/GraphLite / primary_expression

Function primary_expression

graphlite/src/ast/parser.rs:2068–2104  ·  view source on GitHub ↗

Parse primary expression: (expr) | function_call | property_access | value | case_expr

(tokens: &[Token])

Source from the content-addressed store, hash-verified

2066
2067/// Parse primary expression: (expr) | function_call | property_access | value | case_expr
2068fn primary_expression(tokens: &[Token]) -> IResult<&[Token], Expression> {
2069 alt((
2070 // NOT EXISTS subquery must be checked before EXISTS to avoid conflicts
2071 map(not_exists_subquery, Expression::NotExistsSubquery),
2072 // EXISTS subquery must be checked before general parenthesized expressions
2073 map(exists_subquery, Expression::ExistsSubquery),
2074 // Try pattern expression first (for WHERE clause patterns)
2075 map(pattern_expression, Expression::Pattern),
2076 // Try subquery first, then fall back to parenthesized expression
2077 map(
2078 alt((
2079 map(subquery_expression, Expression::Subquery),
2080 map(
2081 tuple((
2082 expect_token(Token::LeftParen),
2083 expression,
2084 expect_token(Token::RightParen),
2085 )),
2086 |(_, expr, _)| expr,
2087 ),
2088 )),
2089 |expr| expr,
2090 ),
2091 map(case_expression, Expression::Case),
2092 map(cast_expression, Expression::Cast),
2093 map(path_constructor, Expression::PathConstructor),
2094 map(array_expression, Expression::Literal),
2095 map(trim_function_call, Expression::FunctionCall), // Special TRIM FROM syntax
2096 map(function_call, Expression::FunctionCall),
2097 map(property_access, Expression::PropertyAccess),
2098 map(property_access_continued, Expression::PropertyAccess),
2099 map(property_access_token, Expression::PropertyAccess),
2100 map(parameter, Expression::Parameter),
2101 map(variable, Expression::Variable),
2102 map(literal, Expression::Literal),
2103 ))(tokens)
2104}
2105
2106/// Parse expression list: expr1, expr2, expr3, ...
2107fn expression_list(tokens: &[Token]) -> IResult<&[Token], Vec<Expression>> {

Callers 1

postfix_expressionFunction · 0.85

Calls 1

expect_tokenFunction · 0.85

Tested by

no test coverage detected