@@ -16,8 +16,7 @@
16 %blok (print-blok +.ast)
16 %blok (print-blok +.ast)
19− %+ knee *ast
19+ %^ tnee %apex ast
21 %+ ifix [ws ws]
20 %+ ifix [ws ws]
23 (cook |=(=blok [%blok blok]) parse-blok)
22 (cook |=(=blok [%blok blok]) parse-blok)
@@ -36,8 +35,7 @@
38++ parse-atomic-expr
37++ parse-atomic-expr
39− %+ knee *expr
38+ %^ tnee %parse-atomic-expr expr
42 (cold [%nil ~] (jest 'nil'))
40 (cold [%nil ~] (jest 'nil'))
@@ -56,14 +54,12 @@
57 |=(=table [%table table])
55 |=(=table [%table table])
58 parse-table
56 parse-table
61 |=(=string [%string string])
58 |=(=string [%string string])
62 parse-string
59 parse-string
64++ parse-expr-list
61++ parse-expr-list
65− %+ knee *(interlist binop expr)
62+ %^ tnee %parse-expr-list (interlist binop expr)
67 %+ parse-interlist (ifix [ws ws] parse-binop) parse-atomic-expr
63 %+ parse-interlist (ifix [ws ws] parse-binop) parse-atomic-expr
68:: TODO: This is mock and should take operator priority into account.
64:: TODO: This is mock and should take operator priority into account.
@@ -75,9 +71,7 @@
75 %double [%binop val.l sep.l (process-expr-list tail.l)]
71 %double [%binop val.l sep.l (process-expr-list tail.l)]
77++ parse-expr
73++ parse-expr
78− ~& "parse-exp"
74+ %^ tnee %parse-expr expr
81 %+ cook process-expr-list parse-expr-list
75 %+ cook process-expr-list parse-expr-list
82++ parse-parened-expr
76++ parse-parened-expr
@@ -116,8 +110,7 @@
118++ parse-string
112++ parse-string
119− %+ knee *string
113+ %^ tnee %parse-string string
123 ++ parse-string
116 ++ parse-string
@@ -148,8 +141,7 @@
150++ parse-table
143++ parse-table
151− %+ knee *table
144+ %^ tnee %parse-table table
154 |=([* =table *] table)
146 |=([* =table *] table)
155 ;~ (glue ws)
147 ;~ (glue ws)
@@ -166,8 +158,7 @@
166 %- commaed
158 %- commaed
167 %+ turn field-list print-field
159 %+ turn field-list print-field
168++ parse-field-list
160++ parse-field-list
169− %+ knee *field-list
161+ %^ tnee %parse-field-list field-list
173 ++ field-sep
164 ++ field-sep
@@ -207,6 +198,7 @@
207++ parse-field
198++ parse-field
208 %+ knee *field
199 %+ knee *field
201+ %^ tnee %parse-field field
212 |=([* key=expr * * val=expr] [%keyed key val])
204 |=([* key=expr * * val=expr] [%keyed key val])
@@ -282,8 +274,7 @@
282 %concat ".."
274 %concat ".."
284++ parse-binop
276++ parse-binop
285− %+ knee *binop
277+ %^ tnee %parse-binop binop
288 (cold %add (jest '+'))
279 (cold %add (jest '+'))
289 (cold %sub (jest '-'))
280 (cold %sub (jest '-'))
@@ -315,8 +306,7 @@
315 [%float @rd]
306 [%float @rd]
317++ parse-numeral
308++ parse-numeral
318− %+ knee *numeral
309+ %^ tnee %parse-numeral numeral
322 |= x=@rd [%float x]
312 |= x=@rd [%float x]
@@ -352,9 +342,7 @@
352 %- commaed
342 %- commaed
353 %+ turn exprlist print-expr
343 %+ turn exprlist print-expr
354++ parse-exprlist
344++ parse-exprlist
355− ~& "parse-exprlist"
345+ %^ tnee %parse-exprlist exprlist
358 %+ most (ifix [ws ws] com) parse-expr
346 %+ most (ifix [ws ws] com) parse-expr
@@ -386,8 +374,7 @@
388++ parse-var
376++ parse-var
389− %+ knee *var
377+ %^ tnee %parse-var var
393 ++ parse-access
380 ++ parse-access
@@ -430,8 +417,7 @@
430 %- commaed
417 %- commaed
431 %+ turn varlist print-var
418 %+ turn varlist print-var
432++ parse-varlist
419++ parse-varlist
433− %+ knee *varlist
420+ %^ tnee %parse-varlist varlist
435 %+ most (ifix [ws ws] com) parse-var
421 %+ most (ifix [ws ws] com) parse-var
436:: Prefix Expr
422:: Prefix Expr
@@ -442,18 +428,14 @@
442 [%var var]
428 [%var var]
444++ parse-simple-prefix-expr
430++ parse-simple-prefix-expr
445− ~& "parse-simple-prefix-expr"
431+ %^ tnee %parse-simple-prefix-expr $%([%expr expr] [%var var])
446− %+ knee *$%([%expr expr] [%var var])
449 parse-parened-expr
433 parse-parened-expr
451 %+ cook |=([=var] [%var var]) parse-var
435 %+ cook |=([=var] [%var var]) parse-var
453++ parse-prefix-expr
437++ parse-prefix-expr
454− ~& "parse-prefix-expr"
438+ %^ tnee %parse-prefix-expr prefix-expr
455− %+ knee *prefix-expr
457 ;< prefix=$%([%expr expr] [%var var]) bind parse-simple-prefix-expr
439 ;< prefix=$%([%expr expr] [%var var]) bind parse-simple-prefix-expr
459 %+ cook |=(=functioncall [%call functioncall])
441 %+ cook |=(=functioncall [%call functioncall])
@@ -492,6 +474,7 @@
492++ parse-stat
474++ parse-stat
493 %+ knee *stat
475 %+ knee *stat
477+ %^ tnee %parse-stat stat
496 (cold [%empty ~] (just ';'))
479 (cold [%empty ~] (just ';'))
@@ -629,6 +612,7 @@
629++ parse-if
612++ parse-if
630 %+ knee *if
613 %+ knee *if
615+ %^ tnee %parse-if if
633 |= [* cond=expr * body=blok elsa=(list [cond=expr body=blok]) else=(unit blok) *]
617 |= [* cond=expr * body=blok elsa=(list [cond=expr body=blok]) else=(unit blok) *]
634 [cond body elsa else]
618 [cond body elsa else]
@@ -684,16 +668,17 @@
686++ parse-functioncall
670++ parse-functioncall
687− %+ knee *functioncall
671+ %^ tnee %parse-functioncall functioncall
689 ;< prefix=prefix-expr bind parse-prefix-expr
672 ;< prefix=prefix-expr bind parse-prefix-expr
690− ~& > prefix
673+ ;~ pose
691− (parse-functioncall-args prefix)
674+ (parse-functioncall-args prefix)
676+ ?: ?=(%call -.prefix) (easy +.prefix) fail
692++ parse-functioncall-args
678++ parse-functioncall-args
693− ~& "parse-functioncall-args"
694 |= =prefix-expr
679 |= =prefix-expr
695− %+ knee *functioncall
680+ ~& prefix-expr
696− |.
681+ %^ tnee %parse-functioncall-args functioncall
@@ -724,9 +709,7 @@
726++ parse-args
711++ parse-args
727− ~& "parse-args"
712+ %^ tnee %parse-args args
732 |= [* =exprlist *] exprlist
715 |= [* =exprlist *] exprlist
@@ -758,8 +741,7 @@
760++ parse-label
743++ parse-label
761− %+ knee *label
744+ %^ tnee %parse-label label
764 |= [* =label *] label
746 |= [* =label *] label
765 ;~ (glue ws)
747 ;~ (glue ws)
@@ -780,10 +762,9 @@
780 ?~ ret.blok ~
762 ?~ ret.blok ~
781 ~[(print-ret u.ret.blok)]
763 ~[(print-ret u.ret.blok)]
782++ parse-blok
764++ parse-blok
783− %+ knee *blok
765+ %^ tnee %parse-blok blok
786− (most wss parse-stat)
767+ (most ws parse-stat)
@@ -803,8 +784,7 @@
803 (print-exprlist ret)
784 (print-exprlist ret)
805++ parse-ret
786++ parse-ret
806− %+ knee *ret
787+ %^ tnee %parse-ret ret
809 |= [[* =exprlist] *] exprlist
789 |= [[* =exprlist] *] exprlist
@@ -822,16 +802,15 @@
823 %+ join "," l
803 %+ join "," l
824++ parse-name
804++ parse-name
825− %+ knee *name
805+ :: %^ tnee %parse-name name
829 ++ name-char ;~(pose name-fst-char dit:ab)
809 ++ name-char ;~(pose name-fst-char dit:ab)
830 ++ name-fst-char ;~(pose alf:ab (just '_'))
810 ++ name-fst-char ;~(pose alf:ab (just '_'))
833− |= =tape (crip tape)
812+ %+ cook |= =tape (crip tape)
834− ;~(plug name-fst-char (star name-char))
813+ ;~(less keyword ;~(plug name-fst-char (star name-char)))
836 |=(s=@s `tape`[?:((syn:si s) %$ '-') (slag 2 (scow %ui (abs:si s)))])
815 |=(s=@s `tape`[?:((syn:si s) %$ '-') (slag 2 (scow %ui (abs:si s)))])
@@ -855,8 +834,7 @@
855 %+ cold ~
834 %+ cold ~
856 %- plus w
835 %- plus w
857++ parse-float
836++ parse-float
858− %+ knee *@rd
837+ %^ tnee %parse-float @rd
860 %+ cook ryld
838 %+ cook ryld
861 %+ cook royl-cell:so
839 %+ cook royl-cell:so
@@ -888,8 +866,7 @@
890++ parse-hex-float
868++ parse-hex-float
891− %+ knee *@rd
869+ %^ tnee %parse-hex-float @rd
895 |= [* * int=tape frac=(unit tape) exp=(unit [exp-sign=? exp=@])]
872 |= [* * int=tape frac=(unit tape) exp=(unit [exp-sign=? exp=@])]
@@ -925,9 +902,8 @@
927 ++ hex-digit
904 ++ hex-digit
928− %+ knee *char
905+ %^ tnee %hex-digit char
931 (shim '0' '9')
907 (shim '0' '9')
932 (shim 'a' 'f')
908 (shim 'a' 'f')
933 (shim 'A' 'F')
909 (shim 'A' 'F')
@@ -939,4 +915,41 @@
939 %- r-co:co
915 %- r-co:co
945+ |* [=term gar=mold sef=rule]
949+ =/ foo ?: trace ~&([term q.tub] ~) ~