Yet another TypeScript parser.
// Construct a Parser instance
///|
let parser = Parser::new(source)
// Specify file name
// The second argument of parse_source_file will be used in the output SourceFile struct
// Usually it's expected to be the same as the argument of Parser::new
///|
let result = parser.parse_source_file("filename.ts", source) catch {
ParseError(span~, kind~) as e =>
match kind {
// Pattern match on the caught error to inspect the exact reason of parsing failure
UnexpectedToken(token_kind) => ...
// ...
// Or just print the error message as ParseError implements Show
_ => abort(e)
}
}pub enum AccessibilityModifier {
Public
Private
Protected
}impl Eq for AccessibilityModifierimpl Show for AccessibilityModifierimpl Eq for ArrayBindingElementimpl Show for ArrayBindingElementpub struct ArrowFunction {
is_async : Bool
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
body : ArrowFunctionBody
}impl Eq for ArrowFunctionimpl Show for ArrowFunctionfn ArrowFunction::new(is_async : Bool, type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?, body : ArrowFunctionBody) -> ArrowFunctionimpl Eq for ArrowFunctionBodyimpl Show for ArrowFunctionBodypub struct BigIntLiteral {
text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
span : Span
}impl Eq for BigIntLiteralimpl Show for BigIntLiteralimpl Eq for BinaryExprimpl Show for BinaryExprpub enum BinaryOperator {
Equals
PlusEquals
MinusEquals
AsteriskEquals
AsteriskAsteriskEquals
SlashEquals
PercentEquals
AmpersandEquals
BarEquals
CaretEquals
ShiftLeftEquals
ShiftRightEquals
ShiftRightUnsignedEquals
AmpersandAmpersandEquals
BarBarEquals
QuestionQuestionEquals
Plus
Minus
Asterisk
Slash
Percent
AsteriskAsterisk
ShiftLeft
ShiftRight
ShiftRightUnsigned
LessThan
GreaterThan
LessThanEquals
GreaterThanEquals
In
InstanceOf
EqualsEquals
ExclamationEquals
EqualsEqualsEquals
ExclamationEqualsEquals
BitwiseAnd
BitwiseXor
BitwiseOr
AmpersandAmpersand
BarBar
QuestionQuestion
}impl Eq for BinaryOperatorimpl Show for BinaryOperatorpub struct BindingElement {
property_name : PropertyName?
is_rest : Bool
name : BindingName
initializer : Expr?
}impl Eq for BindingElementimpl Show for BindingElementfn BindingElement::new(name : BindingName, property_name : PropertyName?, is_rest : Bool, initializer : Expr?) -> BindingElementpub enum BindingName {
Identifier(Identifier)
ObjectBindingPattern(NodeArray[BindingElement])
ArrayBindingPattern(NodeArray[ArrayBindingElement])
}impl Eq for BindingNameimpl Show for BindingNamepub struct CallSignatureDecl {
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
}impl Eq for CallSignatureDeclimpl Show for CallSignatureDeclfn CallSignatureDecl::new(type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?) -> CallSignatureDeclimpl Eq for CaseOrDefaultClauseimpl Show for CaseOrDefaultClauseimpl Eq for CatchClauseimpl Show for CatchClausepub struct ClassDecl {
doc_comment : String?
decorators : NodeArray[Expr]?
modifiers : TopLevelModifiers
name : Identifier?
type_parameters : NodeArray[TypeParameterDecl]?
heritage_clauses : NodeArray[HeritageClause]?
members : NodeArray[ClassElement]
}fn ClassDecl::new(doc_comment : String?, decorators : NodeArray[Expr]?, modifiers : TopLevelModifiers, name : Identifier?, type_parameters : NodeArray[TypeParameterDecl]?, heritage_clauses : NodeArray[HeritageClause]?, members : NodeArray[ClassElement]) -> ClassDeclpub enum ClassElement {
PropertyDecl(PropertyDecl)
MethodDecl(MethodDecl)
Constructor(ConstructorDecl)
GetAccessor(GetAccessorDecl)
SetAccessor(SetAccessorDecl)
IndexSignature(IndexSignatureDecl)
SemicolonClassElement
ClassStaticBlockDecl(ClassStaticBlockDecl)
}impl Eq for ClassElementimpl Show for ClassElementpub struct ClassExpr {
name : Identifier?
type_parameters : NodeArray[TypeParameterDecl]?
heritage_clauses : NodeArray[HeritageClause]?
members : NodeArray[ClassElement]
}fn ClassExpr::new(name : Identifier?, type_parameters : NodeArray[TypeParameterDecl]?, heritage_clauses : NodeArray[HeritageClause]?, members : NodeArray[ClassElement]) -> ClassExprpub struct ClassMemberModifiers {
accessibility : AccessibilityModifier?
is_static : Bool
is_abstract : Bool
is_readonly : Bool
is_override : Bool
is_accessor : Bool
is_async : Bool
}impl Default for ClassMemberModifiersimpl Eq for ClassMemberModifiersimpl Show for ClassMemberModifiersimpl Eq for ClassStaticBlockDeclimpl Show for ClassStaticBlockDeclimpl Eq for ConditionalExprimpl Show for ConditionalExprimpl Eq for ConditionalTypeNodeimpl Show for ConditionalTypeNodefn ConditionalTypeNode::new(check_type : TypeNode, extends_type : TypeNode, true_type : TypeNode, false_type : TypeNode) -> ConditionalTypeNodepub struct ConstructSignatureDecl {
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
}impl Eq for ConstructSignatureDeclimpl Show for ConstructSignatureDeclfn ConstructSignatureDecl::new(type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?) -> ConstructSignatureDeclpub struct ConstructorDecl {
doc_comment : String?
modifiers : ClassMemberModifiers
parameters : NodeArray[ParameterDecl]
body : Array[Stmt]?
}impl Eq for ConstructorDeclimpl Show for ConstructorDeclfn ConstructorDecl::new(doc_comment : String?, modifiers : ClassMemberModifiers, parameters : NodeArray[ParameterDecl], body : Array[Stmt]?) -> ConstructorDeclpub struct ConstructorTypeNode {
is_abstract : Bool
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
}impl Eq for ConstructorTypeNodeimpl Show for ConstructorTypeNodefn ConstructorTypeNode::new(is_abstract : Bool, type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?) -> ConstructorTypeNodeimpl Eq for ElementAccessExprimpl Show for ElementAccessExprfn ElementAccessExpr::new(expression : Expr, argument_expression : Expr, is_null_coalescing : Bool) -> ElementAccessExprimpl Eq for EntityNameimpl Show for EntityNamepub struct EnumDecl {
doc_comment : String?
modifiers : TopLevelModifiers
name : Identifier
members : NodeArray[EnumMember]
}fn EnumDecl::new(doc_comment : String?, modifiers : TopLevelModifiers, name : Identifier, members : NodeArray[EnumMember]) -> EnumDeclimpl Eq for EnumMemberimpl Show for EnumMemberpub struct ExportAssignment {
modifiers : NodeArray[ModifierKind]?
is_export_equals : Bool
expression : Expr
}impl Eq for ExportAssignmentimpl Show for ExportAssignmentfn ExportAssignment::new(modifiers : NodeArray[ModifierKind]?, is_export_equals : Bool, expression : Expr) -> ExportAssignmentpub struct ExportDecl {
modifiers : NodeArray[ModifierKind]?
is_type_only : Bool
export_clause : NamedExportBindings?
module_specifier : Expr?
attributes : ImportAttributes?
}impl Eq for ExportDeclimpl Show for ExportDeclfn ExportDecl::new(modifiers : NodeArray[ModifierKind]?, is_type_only : Bool, export_clause : NamedExportBindings?, module_specifier : Expr?, attributes : ImportAttributes?) -> ExportDeclimpl Eq for ExportSpecifierimpl Show for ExportSpecifierfn ExportSpecifier::new(is_type_only : Bool, property_name : Identifier?, name : Identifier) -> ExportSpecifierpub enum ExprKind {
Identifier(Identifier)
NumericLiteral(NumericLiteral)
StringLiteral(StringLiteral)
BinaryExpr(BinaryExpr)
PrefixUnaryExpr(PrefixUnaryExpr)
PostfixUnaryExpr(PostfixUnaryExpr)
PropertyAccessExpr(PropertyAccessExpr)
ElementAccessExpr(ElementAccessExpr)
CallExpr(CallExpr)
NewExpr(NewExpr)
ImportExpr(NodeArray[Expr])
ArrayLiteralExpr(NodeArray[Expr])
ObjectLiteralExpr(NodeArray[ObjectLiteralElementLike])
FunctionExpr(FunctionExpr)
ArrowFunction(ArrowFunction)
ConditionalExpr(ConditionalExpr)
TemplateExpr(TemplateExpr)
TaggedTemplateExpr(TaggedTemplateExpr)
AsExpr(AsExpr)
ParenthesizedExpr(Expr)
SatisfiesExpr(SatisfiesExpr)
TypeAssertionExpr(TypeAssertionExpr)
NonNullExpr(Expr)
MetaProperty(MetaPropertyKind)
CommaListExpr(NodeArray[Expr])
ThisExpr
SuperExpr
NullLiteral
TrueLiteral
FalseLiteral
RegularExprLiteral(RegularExprLiteral)
NoSubstitutionTemplateLiteral(NoSubstitutionTemplateLiteral)
DeleteExpr(Expr)
TypeOfExpr(Expr)
VoidExpr(Expr)
AwaitExpr(Expr)
YieldExpr(YieldExpr)
SpreadElement(Expr)
OmittedExpr
ClassExpr(ClassExpr)
}impl Eq for ExprWithTypeArgumentsimpl Show for ExprWithTypeArgumentsfn ExprWithTypeArguments::new(expression : Expr, type_arguments : NodeArray[TypeNode]?) -> ExprWithTypeArgumentspub enum ForInitializer {
VariableDeclList(NodeArray[VariableDecl])
UsingDeclList(NodeArray[UsingDecl], Bool)
Expr(Expr)
}pub struct ForOfStmt {
initializer : ForInitializer
expression : Expr
statement : Stmt
is_await : Bool
}pub struct ForStmt {
initializer : ForInitializer?
condition : Expr?
incrementor : Expr?
statement : Stmt
}pub struct FunctionDecl {
doc_comment : String?
modifiers : TopLevelModifiers
is_async : Bool
is_generator : Bool
name : Identifier?
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
body : Array[Stmt]?
}impl Eq for FunctionDeclimpl Show for FunctionDeclfn FunctionDecl::new(doc_comment : String?, modifiers : TopLevelModifiers, is_async : Bool, is_generator : Bool, name : Identifier?, type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?, body : Array[Stmt]?) -> FunctionDeclpub struct FunctionExpr {
is_async : Bool
is_generator : Bool
name : Identifier?
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
body : Array[Stmt]?
}impl Eq for FunctionExprimpl Show for FunctionExprfn FunctionExpr::new(is_async : Bool, is_generator : Bool, name : Identifier?, type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?, body : Array[Stmt]?) -> FunctionExprpub struct FunctionTypeNode {
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
}impl Eq for FunctionTypeNodeimpl Show for FunctionTypeNodefn FunctionTypeNode::new(type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?) -> FunctionTypeNodepub struct GetAccessorDecl {
doc_comment : String?
decorators : NodeArray[Expr]?
modifiers : ClassMemberModifiers
name : PropertyName
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
body : Array[Stmt]?
}impl Eq for GetAccessorDeclimpl Show for GetAccessorDeclfn GetAccessorDecl::new(doc_comment : String?, decorators : NodeArray[Expr]?, modifiers : ClassMemberModifiers, name : PropertyName, parameters : NodeArray[ParameterDecl], type_node : TypeNode?, body : Array[Stmt]?) -> GetAccessorDeclimpl Eq for HeritageClauseimpl Show for HeritageClausefn HeritageClause::new(kind : HeritageKind, types : NodeArray[ExprWithTypeArguments]) -> HeritageClausepub enum HeritageKind {
Extends
Implements
}impl Eq for HeritageKindimpl Show for HeritageKindpub struct Identifier {
text : String
has_extended_unicode_escape : Bool
is_in_jsdoc_namespace : Bool
span : Span
}impl Eq for Identifierimpl Show for Identifierimpl Eq for ImportAttributeimpl Show for ImportAttributeimpl Eq for ImportAttributeNameimpl Show for ImportAttributeNameimpl Eq for ImportAttributesimpl Show for ImportAttributespub struct ImportClause {
is_type_only : Bool
name : Identifier?
named_bindings : NamedImportBindings?
}impl Eq for ImportClauseimpl Show for ImportClausefn ImportClause::new(is_type_only : Bool, name : Identifier?, named_bindings : NamedImportBindings?) -> ImportClausepub struct ImportDecl {
import_clause : ImportClause?
module_specifier : Expr
attributes : ImportAttributes?
phase : ImportPhase
}impl Eq for ImportDeclimpl Show for ImportDeclfn ImportDecl::new(import_clause : ImportClause?, module_specifier : Expr, attributes : ImportAttributes?, phase : ImportPhase) -> ImportDeclpub struct ImportEqualsDecl {
is_type_only : Bool
name : Identifier
module_ref : ImportEqualsModuleRef
}impl Eq for ImportEqualsDeclimpl Show for ImportEqualsDeclfn ImportEqualsDecl::new(is_type_only : Bool, name : Identifier, module_ref : ImportEqualsModuleRef) -> ImportEqualsDeclimpl Eq for ImportEqualsModuleRefimpl Show for ImportEqualsModuleRefpub enum ImportPhase {
Normal
Type
Defer
}impl Eq for ImportPhaseimpl Show for ImportPhaseimpl Eq for ImportSpecifierimpl Show for ImportSpecifierfn ImportSpecifier::new(is_type_only : Bool, property_name : Identifier?, name : Identifier) -> ImportSpecifierpub struct ImportTypeNode {
argument : Expr
qualifier : EntityName?
type_arguments : NodeArray[TypeNode]?
}impl Eq for ImportTypeNodeimpl Show for ImportTypeNodefn ImportTypeNode::new(argument : Expr, qualifier : EntityName?, type_arguments : NodeArray[TypeNode]?) -> ImportTypeNodepub struct IndexSignatureDecl {
is_readonly : Bool
parameters : NodeArray[ParameterDecl]
type_node : TypeNode
}impl Eq for IndexSignatureDeclimpl Show for IndexSignatureDeclfn IndexSignatureDecl::new(is_readonly : Bool, parameters : NodeArray[ParameterDecl], type_node : TypeNode) -> IndexSignatureDeclimpl Eq for IndexedAccessTypeNodeimpl Show for IndexedAccessTypeNodefn IndexedAccessTypeNode::new(object_type : TypeNode, index_type : TypeNode) -> IndexedAccessTypeNodepub struct InterfaceDecl {
doc_comment : String?
modifiers : TopLevelModifiers
name : Identifier
type_parameters : NodeArray[TypeParameterDecl]?
heritage_clauses : NodeArray[HeritageClause]?
members : NodeArray[TypeElement]
}impl Eq for InterfaceDeclimpl Show for InterfaceDeclfn InterfaceDecl::new(doc_comment : String?, modifiers : TopLevelModifiers, name : Identifier, type_parameters : NodeArray[TypeParameterDecl]?, heritage_clauses : NodeArray[HeritageClause]?, members : NodeArray[TypeElement]) -> InterfaceDeclimpl Eq for LabeledStmtimpl Show for LabeledStmtpub enum LexKind {
Identifier(String)
PrivateIdentifier(String)
Number(String)
String(String)
Regex(String)
DocComment(String)
NoSubTemplate(String, String)
TemplateHead(String, String)
TemplateMiddle(String, String)
TemplateTail(String, String)
KeywordLet
KeywordConst
KeywordVar
KeywordUsing
KeywordFunction
KeywordReturn
KeywordIf
KeywordElse
KeywordWhile
KeywordFor
KeywordDo
KeywordBreak
KeywordContinue
KeywordSwitch
KeywordCase
KeywordDefault
KeywordDebugger
KeywordTry
KeywordCatch
KeywordFinally
KeywordThrow
KeywordWith
KeywordNew
KeywordClass
KeywordInterface
KeywordType
KeywordEnum
KeywordModule
KeywordNamespace
KeywordImport
KeywordExport
KeywordAssert
KeywordGlobal
KeywordFrom
KeywordExtends
KeywordImplements
KeywordIn
KeywordInstanceof
KeywordOf
KeywordAs
KeywordSatisfies
KeywordDelete
KeywordTypeof
KeywordVoid
KeywordAwait
KeywordYield
KeywordThis
KeywordSuper
KeywordTrue
KeywordFalse
KeywordNull
LParen
RParen
LBrace
RBrace
LBracket
RBracket
Comma
Dot
DotDotDot
Semicolon
Colon
Question
QuestionDot
Plus
PlusPlus
PlusEq
Minus
MinusMinus
MinusEq
Star
StarStar
StarEq
StarStarEq
Slash
SlashEq
Percent
PercentEq
Bang
Tilde
Eq
EqEq
Arrow
EqEqEq
BangEq
BangEqEq
Lt
LtLt
LtLtEq
LtSlash
Gt
GtGt
GtGtGt
GtGtEq
GtGtGtEq
LtEq
GtEq
Ampersand
AmpAmp
AmpersandEq
AmpAmpEq
Bar
BarBar
BarEq
BarBarEq
Caret
CaretEq
QuestionQuestion
QuestionQuestionEq
At
Eof
}pub struct MappedTypeNode {
is_readonly : Bool
type_parameter : TypeParameterDecl
name_type : TypeNode?
is_optional : Bool
type_node : TypeNode?
}impl Eq for MappedTypeNodeimpl Show for MappedTypeNodefn MappedTypeNode::new(is_readonly : Bool, type_parameter : TypeParameterDecl, name_type : TypeNode?, is_optional : Bool, type_node : TypeNode?) -> MappedTypeNodepub enum MetaPropertyKind {
NewTarget
ImportMeta
}impl Eq for MetaPropertyKindimpl Show for MetaPropertyKindpub struct MethodDecl {
doc_comment : String?
decorators : NodeArray[Expr]?
modifiers : ClassMemberModifiers
is_generator : Bool
name : PropertyName
is_optional : Bool
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
body : Array[Stmt]?
}impl Eq for MethodDeclimpl Show for MethodDeclfn MethodDecl::new(doc_comment : String?, decorators : NodeArray[Expr]?, modifiers : ClassMemberModifiers, is_generator : Bool, name : PropertyName, is_optional : Bool, type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?, body : Array[Stmt]?) -> MethodDeclpub struct MethodSignature {
doc_comment : String?
name : PropertyName
is_optional : Bool
type_parameters : NodeArray[TypeParameterDecl]?
parameters : NodeArray[ParameterDecl]
type_node : TypeNode?
}impl Eq for MethodSignatureimpl Show for MethodSignaturefn MethodSignature::new(doc_comment : String?, name : PropertyName, is_optional : Bool, type_parameters : NodeArray[TypeParameterDecl]?, parameters : NodeArray[ParameterDecl], type_node : TypeNode?) -> MethodSignaturepub enum ModifierKind {
Abstract
Accessor
Async
Const
Declare
Default
Export
In
Public
Private
Protected
Readonly
Override
Out
Static
}impl Eq for ModifierKindpub struct ModuleDecl {
doc_comment : String?
modifiers : TopLevelModifiers
name : ModuleName
body : ModuleBody?
}impl Eq for ModuleDeclimpl Show for ModuleDeclfn ModuleDecl::new(doc_comment : String?, modifiers : TopLevelModifiers, name : ModuleName, body : ModuleBody?) -> ModuleDeclpub enum NamedExportBindings {
NamespaceExport(Identifier)
NamedExports(NodeArray[ExportSpecifier])
}impl Eq for NamedExportBindingsimpl Show for NamedExportBindingspub enum NamedImportBindings {
NamespaceImport(Identifier)
NamedImports(NodeArray[ImportSpecifier])
}impl Eq for NamedImportBindingsimpl Show for NamedImportBindingsimpl Eq for NamespaceExportDeclimpl Show for NamespaceExportDeclpub struct NoSubstitutionTemplateLiteral {
text : String
raw_text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
}impl Eq for NoSubstitutionTemplateLiteralimpl Show for NoSubstitutionTemplateLiteralfn NoSubstitutionTemplateLiteral::new(text : String, raw_text : String) -> NoSubstitutionTemplateLiteralpub struct NumericLiteral {
text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
is_octal_literal : Bool
span : Span
}impl Eq for NumericLiteralimpl Show for NumericLiteralpub enum ObjectLiteralElementLike {
PropertyAssignment(PropertyAssignment)
ShorthandPropertyAssignment(ShorthandPropertyAssignment)
SpreadAssignment(Expr)
MethodDecl(MethodDecl)
GetAccessor(GetAccessorDecl)
SetAccessor(SetAccessorDecl)
}impl Eq for ObjectLiteralElementLikeimpl Show for ObjectLiteralElementLikepub struct ParameterDecl {
modifiers : ParameterModifiers
is_rest : Bool
name : BindingName
is_optional : Bool
type_node : TypeNode?
initializer : Expr?
span : Span
}impl Eq for ParameterDeclimpl Show for ParameterDeclfn ParameterDecl::new(name : BindingName, modifiers : ParameterModifiers, is_rest : Bool, is_optional : Bool, type_node : TypeNode?, initializer : Expr?, span : Span) -> ParameterDeclimpl Default for ParameterModifiersimpl Eq for ParameterModifiersimpl Show for ParameterModifierspub enum ParseErrorKind {
UnexpectedToken(LexKind)
UnexpectedPrimary(LexKind)
ExpectedToken(LexKind, LexKind)
ExpectedNumericLiteralAfterMinus(LexKind)
ExpectedStringLiteralInImportType(LexKind)
ExpectedStringLiteralInModuleSpecifier(LexKind)
ExpectedTemplateLiteralTypeSpan(LexKind)
ExpectedTemplateSpan(LexKind)
InvalidBinaryOperator(LexKind)
InvalidNamespaceNameStringLiteral(LexKind)
StringLiteralModuleNameOnlyInDeclare
InvalidModuleBody
ModuleBodyRequiredWithoutDeclare
DecoratorsNotAllowedHere
LineBreakAfterThrow
LineBreakAfterTypeKeyword
ForAwaitMustUseOf(LexKind)
TopLevelAwaitOnlyInModule
MissingFunctionBodyOrSemicolon(LexKind)
LeadingCommaInImportAttributes
LeadingCommaInNamedImports
LeadingCommaInNamedExports
MissingDeclarationAfterModifiers(LexKind)
DuplicateModifier(ModifierKind)
InvalidVarianceOrder(ModifierKind, ModifierKind)
YieldOnlyInGenerator
RestParameterMustBeLastInParameterList
RestBindingMustBeLastInPattern
DeclarationFileStatementNotAllowed
ExportAssignmentOnlyInDeclarationFile
ExportAssignmentCannotBeUsedWithOtherExports
ExportNamespaceOnlyInDeclarationFile
ExportNamespaceOnlyInModule
AwaitOnlyInAsyncFunction
AwaitUsingOnlyInAsyncFunction
ForAwaitOnlyInAsyncFunction
ForAwaitOnlyInModule
AwaitUsingOnlyInModule
IdentifierAfterNumericLiteral
NumericSeparatorAtEnd
InvalidChar(Char)
UnterminatedString
InvalidSlice(Int)
MultipleAccessibilityModifiers
InvalidModifierForClassMember(ModifierKind)
InvalidModifierForParameter(ModifierKind)
InvalidModifierForTopLevel(ModifierKind)
InvalidModifierForTypeParameter(ModifierKind)
AbstractAndStaticCannotCombine
AbstractMembersCannotBePrivate
AbstractAndAsyncCannotCombine
AccessorAndAbstractCannotCombine
AbstractOnlyValidOnClasses
ConstOnlyValidOnEnums
InferTypeOnlyInConditionalExtends
}pub struct Parser {
tokens : Array[LexToken]
index : Int
line_starts : Array[Int]
is_module : Bool
script_kind : ScriptKind
in_generator : Int
in_function : Int
in_async_function : Int
in_conditional_extends : Int
has_import_syntax : Bool
has_export_syntax : Bool
has_non_namespace_export : Bool
has_export_assignment : Bool
export_namespace_range : (Int, Int)?
top_level_await_range : (Int, Int)?
for_await_range : (Int, Int)?
await_using_range : (Int, Int)?
pending_doc_comment : String?
allow_doc_comments : Bool
}fn Parser::new(text : String, script_kind? : ScriptKind, is_module? : Bool) -> Parser raise ParseErrorfn Parser::parse_source_file(self : Parser, file_name : String, text : String) -> SourceFile raise ParseErrorimpl Eq for PostfixUnaryExprimpl Show for PostfixUnaryExprimpl Eq for PrefixUnaryExprimpl Show for PrefixUnaryExprimpl Eq for PropertyAccessExprimpl Show for PropertyAccessExprfn PropertyAccessExpr::new(expression : Expr, name : Identifier, is_null_coalescing : Bool) -> PropertyAccessExprimpl Eq for PropertyAssignmentimpl Show for PropertyAssignmentpub struct PropertyDecl {
doc_comment : String?
decorators : NodeArray[Expr]?
modifiers : ClassMemberModifiers
name : PropertyName
is_optional : Bool
is_definite : Bool
type_node : TypeNode?
initializer : Expr?
}impl Eq for PropertyDeclimpl Show for PropertyDeclfn PropertyDecl::new(doc_comment : String?, decorators : NodeArray[Expr]?, modifiers : ClassMemberModifiers, name : PropertyName, is_optional : Bool, is_definite : Bool, type_node : TypeNode?, initializer : Expr?) -> PropertyDeclpub enum PropertyName {
Identifier(Identifier)
StringLiteral(StringLiteral)
NumericLiteral(NumericLiteral)
ComputedPropertyName(Expr)
PrivateIdentifier(String)
}impl Eq for PropertyNameimpl Show for PropertyNamepub struct PropertySignature {
doc_comment : String?
is_readonly : Bool
name : PropertyName
is_optional : Bool
type_node : TypeNode?
}impl Eq for PropertySignatureimpl Show for PropertySignaturefn PropertySignature::new(doc_comment : String?, is_readonly : Bool, name : PropertyName, is_optional : Bool, type_node : TypeNode?) -> PropertySignatureimpl Eq for QualifiedNameimpl Show for QualifiedNamepub struct RegularExprLiteral {
text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
span : Span
}impl Eq for RegularExprLiteralimpl Show for RegularExprLiteralimpl Eq for SatisfiesExprimpl Show for SatisfiesExprpub(all) enum ScriptKind {
Unknown
JS
JSX
TS
TSX
TSDeclarations
External
JSON
Deferred
}pub(all) enum ScriptTarget {
ES3
ES5
ES2015
ES2016
ES2017
ES2018
ES2019
ES2020
ES2021
ES2022
ES2023
ESNext
Latest
}impl Eq for ScriptTargetimpl Show for ScriptTargetpub struct SetAccessorDecl {
doc_comment : String?
decorators : NodeArray[Expr]?
modifiers : ClassMemberModifiers
name : PropertyName
parameters : NodeArray[ParameterDecl]
body : Array[Stmt]?
}impl Eq for SetAccessorDeclimpl Show for SetAccessorDeclfn SetAccessorDecl::new(doc_comment : String?, decorators : NodeArray[Expr]?, modifiers : ClassMemberModifiers, name : PropertyName, parameters : NodeArray[ParameterDecl], body : Array[Stmt]?) -> SetAccessorDeclimpl Eq for ShorthandPropertyAssignmentimpl Show for ShorthandPropertyAssignmentpub struct SourceFile {
stmts : NodeArray[Stmt]
file_name : String
text : String
script_kind : ScriptKind
is_module : Bool
}impl Show for SourceFilepub struct Span {
start : Int
end : Int
line : Int
column : Int
end_line : Int
end_column : Int
}pub enum StmtKind {
Block(Array[Stmt])
VariableStmt(VariableStmt)
UsingStmt(UsingStmt)
ExprStmt(Expr)
IfStmt(IfStmt)
DoStmt(DoStmt)
WhileStmt(WhileStmt)
ForStmt(ForStmt)
ForInStmt(ForInStmt)
ForOfStmt(ForOfStmt)
ContinueStmt(Identifier?)
BreakStmt(Identifier?)
ReturnStmt(Expr?)
WithStmt(WithStmt)
SwitchStmt(SwitchStmt)
LabeledStmt(LabeledStmt)
ThrowStmt(Expr)
TryStmt(TryStmt)
DebuggerStmt
FunctionDecl(FunctionDecl)
ClassDecl(ClassDecl)
InterfaceDecl(InterfaceDecl)
TypeAliasDecl(TypeAliasDecl)
EnumDecl(EnumDecl)
ModuleDecl(ModuleDecl)
ImportDecl(ImportDecl)
ImportEqualsDecl(ImportEqualsDecl)
ExportDecl(ExportDecl)
ExportAssignment(ExportAssignment)
NamespaceExportDecl(NamespaceExportDecl)
EmptyStmt
}pub struct StringLiteral {
text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
is_octal_literal : Bool
span : Span
}impl Eq for StringLiteralimpl Show for StringLiteralimpl Eq for TaggedTemplateExprimpl Show for TaggedTemplateExprfn TaggedTemplateExpr::new(tag : Expr, type_arguments : NodeArray[TypeNode]?, template : Expr) -> TaggedTemplateExprimpl Eq for TemplateExprimpl Show for TemplateExprpub struct TemplateHead {
text : String
raw_text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
}impl Eq for TemplateHeadimpl Show for TemplateHeadpub struct TemplateLiteralTypeNode {
head : TemplateHead
template_spans : NodeArray[TemplateLiteralTypeSpan]
}impl Eq for TemplateLiteralTypeNodeimpl Show for TemplateLiteralTypeNodefn TemplateLiteralTypeNode::new(head : TemplateHead, template_spans : NodeArray[TemplateLiteralTypeSpan]) -> TemplateLiteralTypeNodeimpl Eq for TemplateLiteralTypeSpanimpl Show for TemplateLiteralTypeSpanfn TemplateLiteralTypeSpan::new(type_node : TypeNode, literal : TemplateMiddleOrTemplateTail) -> TemplateLiteralTypeSpanpub struct TemplateMiddle {
text : String
raw_text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
}impl Eq for TemplateMiddleimpl Show for TemplateMiddleimpl Eq for TemplateMiddleOrTemplateTailimpl Show for TemplateMiddleOrTemplateTailimpl Eq for TemplateSpanimpl Show for TemplateSpanpub struct TemplateTail {
text : String
raw_text : String
is_unterminated : Bool
has_extended_unicode_escape : Bool
}impl Eq for TemplateTailimpl Show for TemplateTailpub struct TopLevelModifiers {
is_export : Bool
is_default : Bool
is_declare : Bool
}impl Eq for TopLevelModifiersimpl Show for TopLevelModifierspub struct TryStmt {
try_block : Array[Stmt]
catch_clause : CatchClause?
finally_block : Array[Stmt]?
}pub struct TupleElement {
label : Identifier?
is_optional : Bool
is_rest : Bool
type_node : TypeNode
span : Span
}impl Eq for TupleElementimpl Show for TupleElementfn TupleElement::new(label : Identifier?, is_optional : Bool, is_rest : Bool, type_node : TypeNode, span : Span) -> TupleElementpub struct TypeAliasDecl {
doc_comment : String?
modifiers : TopLevelModifiers
name : Identifier
type_parameters : NodeArray[TypeParameterDecl]?
type_node : TypeNode
}impl Eq for TypeAliasDeclimpl Show for TypeAliasDeclfn TypeAliasDecl::new(doc_comment : String?, modifiers : TopLevelModifiers, name : Identifier, type_parameters : NodeArray[TypeParameterDecl]?, type_node : TypeNode) -> TypeAliasDeclimpl Eq for TypeAssertionExprimpl Show for TypeAssertionExprpub enum TypeElement {
PropertySignature(PropertySignature)
MethodSignature(MethodSignature)
CallSignature(CallSignatureDecl)
ConstructSignature(ConstructSignatureDecl)
IndexSignature(IndexSignatureDecl)
GetAccessor(GetAccessorDecl)
SetAccessor(SetAccessorDecl)
}impl Eq for TypeElementimpl Show for TypeElementpub enum TypeKeyword {
Any
Unknown
Number
BigInt
Object
Boolean
String
Symbol
Void
Undefined
Null
Never
}impl Eq for TypeKeywordimpl Show for TypeKeywordpub enum TypeNodeKind {
KeywordType(TypeKeyword)
TypeReference(TypeReferenceNode)
ArrayType(TypeNode)
TupleType(NodeArray[TupleElement])
UnionType(NodeArray[TypeNode])
IntersectionType(NodeArray[TypeNode])
FunctionType(FunctionTypeNode)
ConstructorType(ConstructorTypeNode)
TypeLiteral(NodeArray[TypeElement])
LiteralType(Expr)
ThisType
ParenthesizedType(TypeNode)
TypeQuery(TypeQueryNode)
TypeOperator(TypeOperatorNode)
IndexedAccessType(IndexedAccessTypeNode)
ConditionalType(ConditionalTypeNode)
MappedType(MappedTypeNode)
InferType(TypeParameterDecl)
ImportType(ImportTypeNode)
TemplateLiteralType(TemplateLiteralTypeNode)
}impl Eq for TypeNodeKindimpl Show for TypeNodeKindpub enum TypeOperatorKind {
KeyOf
Readonly
Unique
}impl Eq for TypeOperatorKindimpl Show for TypeOperatorKindimpl Eq for TypeOperatorNodeimpl Show for TypeOperatorNodepub struct TypeParameterDecl {
modifiers : TypeParameterModifiers
name : Identifier
constraint : TypeNode?
default_type : TypeNode?
}impl Eq for TypeParameterDeclimpl Show for TypeParameterDeclfn TypeParameterDecl::new(name : Identifier, modifiers : TypeParameterModifiers, constraint : TypeNode?, default_type : TypeNode?) -> TypeParameterDeclimpl Default for TypeParameterModifiersimpl Eq for TypeParameterModifiersimpl Show for TypeParameterModifiersimpl Eq for TypeQueryExprNameimpl Show for TypeQueryExprNameimpl Eq for TypeQueryNodeimpl Show for TypeQueryNodefn TypeQueryNode::new(expr_name : TypeQueryExprName, type_arguments : NodeArray[TypeNode]?) -> TypeQueryNodeimpl Eq for TypeReferenceNodeimpl Show for TypeReferenceNodefn TypeReferenceNode::new(type_name : EntityName, type_arguments : NodeArray[TypeNode]?) -> TypeReferenceNodepub enum UnaryOperator {
PlusPlus
MinusMinus
Plus
Minus
Tilde
Exclamation
}impl Eq for UnaryOperatorimpl Show for UnaryOperatorpub struct UsingStmt {
modifiers : NodeArray[ModifierKind]?
declaration_list : NodeArray[UsingDecl]
is_await : Bool
}pub struct VariableDecl {
kind : VariableDeclKind
name : BindingName
type_node : TypeNode?
initializer : Expr?
}impl Eq for VariableDeclimpl Show for VariableDeclfn VariableDecl::new(kind : VariableDeclKind, name : BindingName, type_node : TypeNode?, initializer : Expr?) -> VariableDeclpub enum VariableDeclKind {
Let
Const
Var
}impl Eq for VariableDeclKindimpl Show for VariableDeclKindpub struct VariableStmt {
doc_comment : String?
modifiers : NodeArray[ModifierKind]?
declaration_list : NodeArray[VariableDecl]
}impl Eq for VariableStmtimpl Show for VariableStmtfn VariableStmt::new(doc_comment : String?, modifiers : NodeArray[ModifierKind]?, declaration_list : NodeArray[VariableDecl]) -> VariableStmtpub enum VarianceModifier {
In
Out
InOut
}impl Eq for VarianceModifierimpl Show for VarianceModifierInstall
Download zipYet another TypeScript parser.