#![doc = include_str!("readme.md")]
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, PartialEq)]
pub struct JuliaRoot {
pub statements: Vec<JuliaStatement>,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, PartialEq)]
pub enum JuliaStatement {
Function(JuliaFunction),
If {
condition: JuliaExpression,
then_body: Vec<JuliaStatement>,
else_body: Option<Vec<JuliaStatement>>,
},
For {
variable: String,
iterable: JuliaExpression,
body: Vec<JuliaStatement>,
},
Expression(JuliaExpression),
Error,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, PartialEq)]
pub struct JuliaFunction {
pub name: String,
pub body: Vec<JuliaStatement>,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Clone, PartialEq)]
pub enum JuliaExpression {
Identifier(String),
Literal(String),
Binary {
left: Box<JuliaExpression>,
op: String,
right: Box<JuliaExpression>,
},
Call {
callee: Box<JuliaExpression>,
arguments: Vec<JuliaExpression>,
},
}