///|
test {
let id = @ast.ShapeId::new("String", namespace="smithy.api")
inspect(id, content="smithy.api#String")
}pub(all) struct IdlFile {
control : ArrayView[ControlStatement]
metadata : ArrayView[MetadataStatement]
namespace : NamespaceStatement?
uses : ArrayView[UseStatement]
statements : ArrayView[Statement]
span : Span
} derive(Eq, Debug)pub(all) struct Member {
docs : ArrayView[DocComment]
traits : ArrayView[Trait]
name : Node[String]
target : MemberTarget
default : NodeValue?
span : Span
} derive(Eq, Debug)pub(all) enum OperationProperty {
Input(OperationTarget, Span)
Output(OperationTarget, Span)
Errors(ArrayView[Node[ShapeId]], Span)
} derive(Eq, Debug)pub(all) enum Shape {
Simple(kind~ : SimpleType, name~ : Node[String], mixins~ : Mixins?)
Enum(kind~ : EnumType, name~ : Node[String], mixins~ : Mixins?, members~ : ArrayView[EnumMember])
Aggregate(kind~ : AggregateType, name~ : Node[String], for_resource~ : Node[ShapeId]?, mixins~ : Mixins?, members~ : ArrayView[Member])
Entity(kind~ : EntityType, name~ : Node[String], mixins~ : Mixins?, body~ : NodeValue)
Operation(name~ : Node[String], mixins~ : Mixins?, properties~ : ArrayView[OperationProperty])
} derive(Eq, Debug)pub(all) enum ShapeKind {
Simple(SimpleType)
Enum(EnumType)
Aggregate(AggregateType)
Entity(EntityType)
Operation
} derive(Eq, Hash, Debug)Install
Download zipSmithy IDL syntax for MoonBit: lossless scanner, typed AST, CST, parser and diagnostics
Dependencies