Package com.darkcollective.relix.symbol


package com.darkcollective.relix.symbol
Root package for the relix symbol-table module.

Contains the core abstractions shared across the full symbol hierarchy:

  • Symbol — sealed root interface for every named entity known to the system. All symbols carry a Provenance (built-in vs user-defined), a ShadowPolicy governing whether they may be replaced, and a case-insensitive name within a namespace.
  • ScalarType — the type lattice for column values and function parameters/returns (ANY, STRING, NUMBER, BOOLEAN).
  • Schema and ColumnDefinition — structural description of a relation's columns.
  • ParameterDefinition — a typed, named parameter used in function signatures.
  • RegistrationResult and SymbolError — the result contract for symbol-table registration, supporting full error collection rather than fail-fast exceptions.

Naming convention: every symbol stores both a Symbol.declaredName() (case-preserved, as written by the user) and a Symbol.canonicalName() (lower-cased), ensuring lookups are always case-insensitive regardless of how the symbol was originally typed.

Default namespace: user-defined symbols that do not declare an explicit namespace are placed in the "default" namespace. Built-in symbols use the "builtin" namespace.