aboutsummaryrefslogtreecommitdiff
path: root/docs/spec/grammar.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/spec/grammar.html')
-rw-r--r--docs/spec/grammar.html4
1 files changed, 2 insertions, 2 deletions
diff --git a/docs/spec/grammar.html b/docs/spec/grammar.html
index 457fd039..99058319 100644
--- a/docs/spec/grammar.html
+++ b/docs/spec/grammar.html
@@ -84,8 +84,8 @@
<span class='Function'>|</span> <span class='Value'>headW</span> <span class='Paren'>(</span> <span class='Function'>F</span> <span class='Function'>|</span> <span class='String'>&quot;𝕊&quot;</span> <span class='Paren'>)</span> <span class='String'>&quot;˜&quot;</span> <span class='String'>&quot;⁼&quot;</span> <span class='Value'>headX</span>
<span class='Function'>|</span> <span class='Paren'>(</span> <span class='Function'>F</span> <span class='Function'>|</span> <span class='String'>&quot;𝕊&quot;</span> <span class='Paren'>)</span> <span class='String'>&quot;˜&quot;</span><span class='Value'>?</span> <span class='String'>&quot;⁼&quot;</span>
</pre>
-<p>A braced block contains bodies, which are lists of statements, separated by semicolons and possibly preceded by headers, which are separated from the body with a colon. Multiple bodies allow different handling for various cases, which are pattern-matched by headers. For an immediate block there are no inputs, so there can only be one possible case and one body. Functions and modifiers allow any number of &quot;matched&quot; bodies, with headers that have arguments, followed by at most two &quot;main&quot; bodies with either no headers or headers without arguments. If there is one main body, it is ambivalent, but two main bodies refer to the monadic and dyadic cases.</p>
-<pre><span class='Function'>BODY</span> <span class='Function'>=</span> <span class='Function'>PROGRAM</span>
+<p>A braced block contains bodies, which are lists of statements, separated by semicolons and possibly preceded by headers, which are separated from the body with a colon. A non-final expression can be made into a predicate by following it with the separator-like <code><span class='Value'>?</span></code>. Multiple bodies allow different handling for various cases, which are pattern-matched by headers. For an immediate block there are no inputs, so there can only be one possible case and one body. Functions and modifiers allow any number of &quot;matched&quot; bodies, with headers that have arguments, followed by at most two &quot;main&quot; bodies with either no headers or headers without arguments. If there is one main body, it is ambivalent, but two main bodies refer to the monadic and dyadic cases.</p>
+<pre><span class='Function'>BODY</span> <span class='Function'>=</span> <span class='Separator'>⋄</span><span class='Value'>?</span> <span class='Paren'>(</span> <span class='Function'>STMT</span> <span class='Separator'>⋄</span> <span class='Function'>|</span> <span class='Function'>EXPR</span> <span class='Separator'>⋄</span><span class='Value'>?</span> <span class='String'>&quot;?&quot;</span> <span class='Separator'>⋄</span><span class='Value'>?</span> <span class='Paren'>)</span><span class='Value'>*</span> <span class='Function'>STMT</span> <span class='Separator'>⋄</span><span class='Value'>?</span>
<span class='Function'>FCase</span> <span class='Function'>=</span> <span class='Separator'>⋄</span><span class='Value'>?</span> <span class='Function'>FuncHead</span> <span class='String'>&quot;:&quot;</span> <span class='Function'>BODY</span>
<span class='Modifier'>_mCase</span> <span class='Function'>=</span> <span class='Separator'>⋄</span><span class='Value'>?</span> <span class='Modifier'>_m1Head</span> <span class='String'>&quot;:&quot;</span> <span class='Function'>BODY</span>
<span class='Modifier2'>_cCase_</span> <span class='Function'>=</span> <span class='Separator'>⋄</span><span class='Value'>?</span> <span class='Modifier2'>_m2Head_</span> <span class='String'>&quot;:&quot;</span> <span class='Function'>BODY</span>