joule-ui takes in OpenUI Lang 1.0 the way it takes in A2UI: a model writes a surface as a program, one widget a line, and joule-ui-lang builds a widget tree against the host's registry as the program streams. After every chunk a snapshot holds the tree as far as it can be built, each widget checked by joule-ui's own validate, and every error with its source line and reason code. State, queries, operators, conditionals, built-in functions and sequences of actions are parsed and refused not-declarative. A canonical writer turns a tree back into the language; it parses back to the same tree. - joule-ui-core: WidgetSchema::positional, the order a positional call passes props in (SPEC §3); absent from the wire form when undeclared. - joule-ui-interaction: begin_interaction and Pending::finish, the lifecycle's three phases in two steps for a host whose handler is asynchronous (SPEC §6); run_interaction is built on them and seals what it sealed before. - conformance/lang/v1: L1 statements, L2 ingest, L3 streaming, L4 the canonical form, L5 refusals, with an independent Python verifier written from §11. - docs/create.md: the design of Create. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1205 lines
26 KiB
JSON
1205 lines
26 KiB
JSON
{
|
|
"cases": [
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"name": "Page",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Ho"
|
|
}
|
|
}
|
|
},
|
|
"unresolved": [
|
|
"card"
|
|
]
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "card",
|
|
"line": 2,
|
|
"statement": "card"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Hel"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Home"
|
|
}
|
|
}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "card",
|
|
"line": 2,
|
|
"statement": "card"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Hello"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Home"
|
|
}
|
|
}
|
|
},
|
|
"unresolved": [
|
|
"Te",
|
|
"t2"
|
|
]
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "card",
|
|
"line": 2,
|
|
"statement": "card"
|
|
},
|
|
{
|
|
"key": "t1",
|
|
"line": 3,
|
|
"statement": "t1"
|
|
},
|
|
{
|
|
"key": "t2",
|
|
"line": 4,
|
|
"statement": "t2"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "one"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "two"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Hello"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Home"
|
|
}
|
|
}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "card",
|
|
"line": 2,
|
|
"statement": "card"
|
|
},
|
|
{
|
|
"key": "t1",
|
|
"line": 3,
|
|
"statement": "t1"
|
|
},
|
|
{
|
|
"key": "t2",
|
|
"line": 4,
|
|
"statement": "t2"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "one"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "two"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Hello"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "Home"
|
|
}
|
|
}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([card], \"Ho",
|
|
"me\")\ncard = Card(\"Hel",
|
|
"lo\", [t1, t2])\nt1 = Te",
|
|
"xt(\"one\")\nt2 = Text(\"two\")\n"
|
|
],
|
|
"name": "worked-example"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "c",
|
|
"line": 2,
|
|
"statement": "c"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "A"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "c",
|
|
"line": 2,
|
|
"statement": "c"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "A long"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "c",
|
|
"line": 2,
|
|
"statement": "c"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "A long title"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "c",
|
|
"line": 2,
|
|
"statement": "c"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "A long title"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([c])\nc = Card(\"A",
|
|
" long",
|
|
" title\")"
|
|
],
|
|
"name": "pending-title-grows"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "c",
|
|
"line": 2,
|
|
"statement": "c"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "t"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "c",
|
|
"line": 2,
|
|
"statement": "c"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Card",
|
|
"props": {
|
|
"title": {
|
|
"type": "text",
|
|
"value": "t"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([c])\nc = Card(",
|
|
"\"t\")\n"
|
|
],
|
|
"name": "held-until-required-arrives"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "ok"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [
|
|
{
|
|
"code": "type-mismatch",
|
|
"component": "Text",
|
|
"line": 3,
|
|
"prop": "text",
|
|
"statement": "b"
|
|
}
|
|
],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"c"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "ok"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [
|
|
{
|
|
"code": "type-mismatch",
|
|
"component": "Text",
|
|
"line": 3,
|
|
"prop": "text",
|
|
"statement": "b"
|
|
}
|
|
],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"c"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "ok"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([a, b])\na = Text(\"ok\")\nb = Text(4",
|
|
"2)\nc = 1"
|
|
],
|
|
"name": "errors-wait-for-completion"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"x"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "done"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 4,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"x"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "partial"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 4,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"x"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "partial"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([a])\na = Text(\"done\")\nx = 1\na = Text(\"partial",
|
|
"\")\n"
|
|
],
|
|
"name": "pending-does-not-overwrite"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"x"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "t"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"x",
|
|
"y"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "t"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [
|
|
"x",
|
|
"y"
|
|
],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "t"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([a])\na = Text(\"t\")\nx = c\n",
|
|
"? 1 : 2\ny = 3"
|
|
],
|
|
"name": "ternary-across-chunks"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "x"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 4,
|
|
"statement": "root"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 4,
|
|
"statement": "root"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([a])\na = Text(\"x\")\n",
|
|
"```\nroot = Page()\n```"
|
|
],
|
|
"name": "fence-arrives-late"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": true,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "back\\"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "back\\slash"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 2,
|
|
"statement": "a"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "back\\slash"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([a])\na = Text(\"back\\",
|
|
"slash\")"
|
|
],
|
|
"name": "open-string-mid-escape"
|
|
},
|
|
{
|
|
"after_each": [
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "b",
|
|
"line": 2,
|
|
"statement": "b"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "b"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": [
|
|
"Te"
|
|
]
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "b",
|
|
"line": 2,
|
|
"statement": "b"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "b"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": [
|
|
"Tex"
|
|
]
|
|
},
|
|
{
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 3,
|
|
"statement": "a"
|
|
},
|
|
{
|
|
"key": "b",
|
|
"line": 2,
|
|
"statement": "b"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "a"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "b"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
}
|
|
],
|
|
"at_end": {
|
|
"errors": [],
|
|
"incomplete": false,
|
|
"nodes": [
|
|
{
|
|
"key": "root",
|
|
"line": 1,
|
|
"statement": "root"
|
|
},
|
|
{
|
|
"key": "a",
|
|
"line": 3,
|
|
"statement": "a"
|
|
},
|
|
{
|
|
"key": "b",
|
|
"line": 2,
|
|
"statement": "b"
|
|
}
|
|
],
|
|
"orphans": [],
|
|
"tree": {
|
|
"children": [
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "a"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Text",
|
|
"props": {
|
|
"text": {
|
|
"type": "text",
|
|
"value": "b"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"name": "Page",
|
|
"props": {}
|
|
},
|
|
"unresolved": []
|
|
},
|
|
"chunks": [
|
|
"root = Page([a, b])\nb = Text(\"b\")\na = Te",
|
|
"x",
|
|
"t(\"a\")\n"
|
|
],
|
|
"name": "unknown-then-known"
|
|
}
|
|
],
|
|
"class": "L3"
|
|
}
|