michelson-ast

Crates.iomichelson-ast
lib.rsmichelson-ast
version0.1.2
sourcesrc
created_at2023-03-19 16:50:37.914719
updated_at2023-05-25 19:45:38.102145
descriptionAn AST for Michelson, a Tezos smart contract language
homepagehttps://github.com/woxjro/michelson-ast
repositoryhttps://github.com/woxjro/michelson-ast
max_upload_size
id814527
size40,408
woxjro (woxjro)

documentation

README

michelson-ast

Overview

michelson-ast is a Rust library for generating Michelson code. This library can handle the Abstract Syntax Tree (AST) of Michelson, the smart contract language for Tezos.

Usage

To generate Michelson code using this library, you can write a program like the following:

use michelson_ast::{
    instruction::Instruction,
    program::Program, ty::Ty,
    wrapped_instruction::WrappedInstruction,
};

fn main() {
    let program = Program {
        storage: Ty::Unit,
        parameter: Ty::Unit,
        code: vec![
            WrappedInstruction {
                comment: Some("=> Unit".to_owned()),
                instruction: Instruction::Cdr,
            },
            WrappedInstruction {
                comment: Some("=> {} : Unit".to_owned()),
                instruction: Instruction::Nil { ty: Ty::Operation },
            },
            WrappedInstruction {
                comment: Some("=> (Pair {} Unit)".to_owned()),
                instruction: Instruction::Pair,
            },
        ],
    };

    println!("{}", program.to_string());
}

Example output

parameter unit;
storage unit;
code {
       CDR; # => Unit
       NIL operation; # => {} : Unit
       PAIR; # => (Pair {} Unit)
     }
Commit count: 43

cargo fmt