zkevm-assembly 0.153.12

The zkEVM common utilities
Documentation
use super::*;

pub(crate) fn parse_gas_left_combinator(input: &str) -> IResult<&str, String> {
    let (rest, (_, modifiers, args)) =
        parse_mnemonic_allow_modifiers(input, "context.gas_left", 1)?;
    let canonical = format!(
        "context.ergs_left{} {}",
        format_modifiers_into_canonical(modifiers),
        &args[0],
    );

    Ok((rest, canonical))
}

pub(crate) fn parse_set_gas_per_pubdatagas_left_combinator(input: &str) -> IResult<&str, String> {
    let (rest, (_, modifiers, args)) =
        parse_mnemonic_allow_modifiers(input, "context.set_gas_per_pubdata", 1)?;
    let canonical = format!(
        "context.set_ergs_per_pubdata{} {}",
        format_modifiers_into_canonical(modifiers),
        &args[0],
    );

    Ok((rest, canonical))
}

#[cfg(test)]
mod test {
    use super::*;
    use crate::assembly::SimplifyNomError;

    #[test]
    fn test_parse_gas_left() {
        let example = "context.gas_left r1";
        let r = parse_gas_left_combinator(example).simplify().unwrap();
        dbg!(r);
    }
}