DatexExpressionData

Enum DatexExpressionData 

Source
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

Source§

fn clone(&self) -> DatexExpressionData

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DatexExpressionData

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DatexExpressionData

Source§

fn default() -> DatexExpressionData

Returns the “default value” for a type. Read more
Source§

impl From<&ValueContainer> for DatexExpressionData

Source§

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

Source§

fn eq(&self, other: &DatexExpressionData) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Spanned for DatexExpressionData

Source§

impl TryFrom<&DatexExpressionData> for StructuralTypeDefinition

Available on crate feature compiler only.
Source§

type Error = ()

The type returned in the event of a conversion error.
Source§

fn try_from(expr: &DatexExpressionData) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<&DatexExpressionData> for Type

Available on crate feature compiler only.
Source§

type Error = ()

The type returned in the event of a conversion error.
Source§

fn try_from(expr: &DatexExpressionData) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<&DatexExpressionData> for ValueContainer

Source§

type Error = ()

The type returned in the event of a conversion error.
Source§

fn try_from(expr: &DatexExpressionData) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl StructuralPartialEq for DatexExpressionData

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,