sunflower/src/sunflower/ast.rs

94 lines
3.3 KiB
Rust

#![allow(unused)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(clippy::all)]
// |==========================================================|
// | WARNING: THIS FILE IS AUTOMATICALLY GENERATED. |
// | CHANGES TO IT WILL BE DELETED WHEN REGENERATED. |
// | IN GENERAL, THIS FILE SHOULD NOT BE MODIFIED IN ANY WAY. |
// |==========================================================|
use super::prelude::*;
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Program<M: AstInfo>(pub M, pub Vec<Statement<M>>);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Statement<M: AstInfo> {
Expression(M, Expression<M>),
Let(M, Identifier<M>, Expression<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Expression<M: AstInfo>(pub M, pub Equality<M>);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Identifier<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Equality<M: AstInfo> {
Equal(M, Inequality<M>, Inequality<M>),
NotEqual(M, Inequality<M>, Inequality<M>),
Inequality(M, Inequality<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Inequality<M: AstInfo> {
LessThan(M, Plus<M>, Plus<M>),
LessThanOrEqual(M, Plus<M>, Plus<M>),
GreaterThan(M, Plus<M>, Plus<M>),
GreaterThanOrEqual(M, Plus<M>, Plus<M>),
Plus(M, Plus<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Plus<M: AstInfo> {
Plus(M, Times<M>, Times<M>),
Minus(M, Times<M>, Times<M>),
Times(M, Times<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Times<M: AstInfo> {
Times(M, Value<M>, Value<M>),
Divide(M, Value<M>, Value<M>),
Value(M, Value<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Value<M: AstInfo> {
Const(M, ConstValue<M>),
Call(M, Call<M>),
Identifier(M, Identifier<M>),
Parens(M, Box<Expression<M>>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum ConstValue<M: AstInfo> {
Int(M, Int<M>),
Bool(M, Bool<M>),
String(M, String<M>),
Char(M, Char<M>),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Call<M: AstInfo>(pub M, pub Identifier<M>, pub Vec<Box<Expression<M>>>);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Int<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub enum Bool<M: AstInfo> {
True(M),
False(M),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct String<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Char<M: AstInfo>(pub M, pub std::string::String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(crate = "self::serde")]
pub struct Layout<M: AstInfo>(pub M, pub std::string::String);
pub type AST_ROOT<M> = Program<M>;