#![allow(dead_code, unused_imports, non_camel_case_types)]
#![allow(missing_docs, rustdoc::missing_crate_level_docs)]
#![allow(clippy::unnecessary_cast)]
#![doc = include_str!("readme.md")]
mod parse_cst;
mod parse_ast;
use core::str::FromStr;
use std::{borrow::Cow, ops::Range, sync::OnceLock};
use yggdrasil_rt::*;
type Input<'i> = Box<State<'i, ValkyrieRule>>;
type Output<'i> = Result<Box<State<'i, ValkyrieRule>>, Box<State<'i, ValkyrieRule>>>;
#[doc = include_str!("railway.min.svg")]
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, Ord, PartialOrd, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ValkyrieParser {}
impl YggdrasilParser for ValkyrieParser {
type Rule = ValkyrieRule;
fn parse_cst(input: &str, rule: Self::Rule) -> OutputResult<ValkyrieRule> {
self::parse_cst::parse_cst(input, rule)
}
}
#[repr(u32)]
#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord, PartialOrd, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ValkyrieRule {
Program,
Statement,
EOS,
EOS_FREE,
DefineNamespace,
OP_NAMESPACE,
DefineImport,
ImportTerm,
ImportAs,
ImportAll,
ImportBlock,
ImportMacro,
ImportMacroItem,
DefineClass,
ClassBlock,
ClassBlockItem,
ClassInherit,
ClassInheritItem,
ClassField,
ClassMethod,
ClassDomain,
DefineTemplate,
TemplateParameters,
TemplateBlock,
TemplateStatement,
TemplateImplements,
WhereBlock,
WhereBound,
KW_CLASS,
DefineUnion,
KW_UNION,
DefineTrait,
KW_TRAIT,
WhileStatement,
KW_WHILE,
ForStatement,
MainStatement,
MainExpression,
MainTerm,
MainFactor,
MainInfix,
MainPrefix,
MainSuffix,
InlineExpression,
InlineTerm,
InlineFactor,
RangeCall,
RangeLiteral,
RangeAxis,
RangeOmit,
Atomic,
NamepathFree,
Namepath,
Identifier,
IdentifierBare,
IdentifierRaw,
IdentifierRawText,
Boolean,
Integer,
RangeExact,
Range,
ModifierCall,
COMMA,
COLON,
PROPORTION,
DOT,
OP_IMPORT_ALL,
OP_AND_THEN,
OP_BIND,
KW_NAMESPACE,
KW_IMPORT,
KW_TEMPLATE,
KW_WHERE,
KW_IMPLEMENTS,
KW_EXTENDS,
KW_INHERITS,
KW_IF,
KW_ELSE,
KW_FOR,
KW_RETURN,
KW_BREAK,
KW_CONTINUE,
KW_NOT,
KW_IN,
KW_IS,
KW_AS,
WhiteSpace,
Comment,
IgnoreText,
IgnoreRegex,
}
impl YggdrasilRule for ValkyrieRule {
fn is_ignore(&self) -> bool {
matches!(self, Self::IgnoreText | Self::IgnoreRegex | Self::WhiteSpace | Self::Comment)
}
fn get_style(&self) -> &'static str {
match self {
Self::Program => "",
Self::Statement => "",
Self::EOS => "",
Self::EOS_FREE => "",
Self::DefineNamespace => "",
Self::OP_NAMESPACE => "",
Self::DefineImport => "",
Self::ImportTerm => "",
Self::ImportAs => "",
Self::ImportAll => "",
Self::ImportBlock => "",
Self::ImportMacro => "",
Self::ImportMacroItem => "",
Self::DefineClass => "",
Self::ClassBlock => "",
Self::ClassBlockItem => "",
Self::ClassInherit => "",
Self::ClassInheritItem => "",
Self::ClassField => "",
Self::ClassMethod => "",
Self::ClassDomain => "",
Self::DefineTemplate => "",
Self::TemplateParameters => "",
Self::TemplateBlock => "",
Self::TemplateStatement => "",
Self::TemplateImplements => "",
Self::WhereBlock => "",
Self::WhereBound => "",
Self::KW_CLASS => "",
Self::DefineUnion => "",
Self::KW_UNION => "",
Self::DefineTrait => "",
Self::KW_TRAIT => "",
Self::WhileStatement => "",
Self::KW_WHILE => "",
Self::ForStatement => "",
Self::MainStatement => "",
Self::MainExpression => "",
Self::MainTerm => "",
Self::MainFactor => "",
Self::MainInfix => "",
Self::MainPrefix => "",
Self::MainSuffix => "",
Self::InlineExpression => "",
Self::InlineTerm => "",
Self::InlineFactor => "",
Self::RangeCall => "",
Self::RangeLiteral => "",
Self::RangeAxis => "",
Self::RangeOmit => "",
Self::Atomic => "",
Self::NamepathFree => "",
Self::Namepath => "",
Self::Identifier => "",
Self::IdentifierBare => "",
Self::IdentifierRaw => "",
Self::IdentifierRawText => "",
Self::Boolean => "",
Self::Integer => "",
Self::RangeExact => "",
Self::Range => "",
Self::ModifierCall => "",
Self::COMMA => "",
Self::COLON => "",
Self::PROPORTION => "",
Self::DOT => "",
Self::OP_IMPORT_ALL => "",
Self::OP_AND_THEN => "",
Self::OP_BIND => "",
Self::KW_NAMESPACE => "",
Self::KW_IMPORT => "",
Self::KW_TEMPLATE => "",
Self::KW_WHERE => "",
Self::KW_IMPLEMENTS => "",
Self::KW_EXTENDS => "",
Self::KW_INHERITS => "",
Self::KW_IF => "",
Self::KW_ELSE => "",
Self::KW_FOR => "",
Self::KW_RETURN => "",
Self::KW_BREAK => "",
Self::KW_CONTINUE => "",
Self::KW_NOT => "",
Self::KW_IN => "",
Self::KW_IS => "",
Self::KW_AS => "",
Self::WhiteSpace => "",
Self::Comment => "",
_ => "",
}
}
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ProgramNode {
pub statement: Vec<StatementNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum StatementNode {
DefineClass(DefineClassNode),
DefineImport(DefineImportNode),
DefineNamespace(DefineNamespaceNode),
DefineTrait(DefineTraitNode),
DefineUnion(DefineUnionNode),
MainStatement(MainStatementNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum EosNode {
Omit,
Show,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct EosFreeNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DefineNamespaceNode {
pub namepath_free: NamepathFreeNode,
pub op_namespace: Option<OpNamespaceNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum OpNamespaceNode {
Hide,
Main,
Test,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DefineImportNode {
pub import_term: Vec<ImportTermNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ImportTermNode {
ImportAll(ImportAllNode),
ImportAs(ImportAsNode),
ImportBlock(ImportBlockNode),
ImportMacro(ImportMacroNode),
NamepathFree(NamepathFreeNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ImportAsNode {
pub namepath_free: NamepathFreeNode,
pub alias: IdentifierNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ImportAllNode {
pub namepath_free: NamepathFreeNode,
pub op_import_all: OpImportAllNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ImportBlockNode {
pub import_term: Vec<ImportTermNode>,
pub namepath_free: NamepathFreeNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ImportMacroNode {
pub import_macro_item: ImportMacroItemNode,
pub namepath_free: NamepathFreeNode,
pub alias: ImportMacroItemNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ImportMacroItemNode {
Capture(IdentifierNode),
Instant(IdentifierNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DefineClassNode {
pub kw_class: KwClassNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ClassBlockNode {
pub class_block_item: Vec<ClassBlockItemNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ClassBlockItemNode {
ClassDomain(ClassDomainNode),
ClassField(ClassFieldNode),
ClassMethod(ClassMethodNode),
EosFree(EosFreeNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ClassInheritNode {
pub class_inherit_item: Vec<ClassInheritItemNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ClassInheritItemNode {
pub namepath: NamepathNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ClassFieldNode {
pub identifier: IdentifierNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ClassMethodNode {
pub identifier: IdentifierNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ClassDomainNode {
pub class_block: ClassBlockNode,
pub identifier: IdentifierNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DefineTemplateNode {
pub kw_template: KwTemplateNode,
pub template_block: TemplateBlockNode,
pub template_parameters: Option<TemplateParametersNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TemplateParametersNode {
pub comma: Vec<CommaNode>,
pub identifier: Vec<IdentifierNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TemplateBlockNode {
pub eos_free: Vec<EosFreeNode>,
pub template_implements: Vec<TemplateImplementsNode>,
pub template_statement: Vec<TemplateStatementNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TemplateStatementNode {
pub where_block: WhereBlockNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TemplateImplementsNode {
pub kw_implements: KwImplementsNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct WhereBlockNode {
pub kw_where: KwWhereNode,
pub where_bound: Vec<WhereBoundNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct WhereBoundNode {
pub eos_free: EosFreeNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwClassNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DefineUnionNode {
pub kw_union: KwUnionNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwUnionNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DefineTraitNode {
pub kw_trait: KwTraitNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwTraitNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct WhileStatementNode {
pub inline_expression: Option<InlineExpressionNode>,
pub kw_while: KwWhileNode,
pub main_statement: Vec<MainStatementNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwWhileNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ForStatementNode {
pub identifier: IdentifierNode,
pub inline_expression: Option<InlineExpressionNode>,
pub kw_for: KwForNode,
pub kw_in: KwInNode,
pub main_statement: Vec<MainStatementNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum MainStatementNode {
ForStatement(ForStatementNode),
MainExpression(MainExpressionNode),
WhileStatement(WhileStatementNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct MainExpressionNode {
pub eos: Option<EosNode>,
pub main_infix: Vec<MainInfixNode>,
pub main_term: Vec<MainTermNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct MainTermNode {
pub main_factor: MainFactorNode,
pub main_prefix: Vec<MainPrefixNode>,
pub main_suffix: Vec<MainSuffixNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum MainFactorNode {
Atomic(AtomicNode),
MainFactor0(MainExpressionNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum MainInfixNode {
And,
Apply2,
Apply3,
Contains,
Divide,
DivideAssign,
EE,
EEE,
EQ,
GE,
GEQ,
GG,
GGE,
GGG,
In,
Is(KwIsNode),
LE,
LEQ,
LL,
LLE,
LLL,
Map,
Minus,
MinusAssign,
Multiply,
MultiplyAssign,
NE,
NEE,
Nand,
Nor,
NotContains,
NotIn,
NotIs,
Or,
Plus,
PlusAssign,
Power,
Remainder,
RemainderAssign,
Surd,
Until,
UpTo,
Xand,
Xor,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum MainPrefixNode {
Deconstruct,
DeconstructAll,
Dereference,
Inverse,
Negative,
Not,
Positive,
Reference,
Root2,
Root3,
Root4,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum MainSuffixNode {
Celsius,
Fahrenheit,
Percent2,
Percent3,
Percent4,
Prime1,
Prime2,
Prime3,
Prime4,
Raise,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct InlineExpressionNode {
pub inline_term: Vec<InlineTermNode>,
pub main_infix: Vec<MainInfixNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct InlineTermNode {
pub inline_factor: InlineFactorNode,
pub main_prefix: Vec<MainPrefixNode>,
pub main_suffix: Vec<MainSuffixNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum InlineFactorNode {
Atomic(AtomicNode),
InlineFactor0(MainExpressionNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RangeCallNode {
pub op_and_then: Option<OpAndThenNode>,
pub range_literal: RangeLiteralNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RangeLiteralNode {
pub comma: Vec<CommaNode>,
pub range_axis: Vec<RangeAxisNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RangeAxisNode {
pub head: MainExpressionNode,
pub index: MainExpressionNode,
pub step: MainExpressionNode,
pub tail: MainExpressionNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RangeOmitNode {
pub colon: Vec<ColonNode>,
pub proportion: ProportionNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum AtomicNode {
Boolean(BooleanNode),
Integer(IntegerNode),
Namepath(NamepathNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct NamepathFreeNode {
pub identifier: Vec<IdentifierNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct NamepathNode {
pub identifier: Vec<IdentifierNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum IdentifierNode {
IdentifierBare(IdentifierBareNode),
IdentifierRaw(IdentifierRawNode),
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IdentifierBareNode {
pub text: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IdentifierRawNode {
pub identifier_raw_text: IdentifierRawTextNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IdentifierRawTextNode {
pub text: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum BooleanNode {
False,
True,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IntegerNode {
pub text: String,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RangeExactNode {
pub integer: IntegerNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct RangeNode {
pub max: Option<IntegerNode>,
pub min: Option<IntegerNode>,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ModifierCallNode {
pub identifier: IdentifierNode,
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CommaNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ColonNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ProportionNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DotNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct OpImportAllNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct OpAndThenNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct OpBindNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwNamespaceNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwImportNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwTemplateNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwWhereNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwImplementsNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwExtendsNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwInheritsNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwIfNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwElseNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwForNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwReturnNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwBreakNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwContinueNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwNotNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwInNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwIsNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct KwAsNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct WhiteSpaceNode {
pub span: Range<u32>,
}
#[derive(Clone, Debug, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CommentNode {
pub span: Range<u32>,
}