use crate::token::Token;
use num_rational::BigRational;
#[derive(Debug, Clone)]
#[allow(dead_code)]
pub enum ASTNode {
Block(Vec<ASTNode>),
Float(BigRational),
Identifier(String),
StringLiteral(String),
BinaryOp(Box<ASTNode>, Token, Box<ASTNode>),
Assignment(String, Box<ASTNode>),
Call(String, Vec<ASTNode>),
Function(String, Vec<String>, Box<ASTNode>),
Import(String),
Print(Box<ASTNode>),
If(Box<ASTNode>, Box<ASTNode>, Option<Box<ASTNode>>), DewPoint(Box<ASTNode>, Box<ASTNode>), FToC(Box<ASTNode>), CToF(Box<ASTNode>), CToK(Box<ASTNode>), KToC(Box<ASTNode>), FToK(Box<ASTNode>), KToF(Box<ASTNode>), PauliX(Box<ASTNode>),
PauliY(Box<ASTNode>),
PauliZ(Box<ASTNode>),
Hadamard(Box<ASTNode>),
CNot(Box<ASTNode>, Box<ASTNode>),
Qubit(Box<ASTNode>, Box<ASTNode>), MeasureQubit(Box<ASTNode>), Pi,
Kelvin,
RD,
CP,
P0,
LV,
CW,
RhoAir,
RhoWater,
G,
GreaterThan(Box<ASTNode>, Box<ASTNode>),
LessThan(Box<ASTNode>, Box<ASTNode>),
}