063 scope grammar

✓ Passing This code compiles and runs correctly.

Code

input.k

Actual

A wire line is exactly one invocation: verb(field: "value", field: "value")
- One invocation per turn. Nothing after the closing ')': no chains (|>), no second line, no trailing text.
- The verb is a bare name from your vocabulary — letters, digits, '-', '_' — immediately followed by '('.
- Every value is a double-quoted string; escape quotes and backslashes inside (\", \\). No bare values.
- A field whose type carries <!name> is a handle: issued by an earlier call, still held. Never invent one.
- Prose is not wire. To speak, call the vocabulary's voice verb; to act, call its verb. Nothing else parses.

Your vocabulary:
open(path: string)
append(handle: string<!open>, text: string)
close(handle: string<!open>)
say(text: string)
NOT FOUND

Expected output

A wire line is exactly one invocation: verb(field: "value", field: "value")
- One invocation per turn. Nothing after the closing ')': no chains (|>), no second line, no trailing text.
- The verb is a bare name from your vocabulary — letters, digits, '-', '_' — immediately followed by '('.
- Every value is a double-quoted string; escape quotes and backslashes inside (\", \\). No bare values.
- A field whose type carries <!name> is a handle: issued by an earlier call, still held. Never invent one.
- Prose is not wire. To speak, call the vocabulary's voice verb; to act, call its verb. Nothing else parses.

Your vocabulary:
open(path: string)
append(handle: string<!open>, text: string)
close(handle: string<!open>)
say(text: string)
NOT FOUND

Flows

flow ~register click a branch to expand · @labels scroll to their anchor
register (scope: "notes", source: open(10) append(1) close(1) say(1))
flow ~scope-grammar click a branch to expand · @labels scroll to their anchor
scope-grammar (name: "notes")
flow ~scope-grammar click a branch to expand · @labels scroll to their anchor
scope-grammar (name: "no-such-scope")

Test Configuration

MUST_RUN