Defaults

What the machine does when nothing says otherwise. Everything here can be changed; nothing here has to be.

The grammar’s own settings

Written in a config block — see Config Settings.

setting

default

ast-node-action

TRUE

ast-node-text

TRUE

ast-node-text-counter

TRUE

ast-node-text-series

TRUE

ast-node-char

FALSE

ast-node-char-counter

FALSE

ast-node-char-series

FALSE

scope-ordered-buffer-size

64 bytes

cache-call-buffer-size

256 slots

A grammar that writes a size of 0 has written nothing: zero is how “use the default” is stored, so it cannot also mean “none”.

The run’s own settings

Set by whoever starts the run (ApmVmConfig), not by the grammar. The runner apmr leaves all of them alone.

setting

default

what it is

variable stack

64 KiB

room for globals and every live action’s locals

stack growth

off

a grammar that wants more errors instead of growing

semvar rows

64

rows a set starts with before it doubles

call cache

the grammar’s

the run may override what the grammar asked for

call cache

on

no_cache turns it off, which is what tracing wants

trace

off

no trace is written unless a writer is given

The stack does not grow by default on purpose: a parser that wants an unbounded amount of variable space has nearly always run away, and saying so is worth more than allocating for it.

What a rule does when nothing says otherwise

default

| and /

| takes the longest match, / takes the first

a counter

greedy, and gives nothing back

.

skips a run of the inbetween grammar, and only where it is written

an action

becomes a node named after itself

a semvar

matches its longest member; ::first takes the earliest added

a scope

one bracket, and no pairing by position