Skip to content

darwins-challenge/moonlander-ast-rust

Repository files navigation

moonlander-ast-rust Build StatusDependency Status

Code to create, manipulate and evaluate abstract syntax trees for the moonlander control code in Rust.

Learn more about this crate via the documentation.

You can build your own at the Rust Belt Rust Conference

Usage

#[macro_use]
extern crate ast;

use ast::Evaluate;

fn main() {
	let program: ast::Program = iff!(less!(vx!(), multiply!(constant!(2.0), constant!(3.0))), left!(), right!());

	let data: ast::SensorData = ast::SensorData { x: 37.0, y: 51.0, vx: 1.0, vy: 0.0, o: 0.0, w: 0.0 };

	let command = program.evaluate(data);

	let message = match **command {
		ast::Command::Skip  => "you skipped this turn",
		ast::Command::Left  => "you turned left",
		ast::Command::Right => "you turned rigth",
		ast::Command::Up    => "you fired your thrusters",
	};

	println!("action is {}", message);
}

About

Code to create, manipulate and evaluate abstract syntax tree for the moonlander control code in Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published