use super::parsed_type_modifier::ParsedTypeModifier; use crate::defines::{LiteralFloat, LiteralInt}; use crate::modifiers::{FieldModifier, TypeModifier}; use crate::parsing::parser::parser_operators::{BinaryOperator, PreOperator}; use crate::prim_type::PrimitiveType; use enumflags2::BitFlags; #[derive(PartialEq, Debug)] pub enum ParsedStatement { Invalid, Script { statements: Vec, }, Namespace { identifier: String, script: Box, }, Interface { type_mod: BitFlags, identifier: String, inherits: Vec, statements: Vec, }, Scope { is_global: bool, scope: Vec, generic_types: Option>, }, VirtProp { field_mod: BitFlags, property_type: Box, identifier: String, is_handle: bool, has_get: bool, is_get_const: bool, get_statement: Option>, has_set: bool, is_set_const: bool, set_statement: Option>, }, DataTypeIdentifier { identifier: String, }, DataTypeAuto {}, DataTypePrimType { prim_type: PrimitiveType, }, Type { is_const: bool, scope: Option>, datatype: Box, modifiers: Vec, }, Var { modifier: BitFlags, var_type: Box, identifier: String, assignment: Option>, }, ExprTermInitList { statement_type: Option>, initlist: Box, }, ExprTerm { pre_op: Vec, exp_value: Box, }, ExprPreOp { operator: PreOperator, }, ExprVoidValue {}, ConstructCall { statement_type: Option>, arglist: Box, }, FuncCall { scope: Option>, identifier: String, arglist: Box, }, VarAccess { scope: Option>, identifier: String, }, Cast { cast_type: Box, assign: Box, }, IntegerLiteral(LiteralInt), FloatLiteral(LiteralFloat), BoolLiteral(bool), StringLiteral(String), BinaryExpr { left: Box, operator: BinaryOperator, right: Box, }, }