wagon_codegen/nodes/
factor.rs1use crate::SpannableIdent;
2
3use super::{Rc, ToTokensState};
4use proc_macro2::{TokenStream, Ident};
5use quote::quote;
6
7use wagon_parser::parser::factor::Factor;
8
9impl<U> ToTokensState<U> for Factor {
10 fn to_tokens(&self, state: &mut U, label: Rc<Ident>, attr_fun: fn(&mut U, Rc<Ident>, SpannableIdent)) -> TokenStream {
11 match self {
12 Self::Primary(p) => p.to_tokens(state, label, attr_fun),
13 Self::Power { left, right } => {
14 let left_stream = left.to_tokens(state, label.clone(), attr_fun);
15 let right_stream = right.to_tokens(state, label, attr_fun);
16 quote!(wagon_value::Pow::pow(#left_stream, #right_stream)?)
17 },
18 }
19 }
20}