Function parse_primary

Source
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 Primary expression

§Grammar

The primary expression grammar follows:

primary = literal | reference | '(' expression ')'

Where:

  • literal represents any valid literal value (number, text, boolean, date, task)
  • reference represents a variable or field reference
  • expression represents 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