94 lines
3.3 KiB
Rust
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>;
|