kex docs Standard Library

Kex.AST

module Kex.AST

Parses Kex source code into a structured AST at runtime.

Returns Result<Program, ParseError> — the AST includes module definitions, function signatures, type/record definitions, traits, make blocks, and doc-comments extracted from # lines.

parse

parse(source: String) -> Result<Program, ParseError>
parse(source: String, filename: String) -> Result<Program, ParseError>

Parses a Kex source string into a structured AST.

parseFile

parseFile(path: FS.FilePath) -> Result<Program, ParseError>

Reads a file and parses it.

parseType

parseType(source: String) -> Result<TypeRef, ParseError>

Parses a type expression string into a TypeRef.

parseExpression

parseExpression(source: String) -> Result<Expression, ParseError>

Parses a single expression string into an Expression AST node.

typeRefText

typeRefText(_) -> String

patternRefText

patternRefText(_) -> String

patternFieldText

patternFieldText(name, _, _) -> String

referenceText

referenceText(_) -> String

record Location

Fields

file
String
column
Integer
startOffset
Integer
endOffset
Integer

record Program

Fields

schemaVersion
Integer
items
[Node]

record ParseError

Fields

message
String
location
Location?

type TypeRef

Structured representation of type expressions.

Variants

  • NamedType(String, [TypeRef])
  • FunctionType([TypeRef], TypeRef)
  • TupleType([TypeRef])
  • ListType(TypeRef)
  • MapType(TypeRef, TypeRef)
  • UnionType([TypeRef])
  • IntersectionType([TypeRef])
  • RecordType([(String, TypeRef)])
  • NullableType(TypeRef)
  • BlockType(TypeRef)
  • AtomType(String)
  • TypeQuery(String, Expression)
  • TypeVar(String)
  • AnyType
  • NoneType

type PatternRef

Structured representation of patterns.

Variants

  • BindPattern(String)
  • LiteralPattern(String)
  • ConstructorPattern(String, [PatternRef])
  • TuplePattern([PatternRef])
  • ListPattern([PatternRef], PatternRef?)
  • RecordPattern(String?, [PatternField])
  • RangePattern(PatternRef, PatternRef)
  • ThisPattern(PatternRef)
  • WildcardPattern

record PatternField

Fields

name
String
pattern
PatternRef?
stringKey
Bool

type Expression

Structured representation of expression AST nodes.

Variants

  • LitInt(Int)
  • LitFloat(Float)
  • LitChar(Int)
  • LitString(String)
  • InterpolatedString([String], [Expression])
  • LitBool(Bool)
  • LitAtom(String)
  • LitNone
  • Identifier(String)
  • This
  • BinaryOp(Expression, String, Expression)
  • UnaryOp(String, Expression)
  • Call(Expression, [Expression], [NamedArgument], Expression?)
  • TaggedLiteral(String, [String], [Expression])
  • MethodCall(Expression, String, [Expression], [NamedArgument], Expression?, Bool, Bool, TypeRef?)
  • If(Expression, PatternRef?, [Expression], [ElseIf], [Expression]?)
  • Match(Expression, String?, [MatchArm])
  • Receive(String?, [MatchArm], Expression?, Expression?)
  • ListLit([Expression], Expression?)
  • MapLit([MapItem])
  • RecordLit(String, [RecordField])
  • TupleLit([Expression])
  • Block([Expression])
  • Lambda([LambdaParam], [Expression], TypeRef?, RescueInfo?)
  • Let(PatternRef, TypeRef?, Expression)
  • Var(String, TypeRef?, Expression)
  • Assign(String, Expression)
  • Return(Expression)
  • Break
  • Next
  • Spawn([Expression])
  • Try(Expression)
  • Spread(Expression)
  • TrailingIf(Expression, Expression)
  • ThenElse(Expression, Expression, Expression)
  • ShorthandLambda(String, [Expression], Bool)
  • CurryPlaceholder
  • Curry(String, String?, Bool, [[Expression]])
  • Using(String, String?, [String], [String], [Expression])
  • With(String, Expression, [Expression])
  • GeneratedDeclaration(Expression, GeneratedTemplate)
  • ErrorExpression(String)
  • Trying([Expression], RescueInfo)
  • While(Expression, [Expression])
  • Loop([String], [Expression])
  • RangeLit(Expression, Expression)

