Enum ezno_parser::expressions::Expression
source · pub enum Expression {
Show 34 variants
NumberLiteral(NumberRepresentation, Span),
StringLiteral(String, Quoted, Span),
BooleanLiteral(bool, Span),
RegexLiteral {
pattern: String,
flags: Option<String>,
position: Span,
},
ArrayLiteral(Vec<ArrayElement>, Span),
ObjectLiteral(ObjectLiteral),
TemplateLiteral(TemplateLiteral),
ParenthesizedExpression(Box<MultipleExpression>, Span),
BinaryOperation {
lhs: Box<Expression>,
operator: BinaryOperator,
rhs: Box<Expression>,
position: Span,
},
SpecialOperators(SpecialOperators, Span),
UnaryOperation {
operator: UnaryOperator,
operand: Box<Expression>,
position: Span,
},
Assignment {
lhs: LHSOfAssignment,
rhs: Box<Expression>,
position: Span,
},
BinaryAssignmentOperation {
lhs: VariableOrPropertyAccess,
operator: BinaryAssignmentOperator,
rhs: Box<Expression>,
position: Span,
},
UnaryPrefixAssignmentOperation {
operator: UnaryPrefixAssignmentOperator,
operand: VariableOrPropertyAccess,
position: Span,
},
UnaryPostfixAssignmentOperation {
operand: VariableOrPropertyAccess,
operator: UnaryPostfixAssignmentOperator,
position: Span,
},
VariableReference(String, Span),
ThisReference(Span),
SuperExpression(SuperReference, Span),
NewTarget(Span),
ImportMeta(Span),
DynamicImport {
path: Box<Expression>,
options: Option<Box<Expression>>,
position: Span,
},
PropertyAccess {
parent: Box<Expression>,
property: PropertyReference,
is_optional: bool,
position: Span,
},
Index {
indexee: Box<Expression>,
indexer: Box<MultipleExpression>,
is_optional: bool,
position: Span,
},
FunctionCall {
function: Box<Expression>,
type_arguments: Option<Vec<TypeAnnotation>>,
arguments: Vec<FunctionArgument>,
is_optional: bool,
position: Span,
},
ConstructorCall {
constructor: Box<Expression>,
type_arguments: Option<Vec<TypeAnnotation>>,
arguments: Option<Vec<FunctionArgument>>,
position: Span,
},
ConditionalTernary {
condition: Box<Expression>,
truthy_result: Box<Expression>,
falsy_result: Box<Expression>,
position: Span,
},
ArrowFunction(ArrowFunction),
ExpressionFunction(ExpressionFunction),
ClassExpression(ClassDeclaration<ExpressionPosition>),
Null(Span),
Comment {
content: String,
on: Box<Expression>,
position: Span,
is_multiline: bool,
prefix: bool,
},
JSXRoot(JSXRoot),
IsExpression(IsExpression),
Marker {
marker_id: Marker<Expression>,
position: Span,
},
}
Expand description
Expression structures
Comma is implemented as a BinaryOperator
Variants§
NumberLiteral(NumberRepresentation, Span)
StringLiteral(String, Quoted, Span)
BooleanLiteral(bool, Span)
RegexLiteral
ArrayLiteral(Vec<ArrayElement>, Span)
ObjectLiteral(ObjectLiteral)
TemplateLiteral(TemplateLiteral)
ParenthesizedExpression(Box<MultipleExpression>, Span)
BinaryOperation
SpecialOperators(SpecialOperators, Span)
UnaryOperation
Assignment
BinaryAssignmentOperation
Modified assignment cannot have destructured thingies
UnaryPrefixAssignmentOperation
UnaryPostfixAssignmentOperation
VariableReference(String, Span)
e.g x
or (...).hi
ThisReference(Span)
SuperExpression(SuperReference, Span)
NewTarget(Span)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target
ImportMeta(Span)
DynamicImport
PropertyAccess
Index
e.g ...[4]
FunctionCall
Fields
§
function: Box<Expression>
§
type_arguments: Option<Vec<TypeAnnotation>>
§
arguments: Vec<FunctionArgument>
ConstructorCall
Fields
§
constructor: Box<Expression>
§
type_arguments: Option<Vec<TypeAnnotation>>
§
arguments: Option<Vec<FunctionArgument>>
ConditionalTernary
e.g ... ? ... ? ...
ArrowFunction(ArrowFunction)
ExpressionFunction(ExpressionFunction)
ClassExpression(ClassDeclaration<ExpressionPosition>)
Yes classes can exist in expr position :?
Null(Span)
Comment
JSXRoot(JSXRoot)
A start of a JSXNode
IsExpression(IsExpression)
Not to be confused with binary operator is
Marker
Implementations§
source§impl Expression
impl Expression
pub fn from_reader_with_precedence( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions, return_precedence: u8, start: Option<TokenStart>, ) -> ParseResult<Self>
pub fn get_precedence(&self) -> u8
source§impl Expression
impl Expression
sourcepub fn build_iife(block: Block) -> Self
pub fn build_iife(block: Block) -> Self
IIFE = immediate invoked function execution
pub fn is_iife(&self) -> Option<&ExpressionOrBlock>
sourcepub fn get_non_parenthesized(&self) -> &Self
pub fn get_non_parenthesized(&self) -> &Self
Recurses to find first non parenthesized expression
Trait Implementations§
source§impl ASTNode for Expression
impl ASTNode for Expression
fn from_reader( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions, ) -> ParseResult<Expression>
fn to_string_from_buffer<T: ToString>( &self, buf: &mut T, options: &ToStringOptions, local: LocalToStringInformation, )
source§fn get_position(&self) -> Span
fn get_position(&self) -> Span
Returns position of node as span AS IT WAS PARSED. May be
Span::NULL
if AST was doesn’t match anything in sourcesource§fn from_string(script: String, options: ParseOptions) -> ParseResult<Self>
fn from_string(script: String, options: ParseOptions) -> ParseResult<Self>
From string, with default impl to call abstract method
from_reader
fn from_string_with_options( script: String, options: ParseOptions, offset: Option<u32>, ) -> ParseResult<(Self, ParsingState)>
source§fn to_string(&self, options: &ToStringOptions) -> String
fn to_string(&self, options: &ToStringOptions) -> String
Returns structure as valid string
source§impl Clone for Expression
impl Clone for Expression
source§fn clone(&self) -> Expression
fn clone(&self) -> Expression
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for Expression
impl Debug for Expression
source§impl DeclarationExpression for Expression
impl DeclarationExpression for Expression
fn expression_from_reader( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions, ) -> ParseResult<Self>
fn expression_to_string_from_buffer<T: ToString>( &self, buf: &mut T, options: &ToStringOptions, local: LocalToStringInformation, )
fn get_declaration_position(&self) -> Option<Span>
fn as_option_expression_ref(&self) -> Option<&Expression>
fn as_option_expr_mut(&mut self) -> Option<&mut Expression>
source§impl From<Expression> for FunctionArgument
impl From<Expression> for FunctionArgument
source§fn from(value: Expression) -> Self
fn from(value: Expression) -> Self
Converts to this type from the input type.
source§impl From<Expression> for MultipleExpression
impl From<Expression> for MultipleExpression
source§fn from(expr: Expression) -> Self
fn from(expr: Expression) -> Self
Converts to this type from the input type.
source§impl From<VariableOrPropertyAccess> for Expression
impl From<VariableOrPropertyAccess> for Expression
source§fn from(this: VariableOrPropertyAccess) -> Self
fn from(this: VariableOrPropertyAccess) -> Self
Converts to this type from the input type.
source§impl GetFieldByType<BaseSpan<()>> for Expression
impl GetFieldByType<BaseSpan<()>> for Expression
source§impl<'a> IntoAST<Expression> for &'a str
impl<'a> IntoAST<Expression> for &'a str
fn into_ast(self) -> Expression
source§impl<'a> IntoAST<Expression> for Ident<'a>
impl<'a> IntoAST<Expression> for Ident<'a>
fn into_ast(self) -> Expression
source§impl IntoAST<Expression> for f64
impl IntoAST<Expression> for f64
fn into_ast(self) -> Expression
source§impl IntoAST<Expression> for usize
impl IntoAST<Expression> for usize
fn into_ast(self) -> Expression
source§impl PartialEq for Expression
impl PartialEq for Expression
source§impl SelfRustTokenize for Expression
impl SelfRustTokenize for Expression
fn append_to_token_stream(&self, token_stream: &mut TokenStream)
source§fn to_tokens(&self) -> TokenStream
fn to_tokens(&self) -> TokenStream
Returns the tokens used to construct self
source§impl Serialize for Expression
impl Serialize for Expression
source§impl TryFrom<Expression> for LHSOfAssignment
impl TryFrom<Expression> for LHSOfAssignment
source§type Error = ParseError
type Error = ParseError
The type returned in the event of a conversion error.
source§impl TryFrom<Expression> for VariableOrPropertyAccess
impl TryFrom<Expression> for VariableOrPropertyAccess
source§type Error = ParseError
type Error = ParseError
The type returned in the event of a conversion error.
source§impl Visitable for Expression
impl Visitable for Expression
fn visit<TData>( &self, visitors: &mut (impl VisitorReceiver<TData> + ?Sized), data: &mut TData, options: &VisitOptions, chain: &mut Annex<'_, Chain>, )
fn visit_mut<TData>( &mut self, visitors: &mut (impl VisitorMutReceiver<TData> + ?Sized), data: &mut TData, options: &VisitOptions, chain: &mut Annex<'_, Chain>, )
impl Eq for Expression
impl SelfVisitable for Expression
impl SelfVisitableMut for Expression
Auto Trait Implementations§
impl Freeze for Expression
impl RefUnwindSafe for Expression
impl Send for Expression
impl Sync for Expression
impl Unpin for Expression
impl UnwindSafe for Expression
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)