Skip to content

Appendix A — The schema's $defs

Contents of ATD 0.1

atd.schema.json has one $defs entry per structure; each line gives its name and what it is.

$defs
Span Where a node stands in its file: UTF-8 byte offsets of its first byte and of the byte after it, and the 1-based line and column of its start and end, columns in code points (ATD §3.1, §15).
Name A name as written, with where it stands: a NAME or a keyword in a name position (ATD §3.6).
QualifiedName A dotted name, layout.twoSidedTree, std.missingId.
TypeRef A type: a qualified name with its type arguments (list<Concept>).
Value A value (ATD §6): exactly one of a literal, a CEL expression with its abstract syntax, a reference to an attribute, a theme token or a parameter, a settings map, or a list.
Setting One key: value pair (ATD §6.4); quoted when the key was written as a string.
CelNode CEL's abstract syntax (ATD §6.3), with spans: an operator is a call of its CEL function name (_+_, _&&_, !_, -_, _?_:_, _[_], @in, _[?_], _?._), a macro is a call marked macro, a method call has a target.
Tree The abstract tree of one .atd file, as atd tree prints it (ATD §4.5, FR-030). It is not an interchange form: nothing reads it back as a description.
Tool The tool construct of a root file (ATD §5.1).
Part A part of a description (ATD §5.2).
Member A member of a tool or a part: a construct of the core (ATD §7), the script (§12), a surface (§8 to §10) or a binding (§11).
Label label value: a display name or a label's text.
DocMember doc value.
SettingMember A setting among the members of a construct.
Import import "file" (a part), or import "file" as name (a library) (ATD §5.3).
Requires requires capability name@range (ATD §13).
Model model { … } (ATD §7.4).
Element element Name extends … { … }: an element type (DISL's node type, DESL's element type).
Relation relation Name from … to … { … } (DISL §4.9).
Attribute attribute name: Type flags { … } (DISL §4.3, DESL §4.3).
Contains contains Types as slot ordered (DISL §4.8, DESL §4.6).
Port port name { … } (DISL §4.10).
Enum enum Name "Label" { values } (DISL §4.5).
DataType datatype Name: Base { … } (DISL §4.4).
DocumentDecl document { … }: the attributes of the document itself.
Constraints constraints { … } (DISL §8, DESL §6).
Constraint constraint id for Types { … }.
Builtin builtin std.name { … }: settings of a built-in constraint (DISL §8.7).
Fix fix name "Label" { … }: a quick fix (DISL §8.5), or a fix on a range of an editor's text (ATD §10).
Operation operation id "Label" for Types { … } (DISL §9.3, DESL §8.1).
Param param name: Type.
Hook hook id on event for Types { … } (DISL §9.2).
Reason reason id "text" or reason id { when … message … } (DISL §2.3, §9.1).
MessageDecl message id value: a standard message (DISL §9.1).
Behavior behavior { … }.
Persistence persistence { … }.
Plugin plugin name { … } (DISL §13).
Function fn name(params) -> Type recursion n { … } (ATD §12.1).
Expr A CEL expression in a position that takes only an expression, written bare (ATD §6.2).
Statement A statement of the script (ATD §12.2) or an action (§12.3). Its fields are those its form writes: name, type, value, target, path, condition, then, else, names, iterable, limit, body, assignments, parent, after, before, slot, at, size, place, as, source, to, by, x, y, width, height, form, severity, on, operation, args, settings.
Coordinates coordinates { system … axis … snapping … default … } (DISL §5). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.
Notation notation { … } (DISL §6). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.
Toolbox toolbox { … } (DISL §7.1 to §7.4). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.
Layout layout { default … algorithm … } (DISL §10). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.
TableSurface surface table { … } (DESL §7.2 to §7.6). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.
HierarchySurface surface hierarchy { … } (DESL §7.7). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.
TextSurface surface text { … } (ATD §10). Its members are the constructs ATD's section names, each with kind the construct's keyword (system, node, edge, variant, group, tool, algorithm, rows, valueType, outline, …), name or names, its own fields and its settings.
Form form id "Label" for Types { … } (DISL §7.5).
Viewpoint viewpoint id "Label" { … } (DISL §3.5).
Binding binding name family … { … } (ATD §11).
BindingMember A member of a binding: claims, body, text, header, registration, template, block, section, an element or relation rule, or a setting, doc or label member.
Rule An element or relation rule (FBL §5.1, §5.4).
Finding A finding of the checker, a language server or validation (ATD §15, FR-091).
Findings The findings of one run, in a stable order: by file, then position, then code (ATD §15.4). A refused file of the corpus states those it must give in this form; message is then not compared.
ParseTables The LALR(1) automaton of a grammar in ATD grammar notation, normalized so that two implementations can be compared byte for byte (ATD §4.7): terminals by name (an anonymous string terminal is named by its quoted string), the rules of the grammar after the expansion of §4.4 sorted and numbered (a helper of a repetition named (<symbols>)+), and the states numbered breadth first from the start state over the symbols in sorted order, each with its actions on terminals (s<state>, r<rule>, accept) and its gotos on nonterminals.
Trace The trace of a tool description (ATD §2.5, data-model.md §10): every item of its companion's gap sections and every behaviour of a host's code, each with the part of the description that states it, the host's concern it is, or the reference behaviour it diverges from.
Provenance Who produced one part of a fixture (ATD §2.3).
ConformanceStep One gesture of a case and what it must produce (ATD §2.3). Exactly one of action, property, move, create, connect, delete, outside, undo and redo; select before it.
ConformanceFixture One conformance case of one tool type (ATD §2.3, data-model.md §8).
Drawing The scene of one view in adp-scene's vocabulary (ATD §2.4, data-model.md §9). Two drawings are equal when their elements and edges are equal as sets keyed by id and their order lists are equal.
Capability The contract of a capability (ATD §2.6, §13, data-model.md §7).
CapabilityFixture One fixture of a capability: an input, the arguments and the expected output (ATD §2.6).
LayoutInput The input of a layout capability: the nodes with their sizes and pins, the edges and the containment, in the canvas's domain units.
LayoutResult The output of a layout capability: a position for every node it places, in the canvas's domain units, rounded to 0.01, optionally the size it gives a node it resizes, and optionally route points.
RoutingInput The input of a routing capability: each edge with the boxes of its two ends, and the boxes it must keep clear of, in the canvas's domain units.
RoutingResult The output of a routing capability: the route of every edge it routes, by edge id, as path commands from the edge's first point to its last.
ReaderInput The input of a reader capability: the body's bytes as text, and the edit to plan when one is asked (FBL §11.2).
ReaderResult The output of a reader capability: what FBL §11.2's read returns, or the splices of a planned edit.
RenderInput The input of a render capability: a value to render.
RenderResult The output of a render capability: text runs or a drawing.
AnalysisInput The input of an analysis or arrange capability: a model or part of one.
AnalysisResult The output of an analysis capability: derived elements or relations and findings; of an arrange capability: actions.
Walk The 30-edit walk of SC-005 (ATD §19): steps over the examples, each a request at a position or an edit, with its expected result.
SettingsSchemas The $defs of DISL, DESL and FBL that the settings of ATD's constructs are checked against (ATD §14.6), by reference; each construct's entry is listed in ATD's Appendix A.

Referenced from