@@ -2,7 +2,7 @@
3Coin parser engine
3Coin parser engine
5−Core containing arms that parse [`++coin`]s.
5+Core containing arms that parse `++coin`.
@@ -29,7 +29,7 @@ Examples
29Parse odor-atom pair
29Parse odor-atom pair
31Parsing rule. Parses an unsigned integer of any permitted base,
31Parsing rule. Parses an unsigned integer of any permitted base,
32−producing a [`++dime`]().
32+producing a `++dime`.
@@ -69,8 +69,8 @@ Examples
69Parse `@da`, `@dr`, `@p`, `@t`
69Parse `@da`, `@dr`, `@p`, `@t`
71Parsing rule. Parses any atom of any of the following odors after a
71Parsing rule. Parses any atom of any of the following odors after a
72−leading sig, `~` into a [`++dime`](): [`@da`](), [`@dr`](), [`@p`](),
72+leading sig, `~` into a `++dime`: `@da`, `@dr`, `@p`,
73−and [`@t`](), producing a [`++dime`]().
73+and `@t`, producing a `++dime`.
@@ -82,12 +82,13 @@ Source
87− |=(det=date `dime`[%da (year det)])
88+ |=(det/date `dime`[%da (year det)])
90− |=([a=@ b=?] [b a])
91+ |=({a/@ b/?} [b a])
91 ;~(plug dim:ag ;~(pose (cold | hep) (easy &)))
92 ;~(plug dim:ag ;~(pose (cold | hep) (easy &)))
92 ;~(pfix dot dim:ag) :: month
93 ;~(pfix dot dim:ag) :: month
93 ;~(pfix dot dim:ag) :: day
94 ;~(pfix dot dim:ag) :: day
@@ -106,16 +107,16 @@ Source
109− |= [a=(list ,[p=?(%d %h %m %s) q=@]) b=(list ,@)]
110+ |= {a/(list {p/?($d $h $m $s) q/@}) b/(list @)}
110 =+ rop=`tarp`[0 0 0 0 b]
111 =+ rop=`tarp`[0 0 0 0 b]
111 |- ^- dime
112 |- ^- dime
113 [%dr (yule rop)]
114 [%dr (yule rop)]
115− %d $(a t.a, d.rop (add q.i.a d.rop))
116+ $d $(a t.a, d.rop (add q.i.a d.rop))
116− %h $(a t.a, h.rop (add q.i.a h.rop))
117+ $h $(a t.a, h.rop (add q.i.a h.rop))
117− %m $(a t.a, m.rop (add q.i.a m.rop))
118+ $m $(a t.a, m.rop (add q.i.a m.rop))
118− %s $(a t.a, s.rop (add q.i.a s.rop))
119+ $s $(a t.a, s.rop (add q.i.a s.rop))
@@ -131,20 +132,122 @@ Source
132 (stag %p fed:ag)
133 (stag %p fed:ag)
133 ;~(pfix dot (stag %ta urs:ab))
134 ;~(pfix dot (stag %ta urs:ab))
134− ;~(pfix sig (stag %t (cook woad urs:ab)))
135+ ;~(pfix sig (stag %t urx:ab))
135− ;~(pfix hep (stag %c (cook turf (cook woad urs:ab))))
136+ ;~(pfix hep (stag %c (cook turf urx:ab)))
139+ ~/ %nuck |= a/nail %. a
143+ :~ :- ['a' 'z'] (cook |=(a/@ta [%$ %tas a]) sym)
144+ :- ['0' '9'] (stag %$ bisk)
145+ :- '-' (stag %$ tash)
146+ :- '.' ;~(pfix dot perd)
147+ :- '~' ;~(pfix sig ;~(pose twid (easy [%$ %n 0])))
151+ :(sear |=(a/@ta (rush a nuck)) wick urt:ab)
156+ (stag %many (ifix [cab ;~(plug cab cab)] (more cab nusk)))
163+ (scan a (bass 10 (plus sid:ab)))
169+ ;~ pose (cold | hep) (easy &) ==
172+ ;~(pfix dot (cook moo (plus (shim '0' '9'))))
178+ ;~(plug ;~(pose (cold | hep) (easy &)) dim:ag)
187+ ;~ pose (cold | hep) (easy &) ==
193+ (cold ~ (jest 'nan'))
197+ (stag %rh (cook rylh ;~(pfix ;~(plug sig sig) voy)))
198+ (stag %rq (cook rylq ;~(pfix ;~(plug sig sig sig) voy)))
199+ (stag %rd (cook ryld ;~(pfix sig voy)))
200+ (stag %rs (cook ryls voy))
208+ (dif:si (new:si f.b i.b) (sun:si d.b))
209+ [%d a h (add (mul c.b (pow 10 d.b)) e.b)]
214+ |= {syn/? mol/dime} ^- dime
215+ ?> =('u' (end 3 1 p.mol))
216+ [(cat 3 's' (rsh 3 1 p.mol)) (new:si syn q.mol)]
219+ (cook |=(a/dime (neg | a)) bisk)
220+ ;~(pfix hep (cook |=(a/dime (neg & a)) bisk))
227+ (cook |=(a/@ [%blob (cue a)]) ;~(pfix (just '0') vum:ag))
236+ (stag %f ;~(pose (cold & (just 'y')) (cold | (just 'n'))))
141 ~zod/try=> (scan "1926.5.12" crub:so)
244 ~zod/try=> (scan "1926.5.12" crub:so)
142 [p=~.da q=170.141.184.449.747.016.871.285.095.307.149.312.000]
245 [p=~.da q=170.141.184.449.747.016.871.285.095.307.149.312.000]
143− ~zod/try=> (,[%da @da] (scan "1926.5.12" crub:so))
246+ ~zod/try=> ([%da @da] (scan "1926.5.12" crub:so))
144 [%da ~1926.5.12]
247 [%da ~1926.5.12]
145 ~zod/try=> (scan "s10" crub:so)
248 ~zod/try=> (scan "s10" crub:so)
146 [p=~.dr q=184.467.440.737.095.516.160]
249 [p=~.dr q=184.467.440.737.095.516.160]
147− ~zod/try=> (,[%dr @dr] (scan "s10" crub:so))
250+ ~zod/try=> ([%dr @dr] (scan "s10" crub:so))
148 [%dr ~s10]
251 [%dr ~s10]
149 ~zod/try=> (scan "doznec" crub:so)
252 ~zod/try=> (scan "doznec" crub:so)
@@ -158,7 +261,7 @@ Examples
158Top-level coin parser
261Top-level coin parser
160Parsing rule. Switches on the first character and applies the
263Parsing rule. Switches on the first character and applies the
161−corresponding [`++coin`]() parser.
264+corresponding `++coin` parser.
@@ -169,16 +272,19 @@ Produces
276+ ~/ %nuck |= a/nail %. a
173− %+ knee *coin |. ~+
277+ %+ knee *coin |. ~+
175− ^. stet ^. limo
279+ ^. stet ^. limo
176− :~ :- ['a' 'z'] (cook |=(a=@ta [~ %tas a]) sym)
280+ :~ :- ['a' 'z'] (cook |=(a/@ta [%$ %tas a]) sym)
177− :- ['0' '9'] (stag ~ bisk)
281+ :- ['0' '9'] (stag %$ bisk)
178− :- '-' (stag ~ tash)
282+ :- '-' (stag %$ tash)
179− :- '.' ;~(pfix dot perd)
283+ :- '.' ;~(pfix dot perd)
180− :- '~' ;~(pfix sig ;~(pose twid (easy [~ %n 0])))
284+ :- '~' ;~(pfix sig ;~(pose twid (easy [%$ %n 0])))
@@ -224,7 +330,7 @@ Source
227− (sear |=(a=@ta (rush (wick a) nuck)) urt:ab)
333+ (sear |=(a/@ta (rush (wick a) nuck)) urt:ab)
@@ -235,7 +341,7 @@ Examples
235 [1 ~.asd_a]
341 [1 ~.asd_a]
236 ~zod/try=> (scan "~~.asd~-a" nusk:so)
342 ~zod/try=> (scan "~~.asd~-a" nusk:so)
237 [% p=[p=~.ta q=418.212.246.369]]
343 [% p=[p=~.ta q=418.212.246.369]]
238− ~zod/try=> (,[~ %ta @ta] (scan "~~.asd~-a" nusk:so))
344+ ~zod/try=> ([~ %ta @ta] (scan "~~.asd~-a" nusk:so))
239 [~ %ta ~.asd_a]
345 [~ %ta ~.asd_a]
241------------------------------------------------------------------------
347------------------------------------------------------------------------
@@ -280,7 +386,7 @@ Examples
281Parse dime float
387Parse dime float
283−Parsing rule. Parses a number into a [`++dime`]() float.
389+Parsing rule. Parses a number into a `++dime` float.
@@ -291,28 +397,51 @@ Produces
296− (cook lent (star (just '0')))
402+ =+ ^= moo
405+ (scan a (bass 10 (plus sid:ab)))
297− =+ ^= voy
406+ =+ ^= voy
298− %+ cook royl-cell
407+ %+ cook royl-cell
300− ;~(pose (cold | hep) (easy &))
411+ ;~ pose (cold | hep) (easy &) ==
301− ;~(plug dim:ag ;~(pose ;~(pfix dot ;~(plug zer dim:ag)) (easy [0 0])))
412+ ;~ plug dim:ag
414+ ;~(pfix dot (cook moo (plus (shim '0' '9'))))
302− ;~ pose
417+ ;~ pose
303− ;~ pfix
418+ ;~ pfix
304− (just 'e')
419+ (just 'e')
305− (cook some ;~(plug ;~(pose (cold | hep) (easy &)) dim:ag))
420+ ;~(plug ;~(pose (cold | hep) (easy &)) dim:ag)
310− ;~ pose
429+ ;~ pose (cold | hep) (easy &) ==
311− (stag %rh (cook rylh ;~(pfix ;~(plug sig sig) voy)))
430+ (jest 'inf')
312− (stag %rq (cook rylq ;~(pfix ;~(plug sig sig sig) voy)))
431+ ==
313− (stag %rd (cook ryld ;~(pfix sig voy)))
432+ ==
314− (stag %rs (cook ryls voy)
433+ ;~ plug
435+ (cold ~ (jest 'nan'))
439+ (stag %rh (cook rylh ;~(pfix ;~(plug sig sig) voy)))
440+ (stag %rq (cook rylq ;~(pfix ;~(plug sig sig sig) voy)))
441+ (stag %rd (cook ryld ;~(pfix sig voy)))
442+ (stag %rs (cook ryls voy))
@@ -330,6 +459,15 @@ XX still not fully functional
331Intermediate parsed float convereter
460Intermediate parsed float convereter
467+ (dif:si (new:si f.b i.b) (sun:si d.b))
468+ [%d a h (add (mul c.b (pow 10 d.b)) e.b)]
333------------------------------------------------------------------------
471------------------------------------------------------------------------
335### `++tash`
473### `++tash`
@@ -339,46 +477,27 @@ Parse signed dime
351−Parsing rule. Parses a signed number into a [`++dime`]().
483+Parsing rule. Parses a signed number into a `++dime`.
357− |= [a=? b=[c=@ d=@ e=@] f=(unit ,[h=? i=@])]
358− ^- [? @ @ @ (unit ,@s)]
362− [a c.b d.b e.b [~ (mul i.u.f 2)]]
363− [a c.b d.b e.b [~ (dec (mul i.u.f 2))]]
372 =+ ^= neg
490 =+ ^= neg
373− |= [syn=? mol=dime] ^- dime
491+ |= {syn/? mol/dime} ^- dime
374 ?> =('u' (end 3 1 p.mol))
492 ?> =('u' (end 3 1 p.mol))
375 [(cat 3 's' (rsh 3 1 p.mol)) (new:si syn q.mol)]
493 [(cat 3 's' (rsh 3 1 p.mol)) (new:si syn q.mol)]
376 ;~ pfix hep
494 ;~ pfix hep
378− (cook |=(a=dime (neg | a)) bisk)
496+ (cook |=(a/dime (neg | a)) bisk)
379− ;~(pfix hep (cook |=(a=dime (neg & a)) bisk))
497+ ;~(pfix hep (cook |=(a/dime (neg & a)) bisk))
@@ -411,7 +530,7 @@ Source
414− (cook |=(a=@ [%blob (cue a)]) ;~(pfix (just '0') vum:ag))
533+ (cook |=(a/@ [%blob (cue a)]) ;~(pfix (just '0') vum:ag))
415 (stag ~ crub)
534 (stag ~ crub)
@@ -436,8 +555,8 @@ Examples
437Parse prefixed dimes from `@if`, `@f`, `@rd`
556Parse prefixed dimes from `@if`, `@f`, `@rd`
439−Parsing rule. Parses an atom of either [`@if`]() (IP address), [`@f`]()
558+Parsing rule. Parses an atom of either `@if` (IP address), `@f`
440−(loobean), or [`rf`]()(floating point) into a [`++dime`]().
559+(loobean), or `rf`(floating point) into a `++dime`.