This commit is contained in:
2026-05-04 20:07:20 +02:00
parent e79b594ab8
commit 5364f51fc1
3 changed files with 24 additions and 7 deletions
+2 -2
View File
@@ -73,7 +73,7 @@ pub enum Postfix {
}
#[derive(Debug, Clone, Serialize)]
pub enum PreFix {
pub enum Prefix {
Ref,
RefMut,
Deref,
@@ -144,7 +144,7 @@ pub enum Expression {
StringLiteral(String),
Fix {
initial: Box<Expression>,
prefixes: Vec<PreFix>,
prefixes: Vec<Prefix>,
postfixes: Vec<Postfix>,
},
}
+2 -2
View File
@@ -282,7 +282,7 @@ impl From<pest::iterators::Pair<'_, Rule>> for Expression {
.map(|v| v.as_rule() == Rule::prefix)
.unwrap_or_default()
{
prefixes.push(PreFix::from(inner.next().unwrap()));
prefixes.push(Prefix::from(inner.next().unwrap()));
}
println!("{:#?}", prefixes);
@@ -326,7 +326,7 @@ impl From<pest::iterators::Pair<'_, Rule>> for Expression {
}
}
impl From<pest::iterators::Pair<'_, Rule>> for PreFix {
impl From<pest::iterators::Pair<'_, Rule>> for Prefix {
fn from(pair: pest::iterators::Pair<Rule>) -> Self {
match pair.as_rule() {
Rule::prefix => Self::from(pair.into_inner().next().unwrap()),
+20 -3
View File
@@ -1,6 +1,6 @@
use parser::ast::{
BinaryOp, Block, Expression, IfStmt, Postfix, Statement, StaticPath, TopLevel, TypeExpr,
TypeExprKind, TypePostfix, VarAssignStmt, VarDecl, VarDeclStmt, WhileStmt,
BinaryOp, Block, Expression, IfStmt, Postfix, Prefix, Statement, StaticPath, TopLevel,
TypeExpr, TypeExprKind, TypePostfix, VarAssignStmt, VarDecl, VarDeclStmt, WhileStmt,
};
// ---------------------------------------------------------------------------
@@ -118,11 +118,28 @@ impl GetRust for Expression {
initial,
prefixes,
postfixes,
} => initial.get_rust() + &postfixes.get_rust(),
} => prefixes.get_rust() + &initial.get_rust() + &postfixes.get_rust(),
}
}
}
impl GetRust for Prefix {
fn get_rust(&self) -> String {
match self {
Self::Deref => "*",
Self::Ref => "&",
Self::RefMut => "&mut ",
}
.to_string()
}
}
impl GetRust for [Prefix] {
fn get_rust(&self) -> String {
self.iter().map(Prefix::get_rust).collect()
}
}
impl GetRust for Postfix {
fn get_rust(&self) -> String {
match self {