pub struct ExpressionAst {
pub original_source: String,
pub kind: ExpressionKind,
}
Expand description
Parsed expression abstract syntax tree
This represents common expression patterns found in OpenMP directives. It’s not a complete C/C++/Fortran parser, just enough to handle typical OpenMP expressions.
§Learning: Recursive Data Structures
Notice that ExpressionKind
contains Box<ExpressionAst>
in several
variants. This allows representing nested expressions like:
(a + b) * c
- BinaryOp containing another BinaryOparr[i][j]
- ArrayAccess containing another ArrayAccess
§Example
use roup::ir::{Expression, ParserConfig};
let config = ParserConfig::default();
let expr = Expression::new("42", &config);
if let Some(ast) = expr.as_ast() {
// Can inspect the AST structure
println!("Original: {}", ast.original_source);
}
Fields§
§original_source: String
Original source text (always preserved)
kind: ExpressionKind
Parsed structure (best-effort)
Trait Implementations§
Source§impl Clone for ExpressionAst
impl Clone for ExpressionAst
Source§fn clone(&self) -> ExpressionAst
fn clone(&self) -> ExpressionAst
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for ExpressionAst
impl Debug for ExpressionAst
Source§impl PartialEq for ExpressionAst
impl PartialEq for ExpressionAst
impl StructuralPartialEq for ExpressionAst
Auto Trait Implementations§
impl Freeze for ExpressionAst
impl RefUnwindSafe for ExpressionAst
impl Send for ExpressionAst
impl Sync for ExpressionAst
impl Unpin for ExpressionAst
impl UnwindSafe for ExpressionAst
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more