pub enum DatexExpressionData {
Show 39 variants
Noop,
Recover,
NativeImplementationIndicator,
Null,
Boolean(bool),
Text(String),
Decimal(Decimal),
TypedDecimal(TypedDecimal),
Integer(Integer),
TypedInteger(TypedInteger),
Identifier(String),
Endpoint(Endpoint),
List(List),
Map(Map),
Statements(Statements),
GetReference(PointerAddress),
Conditional(Conditional),
VariableDeclaration(VariableDeclaration),
VariableAssignment(VariableAssignment),
VariableAccess(VariableAccess),
TypeDeclaration(TypeDeclaration),
TypeExpression(TypeExpression),
CallableDeclaration(CallableDeclaration),
CreateRef(CreateRef),
Deref(Deref),
Slot(Slot),
SlotAssignment(SlotAssignment),
PointerAddress(PointerAddress),
BinaryOperation(BinaryOperation),
ComparisonOperation(ComparisonOperation),
DerefAssignment(DerefAssignment),
PropertyAssignment(PropertyAssignment),
UnaryOperation(UnaryOperation),
Apply(Apply),
PropertyAccess(PropertyAccess),
GenericInstantiation(GenericInstantiation),
Placeholder,
RemoteExecution(RemoteExecution),
VariantAccess(VariantAccess),
}Expand description
The different kinds of type expressions in the AST
Variants§
Noop
This is a marker for recovery from parse errors. We should never use this manually.
Recover
NativeImplementationIndicator
Null
null
Boolean(bool)
Boolean (true or false)
Text(String)
Text, e.g “Hello, world!”
Decimal(Decimal)
Decimal, e.g 123.456789123456
TypedDecimal(TypedDecimal)
Typed Decimal, e.g. 123.456i8
Integer(Integer)
Integer, e.g 123456789123456789
TypedInteger(TypedInteger)
Typed Integer, e.g. 123i8
Identifier(String)
Identifier (variable / core type usage)
Endpoint(Endpoint)
Endpoint, e.g. @test_a or @test_b
List(List)
List, e.g [1, 2, 3, "text"]
Map(Map)
Map, e.g {“xy”: 2, (3): 4, xy: “xy”}
Statements(Statements)
One or more statements, e.g (1; 2; 3)
GetReference(PointerAddress)
reference access, e.g. &
Conditional(Conditional)
Conditional expression, e.g. if (true) { 1 } else { 2 }
VariableDeclaration(VariableDeclaration)
Variable declaration, e.g. const x = 1, const mut x = 1, or var y = 2. VariableId is always set to 0 by the ast parser.
VariableAssignment(VariableAssignment)
Variable assignment, e.g. x = 42 or y += 1
VariableAccess(VariableAccess)
Variable access - only generated by the precompiler, not by the parser
TypeDeclaration(TypeDeclaration)
Type declaration, e.g. type MyType = { x: 42, y: “John” };
TypeExpression(TypeExpression)
Type expression, e.g. type(1 | 2)
CallableDeclaration(CallableDeclaration)
callable (function/procedure) declaration, e.g. function my_function() -> type ( … )
CreateRef(CreateRef)
Reference, e.g. &x or &mut x
Deref(Deref)
Deref
Slot(Slot)
Slot, e.g. #1, #endpoint
SlotAssignment(SlotAssignment)
Slot assignment
PointerAddress(PointerAddress)
Pointer address $
BinaryOperation(BinaryOperation)
Binary operation, e.g. x + y
ComparisonOperation(ComparisonOperation)
Comparison operation, e.g. x < y
DerefAssignment(DerefAssignment)
Deref assignment, e.g. *x = y, **x += y
PropertyAssignment(PropertyAssignment)
Property assignment, e.g. obj.property = value
UnaryOperation(UnaryOperation)
Unary operation, e.g. -x, !x
Apply(Apply)
Apply a value to another value, e.g. function call or type cast
PropertyAccess(PropertyAccess)
Apply a property access to an argument
GenericInstantiation(GenericInstantiation)
Generic instantiation, e.g. MyType
Placeholder
The ‘?’ placeholder expression
RemoteExecution(RemoteExecution)
Remote execution, e.g. @example :: 41 + 1
VariantAccess(VariantAccess)
Variant access, e.g. integer/u8
Trait Implementations§
Source§impl Clone for DatexExpressionData
impl Clone for DatexExpressionData
Source§fn clone(&self) -> DatexExpressionData
fn clone(&self) -> DatexExpressionData
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DatexExpressionData
impl Debug for DatexExpressionData
Source§impl Default for DatexExpressionData
impl Default for DatexExpressionData
Source§fn default() -> DatexExpressionData
fn default() -> DatexExpressionData
Source§impl From<&ValueContainer> for DatexExpressionData
impl From<&ValueContainer> for DatexExpressionData
Source§fn from(value: &ValueContainer) -> Self
fn from(value: &ValueContainer) -> Self
Converts a ValueContainer into a DatexExpression AST. This AST can then be further processed or decompiled into human-readable DATEX code.
Source§impl PartialEq for DatexExpressionData
impl PartialEq for DatexExpressionData
Source§impl Spanned for DatexExpressionData
impl Spanned for DatexExpressionData
Source§impl TryFrom<&DatexExpressionData> for StructuralTypeDefinition
Available on crate feature compiler only.
impl TryFrom<&DatexExpressionData> for StructuralTypeDefinition
compiler only.Source§impl TryFrom<&DatexExpressionData> for Type
Available on crate feature compiler only.
impl TryFrom<&DatexExpressionData> for Type
compiler only.Source§impl TryFrom<&DatexExpressionData> for ValueContainer
impl TryFrom<&DatexExpressionData> for ValueContainer
impl StructuralPartialEq for DatexExpressionData
Auto Trait Implementations§
impl Freeze for DatexExpressionData
impl !RefUnwindSafe for DatexExpressionData
impl !Send for DatexExpressionData
impl !Sync for DatexExpressionData
impl Unpin for DatexExpressionData
impl !UnwindSafe for DatexExpressionData
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more