diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2024-05-01 16:09:34 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2024-05-01 16:09:34 +0200 |
commit | 284564933c991d2f65f7c81bd8f4cf525ad93408 (patch) | |
tree | b937fb81460d0a11b12122976b05b20c01a2bdf5 /crates/rebel-parse | |
parent | 8d15e1ab1c3c3bca3c794c5f1499e0108d60d42f (diff) | |
download | rebel-284564933c991d2f65f7c81bd8f4cf525ad93408.tar rebel-284564933c991d2f65f7c81bd8f4cf525ad93408.zip |
rebel-parse, rebel-lang: rename base "expr"/"pat" fields to "base" in index/field projection
Diffstat (limited to 'crates/rebel-parse')
-rw-r--r-- | crates/rebel-parse/src/ast/expr.rs | 26 | ||||
-rw-r--r-- | crates/rebel-parse/src/ast/pat.rs | 10 | ||||
-rw-r--r-- | crates/rebel-parse/src/grammar/recipe.rs | 12 |
3 files changed, 24 insertions, 24 deletions
diff --git a/crates/rebel-parse/src/ast/expr.rs b/crates/rebel-parse/src/ast/expr.rs index fda37e8..429dfa2 100644 --- a/crates/rebel-parse/src/ast/expr.rs +++ b/crates/rebel-parse/src/ast/expr.rs @@ -26,11 +26,11 @@ pub enum Expr<'a> { params: Vec<Expr<'a>>, }, Index { - expr: Box<Expr<'a>>, + base: Box<Expr<'a>>, index: Box<Expr<'a>>, }, Field { - expr: Box<Expr<'a>>, + base: Box<Expr<'a>>, field: Ident<'a>, }, Paren(Box<Expr<'a>>), @@ -69,16 +69,16 @@ impl<'a> Expr<'a> { } } - pub(crate) fn index(expr: Expr<'a>, index: Expr<'a>) -> Self { + pub(crate) fn index(base: Expr<'a>, index: Expr<'a>) -> Self { Expr::Index { - expr: Box::new(expr), + base: Box::new(base), index: Box::new(index), } } - pub(crate) fn field(expr: Expr<'a>, field: Ident<'a>) -> Self { + pub(crate) fn field(base: Expr<'a>, field: Ident<'a>) -> Self { Expr::Field { - expr: Box::new(expr), + base: Box::new(base), field, } } @@ -117,11 +117,11 @@ impl<'a> Expr<'a> { } expr.validate() } - Expr::Index { expr, index } => { + Expr::Index { base, index } => { index.validate()?; - expr.validate() + base.validate() } - Expr::Field { expr, field: _ } => expr.validate(), + Expr::Field { base, field: _ } => base.validate(), Expr::Paren(expr) => expr.validate(), Expr::Path(_) => Ok(()), Expr::Literal(lit) => lit.validate(), @@ -145,12 +145,12 @@ impl<'a> Expr<'a> { impl<'a> From<&DestrPat<'a>> for Expr<'a> { fn from(value: &DestrPat<'a>) -> Self { match value { - DestrPat::Index { pat, index } => Expr::Index { - expr: Box::new(pat.as_ref().into()), + DestrPat::Index { base, index } => Expr::Index { + base: Box::new(base.as_ref().into()), index: index.clone(), }, - DestrPat::Field { pat, field } => Expr::Field { - expr: Box::new(pat.as_ref().into()), + DestrPat::Field { base, field } => Expr::Field { + base: Box::new(base.as_ref().into()), field: *field, }, DestrPat::Paren(pat) => Expr::Paren(Box::new(pat.as_ref().into())), diff --git a/crates/rebel-parse/src/ast/pat.rs b/crates/rebel-parse/src/ast/pat.rs index 1a48372..7365b19 100644 --- a/crates/rebel-parse/src/ast/pat.rs +++ b/crates/rebel-parse/src/ast/pat.rs @@ -18,11 +18,11 @@ impl<'a> Pat<'a> { #[derive(Debug, Clone, PartialEq, Eq)] pub enum DestrPat<'a> { Index { - pat: Box<DestrPat<'a>>, + base: Box<DestrPat<'a>>, index: Box<Expr<'a>>, }, Field { - pat: Box<DestrPat<'a>>, + base: Box<DestrPat<'a>>, field: Ident<'a>, }, Paren(Box<DestrPat<'a>>), @@ -32,12 +32,12 @@ pub enum DestrPat<'a> { impl<'a> DestrPat<'a> { pub fn validate(&self) -> Result<(), ValidationError> { match self { - DestrPat::Index { pat, index } => { - pat.validate()?; + DestrPat::Index { base, index } => { + base.validate()?; index.validate()?; Ok(()) } - DestrPat::Field { pat, field: _ } => pat.validate(), + DestrPat::Field { base, field: _ } => base.validate(), DestrPat::Paren(pat) => pat.validate(), DestrPat::Path(_) => Ok(()), } diff --git a/crates/rebel-parse/src/grammar/recipe.rs b/crates/rebel-parse/src/grammar/recipe.rs index 8903eec..2aa665a 100644 --- a/crates/rebel-parse/src/grammar/recipe.rs +++ b/crates/rebel-parse/src/grammar/recipe.rs @@ -84,12 +84,12 @@ peg::parser! { / ident:ident() { Pat::Ident(ident) } pub rule destr_pat() -> DestrPat<'a> = precedence! { - pat:@ p('[') index:expr() p(']') { - DestrPat::Index { pat: Box::new(pat), index: Box::new(index) } + base:@ p('[') index:expr() p(']') { + DestrPat::Index { base: Box::new(base), index: Box::new(index) } } -- - pat:@ p('.') field:field() { - DestrPat::Field { pat: Box::new(pat), field } + base:@ p('.') field:field() { + DestrPat::Field { base: Box::new(base), field } } -- p('(') pat:destr_pat() p(')') { DestrPat::Paren(Box::new(pat)) } @@ -126,12 +126,12 @@ peg::parser! { expr:@ p('(') params:call_params() p(')') { Expr::apply(expr, params) } - expr:@ p('[') index:expr() p(']') { Expr::index(expr, index) } + base:@ p('[') index:expr() p(']') { Expr::index(base, index) } -- expr:@ p('.') method:field() p('(') params:call_params() p(')') { Expr::method(expr, method, params) } - expr:@ p('.') field:field() { Expr::field(expr, field) } + base:@ p('.') field:field() { Expr::field(base, field) } -- p('(') e:expr() p(')') { Expr::paren(e) } e:atom() { e } |