Documentation
¶
Overview ¶
Package analysis derives deterministic semantic indexes from validated schemas. It assigns stable IDs, resolves QName references, and enforces cycle invariants.
Index ¶
- Constants
- func DetectCycles(schema *parser.Schema) error
- func RequireResolved(schema *parser.Schema) error
- func SortedGlobalDecls(decls []parser.GlobalDecl) []parser.GlobalDecl
- func SortedQNames[V any](m map[types.QName]V) []types.QName
- type AncestorIndex
- type AttributeEntry
- type ElementEntry
- type Registry
- type ResolvedReferences
- type TypeEntry
Constants ¶
const ( // InvalidTypeID represents an unassigned type ID. InvalidTypeID ids.TypeID = ids.InvalidTypeID // InvalidElemID represents an unassigned element ID. InvalidElemID ids.ElemID = ids.InvalidElemID // InvalidAttrID represents an unassigned attribute ID. InvalidAttrID ids.AttrID = ids.InvalidAttrID )
Variables ¶
This section is empty.
Functions ¶
func DetectCycles ¶
DetectCycles validates that type derivation, group refs, attribute group refs, and substitution groups are acyclic.
func RequireResolved ¶
RequireResolved ensures the schema is placeholder-free.
func SortedGlobalDecls ¶
func SortedGlobalDecls(decls []parser.GlobalDecl) []parser.GlobalDecl
SortedGlobalDecls returns a sorted copy of global declarations.
Types ¶
type AncestorIndex ¶
type AncestorIndex struct {
IDs []ids.TypeID
Masks []types.DerivationMethod
Offsets []uint32
Lengths []uint32
}
AncestorIndex stores ancestor chains and cumulative derivation masks by TypeID.
func BuildAncestors ¶
func BuildAncestors(schema *parser.Schema, registry *Registry) (*AncestorIndex, error)
BuildAncestors computes ancestor chains for all types in registry order. Built-in base types terminate a chain and are not included.
type AttributeEntry ¶
type AttributeEntry struct {
Decl *types.AttributeDecl
QName types.QName
ID ids.AttrID
Global bool
}
AttributeEntry records an attribute ID assignment in traversal order.
type ElementEntry ¶
ElementEntry records an element ID assignment in traversal order.
type Registry ¶
type Registry struct {
Types map[types.QName]ids.TypeID
Elements map[types.QName]ids.ElemID
Attributes map[types.QName]ids.AttrID
TypeOrder []TypeEntry
ElementOrder []ElementEntry
AttributeOrder []AttributeEntry
// contains filtered or unexported fields
}
Registry holds deterministic ID assignments for schema components.
func (*Registry) LookupAnonymousTypeID ¶
LookupAnonymousTypeID resolves an anonymous type definition to its assigned ID.
func (*Registry) LookupLocalAttributeID ¶
LookupLocalAttributeID resolves a local attribute declaration to its assigned ID.
func (*Registry) LookupLocalElementID ¶
LookupLocalElementID resolves a local element declaration to its assigned ID.
type ResolvedReferences ¶
type ResolvedReferences struct {
ElementRefs map[types.QName]ids.ElemID
AttributeRefs map[types.QName]ids.AttrID
GroupRefs map[types.QName]types.QName
}
ResolvedReferences records resolved references without mutating the parsed schema.
func ResolveReferences ¶
func ResolveReferences(schema *parser.Schema, registry *Registry) (*ResolvedReferences, error)
ResolveReferences validates and resolves QName references in the parsed schema.
Source Files
¶
- ancestors.go
- assign_core.go
- assign_ids.go
- assign_visit_attributes.go
- assign_visit_globals.go
- assign_visit_particles.go
- assign_visit_simple_types.go
- contract.go
- cycle_attribute_groups.go
- cycle_groups.go
- cycle_orchestrate.go
- cycle_substitution.go
- cycle_types.go
- doc.go
- registry.go
- resolve_attributes.go
- resolve_core.go
- resolve_elements.go
- resolve_types.go
- sort.go
- type_base.go
- validation.go