pub fn parse_primary(input: &str) -> IResult<&str, Primary>Expand description
Parse a primary expression from text input.
This function parses the fundamental building blocks of expressions in the AIMX grammar, including literal values, references, and parenthesized expressions. It serves as the base parser for the expression grammar hierarchy and is used internally by higher-level parsers to handle the highest precedence expressions.
§Arguments
input- A string slice containing the primary expression to parse
§Returns
Returns an [IResult<&str, Primary>] containing:
- The remaining unparsed input
- A parsed
Primaryexpression
§Grammar
The primary expression grammar follows:
primary = literal | reference | '(' expression ')'Where:
literalrepresents any valid literal value (number, text, boolean, date, task)referencerepresents a variable or field referenceexpressionrepresents any valid AIMX expression
§Examples
use aimx::{Primary};
use aimx::expressions::{parse_primary};
use aimx::Literal;
// Parse a number literal
let (remaining, primary) = parse_primary("42").unwrap();
assert_eq!(remaining, "");
assert!(matches!(primary, Primary::Literal(Literal::Number(_))));
// Parse a text literal
let (remaining, primary) = parse_primary("\"hello\"").unwrap();
assert_eq!(remaining, "");
assert!(matches!(primary, Primary::Literal(Literal::Text(_))));
// Parse a variable reference
let (remaining, primary) = parse_primary("variable_name").unwrap();
assert_eq!(remaining, "");
assert!(matches!(primary, Primary::Reference(_)));
// Parse a parenthesized expression
let (remaining, primary) = parse_primary("(1 + 2)").unwrap();
assert_eq!(remaining, "");
assert!(matches!(primary, Primary::Parentheses(_)));§See Also
crate::expressions::parse_parentheses- Function for parsing parenthesized expressionscrate::literal::parse_literal- Function for parsing literal valuescrate::expressions::reference::parse_reference- Function for parsing references