record NamedArgument

Fields

name
String

record MatchArm

Fields

patterns
[PatternRef]

record LambdaParam

Fields

name
String
type
TypeRef?

record RescueInfo

Fields

arms
[MatchArm]
catchAllName
String?
catchAllBody
[Expression]
inlineReturn
Expression?

record ElseIf

Fields

condition
Expression

type MapItem

Variants

  • MapEntry(Expression, Expression)
  • MapSpread(Expression)

record RecordField

Fields

name
String

type GeneratedTemplate

A declaration template whose name (and, for a make block, target) is computed by a compiled do expression.

Variants

  • GeneratedNode(Node)
  • GeneratedMake(GeneratedMakeInfo)

record GeneratedMakeInfo

Fields

isFinal
Bool
implements
[TypeRef]
location
Location

record MainInfo

Fields

doc
String?
params
[ParamInfo]
rescueInfo
RescueInfo?
location
Location

record ParamInfo

Fields

name
String?
pattern
PatternRef?
type
TypeRef?
hasDefault
Bool

record ClauseInfo

Fields

params
[ParamInfo]
returnType
TypeRef?
rescueInfo
RescueInfo?
hasParamList
Bool

record FunctionInfo

Fields

name
String
doc
String?
isFoul
Bool
predicate
Bool
clauses
[ClauseInfo]
location
Location

record AnnotationInfo

Fields

name
String
doc
String?
implicitThis
Bool
location
Location

record VariantInfo

Fields

name
String
fields
[TypeRef]

record TypeInfo

Fields

name
String
doc
String?
typeParams
[String]
parents
[TypeRef]
variants
[VariantInfo]?
location
Location

record FieldInfo

Fields

name
String
hasDefault
Bool

record RecordInfo

Fields

name
String
doc
String?
typeParams
[String]
fields
[FieldInfo]
location
Location

record TraitInfo

Fields

name
String
doc
String?
typeParams
[String]
body
[Node]
location
Location

record MakeInfo

Fields

target
TypeRef
isFinal
Bool
implements
[TypeRef]
body
[Node]
location
Location

record PragmaInfo

Fields

name
String
value
String?
location
Location

record ModuleInfo

Fields

name
String
doc
String?
items
[Node]
location
Location

record ConstantInfo

Fields

name
String
doc
String?
type
TypeRef?
location
Location

record VisibilityInfo

Fields

isPublic
Bool
items
[Node]
location
Location

record UsingInfo

Fields

moduleName
String
alias
String?
onlyNames
[String]
exceptNames
[String]
location
Location

record ExportInfo

Fields

moduleName
String
alias
String?
onlyNames
[String]
exceptNames
[String]
location
Location

type CompiledItem

Variants

  • CompiledNode(Node)
  • CompiledExpression(Expression)

record CompiledInfo

Fields

location
Location

type Node

Variants

  • ModuleDef(ModuleInfo)
  • FunctionDef(FunctionInfo)
  • TypeAnnotation(AnnotationInfo)
  • TypeDef(TypeInfo)
  • RecordDef(RecordInfo)
  • TraitDef(TraitInfo)
  • MakeDef(MakeInfo)
  • PragmaDef(PragmaInfo)
  • ConstantDef(ConstantInfo)
  • MainDef(MainInfo)
  • Visibility(VisibilityInfo)
  • UsingDef(UsingInfo)
  • ExportDef(ExportInfo)
  • Compiled(CompiledInfo)

type TypeRef | PatternRef

Source-like conversion through the standard .to(String) spelling.

to

to(_) -> String?