@@ -0,0 +1,1365 @@
1+### `++ab`
2+
3+Primitive parser engine
4+
5+A core containing numeric parser primitives.
6+
7+Source
8+------
9+
10+ ++ ab
11+ |%
12+
13+Examples
14+--------
15+
16+ ~zod/try=> ab
17+ <36.ecc 414.gly 100.xkc 1.ypj %164>
18+
19+------------------------------------------------------------------------
20+
21+### `++bix`
22+
23+Parse hex pair
24+
25+Parsing [`++rule`](). Parses a pair of base-16 digits. Used in escapes.
26+
27+Accepts
28+-------
29+
30+XX
31+
32+Produces
33+--------
34+
35+A an atom. XX
36+
37+Source
38+------
39+
40+ ++ bix (bass 16 (stun [2 2] six))
41+
42+Examples
43+--------
44+
45+ ~zod/try=> (scan "07" bix:ab)
46+ q=7
47+ ~zod/try=> (scan "51" bix:ab)
48+ q=81
49+ ~zod/try=> (scan "a3" bix:ab)
50+ q=163
51+
52+------------------------------------------------------------------------
53+
54+### `++hif`
55+
56+Parse phonetic pair
57+
58+Parsing [`++rule`](). Parses an atom of [odor]() [`@pE`](), a phrase of two bytes
59+encoded phonetically.
60+
61+Accepts
62+-------
63+
64+XX
65+
66+Produces
67+--------
68+
69+An atom.
70+
71+Source
72+------
73+
74+ ++ hif (boss 256 ;~(plug tip tiq (easy ~)))
75+
76+Examples
77+--------
78+
79+ ~zod/try=> (scan "doznec" hif:ab)
80+ q=256
81+ ~zod/try=> (scan "pittyp" hif:ab)
82+ q=48.626
83+
84+------------------------------------------------------------------------
85+
86+### `++huf`
87+
88+Parse two phonetic pairs
89+
90+Parsing [`++rule`](). Parses and unscrambles an atom of odor [@pF](), a phrase
91+of two two-byte pairs that are encoded (and scrambled) phonetically.
92+
93+Accepts
94+-------
95+
96+XX
97+
98+Produces
99+--------
100+
101+An atom. XX
102+
103+Source
104+------
105+
106+ ++ huf %+ cook
107+ |=([a=@ b=@] (wred:un ~(zug mu ~(zag mu [a b]))))
108+ ;~(plug hif ;~(pfix hep hif))
109+
110+Examples
111+--------
112+
113+ ~zod/try=> (scan "pittyp-pittyp" huf:ab)
114+ 328.203.557
115+ ~zod/try=> (scan "tasfyn-partyv" huf:ab)
116+ 65.792
117+ ~zod/try=> `@ux`(scan "tasfyn-partyv" huf:ab)
118+ 0x1.0100
119+
120+------------------------------------------------------------------------
121+
122+### `++hyf`
123+
124+Parse 8 phonetic bytes
125+
126+Parsing [`++rule`](). Parses an atom of odor [@pG](), a phrase of eight of
127+phonetic bytes.
128+
129+Accepts
130+-------
131+
132+An atom of odor [`@pG`]()
133+
134+Produces
135+--------
136+
137+An atom. XX
138+
139+Source
140+------
141+
142+ ++ hyf (bass 0x1.0000.0000 ;~(plug huf ;~(pfix hep huf) (easy ~)))
143+
144+Examples
145+--------
146+
147+ ~zod/try=> (scan "sondel-forsut-tillyn-nillyt" hyf:ab)
148+ q=365.637.097.828.335.095
149+ ~zod/try=> `@u`~sondel-forsut-tillyn-nillyt
150+ 365.637.097.828.335.095
151+
152+------------------------------------------------------------------------
153+
154+### `++pev`
155+
156+Parse \<= 5 base-32
157+
158+Parsing [`++rule`](). Parses up to five base-32 digits without a leading zero.
159+
160+Accepts
161+-------
162+
163+Up to five [@uv]() (base 64) digits.
164+
165+Produces
166+--------
167+
168+An atom.
169+
170+Source
171+------
172+
173+ ++ pev (bass 32 ;~(plug sev (stun [0 4] siv)))
174+
175+Examples
176+--------
177+
178+ ~zod/try=> (scan "a" pev:ab)
179+ q=10
180+ ~zod/try=> (scan "290j" pev:ab)
181+ q=74.771
182+ ~zod/try=> (scan "123456" pev:ab)
183+ ! {1 6}
184+ ! exit
185+ ~zod/try=> (scan "090j" pev:ab)
186+ ~ <syntax error at [1 11]>
187+
188+------------------------------------------------------------------------
189+
190+### `++pew`
191+
192+Parse \<= 5 base-64
193+
194+Parsing [`++rule`](). Parses up to five base-64 digits without a leading zero.
195+
196+Accepts
197+-------
198+
199+Up to five [@uw]() (base 64) digits.
200+
201+Produces
202+--------
203+
204+
205+
206+Source
207+------
208+
209+ ++ pew (bass 64 ;~(plug sew (stun [0 4] siw)))
210+
211+Examples
212+--------
213+
214+ ~zod/try=> (scan "Q" pew:ab)
215+ q=52
216+ ~zod/try=> (scan "aQ~9" pew:ab)
217+ q=2.838.473
218+ ~zod/try=> `@`0waQ~9
219+ 2.838.473
220+ ~zod/try=> (scan "123456" pew:ab)
221+ ! {1 6}
222+ ! exit
223+ ~zod/try=> (scan "012345" pew:ab)
224+ ! {1 1}
225+ ! exit
226+
227+------------------------------------------------------------------------
228+
229+### `++piv`
230+
231+Parse 5 base-32
232+
233+Parsing [`++rule`](). Parses exactly five base-32 digits.
234+
235+Accepts
236+-------
237+
238+Produces
239+--------
240+
241+Source
242+------
243+
244+ ++ piv (bass 32 (stun [5 5] siv))
245+
246+Examples
247+--------
248+
249+ ~zod/try=> (scan "10b3l" piv:ab)
250+ q=1.059.957
251+ ~zod/try=> (scan "1" piv:ab)
252+ ! {1 2}
253+ ! exit
254+
255+------------------------------------------------------------------------
256+
257+### `++piw`
258+
259+Parse 5 base-64
260+
261+Parsing [`++rule`](). Parses exactly five base-64 digits.
262+
263+Accepts
264+-------
265+
266+Produces
267+--------
268+
269+My name henry let's see how fast I can type.
270+
271+Source
272+------
273+
274+ ++ piw (bass 64 (stun [5 5] siw))
275+
276+Examples
277+--------
278+
279+ ~zod/try=> (scan "2C-pZ" piw:ab)
280+ q=43.771.517
281+ ~zod/try=> (scan "2" piv:ab)
282+ ! {1 2}
283+ ! exit
284+
285+------------------------------------------------------------------------
286+
287+### `++qeb`
288+
289+Parse \<= 4 binary
290+
291+Parsing [`++rule`](). Parses a binary number of up to 4 digits in length without
292+a leading zero.
293+
294+Accepts
295+-------
296+
297+Produces
298+--------
299+
300+Source
301+------
302+
303+ ++ qeb (bass 2 ;~(plug seb (stun [0 3] sib)))
304+
305+Examples
306+--------
307+
308+ ~zod/try=> (scan "1" qeb:ab)
309+ q=1
310+ ~zod/try=> (scan "101" qeb:ab)
311+ q=5
312+ ~zod/try=> (scan "1111" qeb:ab)
313+ q=15
314+ ~zod/try=> (scan "11111" qeb:ab)
315+ ! {1 5}
316+ ! exit
317+ ~zod/try=> (scan "01" qeb:ab)
318+ ! {1 1}
319+ ! exit
320+
321+------------------------------------------------------------------------
322+
323+### `++qex`
324+
325+Parse \<= 4 hex
326+
327+Parsing [`++rule`](). Parses a hexadecimal number of up to 4 digits in length
328+without a leading zero.
329+
330+Accepts
331+-------
332+
333+Produces
334+--------
335+
336+Source
337+------
338+
339+ ++ qex (bass 16 ;~(plug sex (stun [0 3] hit)))
340+
341+Examples
342+--------
343+
344+ ~zod/try=> (scan "ca" qex:ab)
345+ q=202
346+ ~zod/try=> (scan "18ac" qex:ab)
347+ q=6.316
348+ ~zod/try=> (scan "18acc" qex:ab)
349+ ! {1 5}
350+ ! exit
351+ ~zod/try=> (scan "08ac" qex:ab)
352+ ! {1 1}
353+ ! exit
354+
355+------------------------------------------------------------------------
356+
357+### `++qib`
358+
359+Parse 4 binary
360+
361+Parsing [`++rule`](). Parses exactly four binary digits.
362+
363+Accepts
364+-------
365+
366+Produces
367+--------
368+
369+Source
370+------
371+
372+ ++ qib (bass 2 (stun [4 4] sib))
373+
374+Examples
375+--------
376+
377+ ~zod/try=> (scan "0001" qib:ab)
378+ q=1
379+ ~zod/try=> (scan "0100" qib:ab)
380+ q=4
381+ ~zod/try=> (scan "110" qib:ab)
382+ ! {1 4}
383+ ! exit
384+
385+------------------------------------------------------------------------
386+
387+### `++qix`
388+
389+Parse 4 hex
390+
391+Parsing [`++rule`](). Parses exactly four hexadecimal digits.
392+
393+Accepts
394+-------
395+
396+Produces
397+--------
398+
399+Source
400+------
401+
402+ ++ qix (bass 16 (stun [4 4] six))
403+
404+Examples
405+--------
406+
407+ ~zod/try=> (scan "0100" qix:ab)
408+ q=256
409+ ~zod/try=> (scan "10ff" qix:ab)
410+ q=4.351
411+ ~zod/try=> (scan "0" qix:ab)
412+ ! {1 2}
413+ ! exit
414+
415+------------------------------------------------------------------------
416+
417+### `++seb`
418+
419+Parse 1
420+
421+Parsing [`++rule`](). Parses the number 1.
422+
423+Accepts
424+-------
425+
426+Produces
427+--------
428+
429+Source
430+------
431+
432+ ++ seb (cold 1 (just '1'))
433+
434+Examples
435+--------
436+
437+ ~zod/try=> (scan "1" seb:ab)
438+ 1
439+ ~zod/try=> (scan "0" seb:ab)
440+ ! ~zod/try/~2014.10.23..22.34.21..bfdd/:<[1 1].[1 18]>
441+ ! {1 1}
442+ ~zod/try=> (scan "2" seb:ab)
443+ ! ~zod/try/~2014.10.23..22.34.29..d399/:<[1 1].[1 18]>
444+ ! {1 1}
445+
446+------------------------------------------------------------------------
447+
448+### `++sed`
449+
450+Parse decimal
451+
452+Parsing [`++rule`](). Parses a nonzero decimal digit.
453+
454+Accepts
455+-------
456+
457+Produces
458+--------
459+
460+Source
461+------
462+
463+ ++ sed (cook |=(a=@ (sub a '0')) (shim '1' '9'))
464+
465+Examples
466+--------
467+
468+ ~zod/try=> (scan "5" sed:ab)
469+ 5
470+ ~zod/try=> (scan "0" sed:ab)
471+ ! {1 1}
472+ ! exit
473+
474+------------------------------------------------------------------------
475+
476+### `++sev`
477+
478+Parse base-32
479+
480+Parsing [`++rule`](). Parses a nonzero base-32 digit
481+
482+Accepts
483+-------
484+
485+Produces
486+--------
487+
488+Source
489+------
490+
491+ ++ sev ;~(pose sed sov)
492+
493+Examples
494+--------
495+
496+ ~zod/try=> (scan "c" sev:ab)
497+ 12
498+ ~zod/socialnet=> (scan "0" sev:ab)
499+ ! {1 1}
500+ ! exit
501+
502+------------------------------------------------------------------------
503+
504+### `++sew`
505+
506+Parse base-64
507+
508+Parsing [`++rule`](). Parses a nonzero base-64 digit
509+
510+Accepts
511+-------
512+
513+Produces
514+--------
515+
516+Source
517+------
518+
519+ ++ sew ;~(pose sed sow)
520+
521+Examples
522+--------
523+
524+ ~zod/try=> (scan "M" sew:ab)
525+ 48
526+ ~zod/try=> (scan "0" sew:ab)
527+ ! {1 1}
528+ ! exit
529+
530+------------------------------------------------------------------------
531+
532+### `++sex`
533+
534+Parse hex
535+
536+Parsing [`++rule`](). Parses a nonzero hexadecimal digit.
537+
538+Accepts
539+-------
540+
541+Produces
542+--------
543+
544+Source
545+------
546+
547+ ++ sex ;~(pose sed sox)
548+
549+Examples
550+--------
551+
552+ ~zod/try=> (scan "e" sex:ab)
553+ 14
554+ ~zod/try=> (scan "0" sex:ab)
555+ ! {1 1}
556+ ! exit
557+
558+------------------------------------------------------------------------
559+
560+### `++sib`
561+
562+Parse binary
563+
564+Parsing [`++rule`](). Parses a binary digit.
565+
566+Accepts
567+-------
568+
569+Produces
570+--------
571+
572+Source
573+------
574+
575+ ++ sib (cook |=(a=@ (sub a '0')) (shim '0' '1'))
576+
577+Examples
578+--------
579+
580+ ~zod/try=> (scan "1" sib:ab)
581+ 1
582+ ~zod/socialnet=> (scan "0" sib:ab)
583+ 0
584+
585+------------------------------------------------------------------------
586+
587+### `++sid`
588+
589+Parse decimal
590+
591+Parsing [`++rule`](). Parses a decimal digit.
592+
593+Accepts
594+-------
595+
596+Produces
597+--------
598+
599+Source
600+------
601+
602+ ++ sid (cook |=(a=@ (sub a '0')) (shim '0' '9'))
603+
604+Examples
605+--------
606+
607+ ~zod/try=> (scan "5" sid:ab)
608+ 5
609+
610+------------------------------------------------------------------------
611+
612+### `++siv`
613+
614+Parse base-32
615+
616+Parsing [`++rule`](). Parses a base-32 digit.
617+
618+Accepts
619+-------
620+
621+Produces
622+--------
623+
624+Source
625+------
626+
627+ ++ siv ;~(pose sid sov)
628+
629+Examples
630+--------
631+
632+ ~zod/try=> (scan "c" siv:ab)
633+ 12
634+
635+------------------------------------------------------------------------
636+
637+### `++siw`
638+
639+Parse base-64
640+
641+Parsing [`++rule`](). Parses a base-64 digit.
642+
643+Accepts
644+-------
645+
646+Produces
647+--------
648+
649+Source
650+------
651+
652+ ++ siw ;~(pose sid sow)
653+
654+Examples
655+--------
656+
657+ ~zod/try=> (scan "M" siw:ab)
658+ 48
659+
660+------------------------------------------------------------------------
661+
662+### `++six`
663+
664+Parse hex
665+
666+Parsing [`++rule`](). Parses a hexadecimal digit.
667+
668+Accepts
669+-------
670+
671+Produces
672+--------
673+
674+Source
675+------
676+
677+ ++ six ;~(pose sid sox)
678+
679+Examples
680+--------
681+
682+ ~zod/try=> (scan "e" six:ab)
683+ 14
684+
685+------------------------------------------------------------------------
686+
687+### `++sov`
688+
689+Parse base-32
690+
691+Parsing [`++rule`](). Parses a base-32 letter.
692+
693+Accepts
694+-------
695+
696+Produces
697+--------
698+
699+Source
700+------
701+
702+ ++ sov (cook |=(a=@ (sub a 87)) (shim 'a' 'v'))
703+
704+Examples
705+--------
706+
707+ ~zod/try=> (scan "c" sov:ab)
708+ 12
709+
710+------------------------------------------------------------------------
711+
712+### `++sow`
713+
714+Parse base-64
715+
716+Parsing [`++rule`](). Parses a base-64 letter/symbol.
717+
718+Accepts
719+-------
720+
721+Produces
722+--------
723+
724+Source
725+------
726+
727+ ++ sow ;~ pose
728+ (cook |=(a=@ (sub a 87)) (shim 'a' 'z'))
729+ (cook |=(a=@ (sub a 29)) (shim 'A' 'Z'))
730+ (cold 62 (just '-'))
731+ (cold 63 (just '~'))
732+ ==
733+
734+Examples
735+--------
736+
737+ ~zod/try=> (scan "M" sow:ab)
738+ 48
739+
740+------------------------------------------------------------------------
741+
742+### `++sox`
743+
744+Parse hex letter
745+
746+Parsing [`++rule`](). Parses a hexadecimal letter.
747+
748+Accepts
749+-------
750+
751+Produces
752+--------
753+
754+Source
755+------
756+
757+ ++ sox (cook |=(a=@ (sub a 87)) (shim 'a' 'f'))
758+
759+Examples
760+--------
761+
762+ ~zod/try=> (scan "e" sox:ab)
763+ 14
764+
765+------------------------------------------------------------------------
766+
767+### `++ted`
768+
769+Parse \<= 3 decimal
770+
771+Parsing [`++rule`](). Parses a decimal number of up to 3 digits without a
772+leading zero.
773+
774+Accepts
775+-------
776+
777+Produces
778+--------
779+
780+Source
781+------
782+
783+ ++ ted (bass 10 ;~(plug sed (stun [0 2] sid)))
784+
785+Examples
786+--------
787+
788+ ~zod/try=> (scan "21" ted:ab)
789+ q=21
790+ ~zod/try=> (scan "214" ted:ab)
791+ q=214
792+ ~zod/try=> (scan "2140" ted:ab)
793+ {1 4}
794+ ~zod/try=> (scan "0" ted:ab)
795+ ! {1 1}
796+ ! exit
797+
798+------------------------------------------------------------------------
799+
800+### `++tip`
801+
802+Leading phonetic byte
803+
804+Parsing [`++rule`](). Parses the leading phonetic byte, which represents a
805+syllable.
806+
807+Accepts
808+-------
809+
810+Produces
811+--------
812+
813+Source
814+------
815+
816+ ++ tip (sear |=(a=@ (ins:po a)) til)
817+
818+Examples
819+--------
820+
821+ ~zod/try=> (scan "doz" tip:ab)
822+ 0
823+ ~zod/try=> (scan "pit" tip:ab)
824+ 242
825+
826+------------------------------------------------------------------------
827+
828+### `++tiq`
829+
830+Trailing phonetic syllable
831+
832+Parsing [`++rule`](). Parses the trailing phonetic byte, which represents a
833+syllable.
834+
835+Accepts
836+-------
837+
838+Produces
839+--------
840+
841+Source
842+------
843+
844+ ++ tiq (sear |=(a=@ (ind:po a)) til)
845+
846+Examples
847+--------
848+
849+ ~zod/try=> (scan "zod" tiq:ab)
850+ 0
851+ ~zod/try=> (scan "nec" tiq:ab)
852+ 1
853+
854+------------------------------------------------------------------------
855+
856+### `++tid`
857+
858+Parse 3 decimal digits
859+
860+Parsing [`++rule`](). Parses exactly three decimal digits.
861+
862+Accepts
863+-------
864+
865+Produces
866+--------
867+
868+Source
869+------
870+
871+ ++ tid (bass 10 (stun [3 3] sid))
872+
873+Examples
874+--------
875+
876+ ~zod/try=> (scan "013" tid:ab)
877+ q=13
878+ ~zod/try=> (scan "01" tid:ab)
879+ ! {1 3}
880+ ! exit
881+
882+------------------------------------------------------------------------
883+
884+### `++til`
885+
886+Parse 3 lowercase
887+
888+Parsing [`++rule`](). Parses exactly three lowercase letters.
889+
890+Accepts
891+-------
892+
893+Produces
894+--------
895+
896+Source
897+------
898+
899+ ++ til (boss 256 (stun [3 3] low))
900+
901+Examples
902+--------
903+
904+ ~zod/try=> (scan "mer" til:ab)
905+ q=7.497.069
906+ ~zod/try=> `@t`(scan "mer" til:ab)
907+ 'mer'
908+ ~zod/try=> (scan "me" til:ab)
909+ ! {1 3}
910+ ! exit
911+
912+------------------------------------------------------------------------
913+
914+### `++urs`
915+
916+Parse span characters
917+
918+Parsing rule. Parses characters from an atom of the span odor [`@ta`]().
919+
920+Accepts
921+-------
922+
923+Produces
924+--------
925+
926+Source
927+------
928+
929+ ++ urs %+ cook
930+ |=(a=tape (rap 3 ^-((list ,@) a)))
931+ (star ;~(pose nud low hep dot sig cab))
932+
933+Examples
934+--------
935+
936+ ~zod/try=> `@ta`(scan "asa-lom_tak" urs:ab)
937+ ~.asa-lom_tak
938+ ~zod/try=> `@t`(scan "asa-lom_tak" urs:ab)
939+ 'asa-lom_tak'
940+
941+------------------------------------------------------------------------
942+
943+### `++urt`
944+
945+Parse non-`_` span
946+
947+Parsing rule. Parses all characters of the span odor [`@ta`]() except
948+for cab, `_`.
949+
950+Accepts
951+-------
952+
953+Produces
954+--------
955+
956+Source
957+------
958+
959+ ++ urt %+ cook
960+ |=(a=tape (rap 3 ^-((list ,@) a)))
961+ (star ;~(pose nud low hep dot sig))
962+
963+Examples
964+--------
965+
966+ ~zod/try=> `@t`(scan "asa-lom.t0k" urt:ab)
967+ 'asa-lom.t0k'
968+
969+------------------------------------------------------------------------
970+
971+### `++voy`
972+
973+Parse bas, soq, or bix
974+
975+Parsing rule. Parses an escaped backslash, single quote, or hex pair
976+byte.
977+
978+Accepts
979+-------
980+
981+Produces
982+--------
983+
984+Source
985+------
986+
987+ ++ voy ;~(pfix bas ;~(pose bas soq bix))
988+
989+Examples
990+--------
991+
992+ ~zod/try=> (scan "\\0a" voy:ab)
993+ q=10
994+ ~zod/try=> (scan "\\'" voy:ab)
995+ q=39
996+
997+------------------------------------------------------------------------
998+
999+### `++ag`
1000+
1001+Top-level atom parser engine
1002+
1003+A core containing top-level atom parsers.
1004+
1005+Accepts
1006+-------
1007+
1008+Produces
1009+--------
1010+
1011+Source
1012+------
1013+
1014+ ++ ag
1015+ |%
1016+
1017+Examples
1018+--------
1019+
1020+ ~zod/try=> ag
1021+ <14.vpu 414.mof 100.xkc 1.ypj %164>
1022+
1023+------------------------------------------------------------------------
1024+
1025+### `++ape`
1026+
1027+Parse 0 or rule
1028+
1029+Parser modifier. Parses 0 or the sample rule `fel`.
1030+
1031+Accepts
1032+-------
1033+
1034+Produces
1035+--------
1036+
1037+`fel` is a [`rule`]().
1038+
1039+Source
1040+------
1041+
1042+ ++ ape |*(fel=_rule ;~(pose (cold 0 (just '0')) fel))
1043+
1044+Examples
1045+--------
1046+
1047+ ~zod/try=> (scan "202" (star (ape:ag (cold 2 (just '2')))))
1048+ ~[2 0 2]
1049+
1050+------------------------------------------------------------------------
1051+
1052+### `++bay`
1053+
1054+Parses binary number
1055+
1056+Parsing rule. Parses a binary number without a leading zero.
1057+
1058+Accepts
1059+-------
1060+
1061+Produces
1062+--------
1063+
1064+Source
1065+------
1066+
1067+ ++ bay (ape (bass 16 ;~(plug qeb:ab (star ;~(pfix dog qib:ab)))))
1068+
1069+Examples
1070+--------
1071+
1072+ ~zod/try=> (scan "10.0110" bay:ag)
1073+ q=38
1074+
1075+------------------------------------------------------------------------
1076+
1077+### `++bip`
1078+
1079+Parse IPv6
1080+
1081+Parsing rule. Parses a [`@is`](), an IPv6 address.
1082+
1083+Accepts
1084+-------
1085+
1086+Produces
1087+--------
1088+
1089+Source
1090+------
1091+
1092+ ++ bip =+ tod=(ape qex:ab)
1093+ (bass 0x1.0000 ;~(plug tod (stun [7 7] ;~(pfix dog tod))))
1094+
1095+Examples
1096+--------
1097+
1098+ ~zod/try=> (scan "0.0.ea.3e6c.0.0.0.0" bip:ag)
1099+ q=283.183.420.760.121.105.516.068.864
1100+ ~zod/try=> `@is`(scan "0.0.ea.3e6c.0.0.0.0" bip:ag)
1101+ .0.0.ea.3e6c.0.0.0.0
1102+
1103+------------------------------------------------------------------------
1104+
1105+### `++dem`
1106+
1107+Parse decimal with dots
1108+
1109+Parsing rule. Parses a decimal number that includes dot separators.
1110+
1111+Accepts
1112+-------
1113+
1114+Produces
1115+--------
1116+
1117+Source
1118+------
1119+
1120+ ++ dem (ape (bass 1.000 ;~(plug ted:ab (star ;~(pfix dog tid:ab)))))
1121+
1122+Examples
1123+--------
1124+
1125+ ~zod/try=> (scan "52" dem:ag)
1126+ q=52
1127+ ~zod/try=> (scan "13.507" dem:ag)
1128+ q=13.507
1129+
1130+------------------------------------------------------------------------
1131+
1132+### `++dim`
1133+
1134+Parse decimal number
1135+
1136+Parsing rule. Parses a decimal number without a leading zero.
1137+
1138+Accepts
1139+-------
1140+
1141+Produces
1142+--------
1143+
1144+Source
1145+------
1146+
1147+ ++ dim (ape (bass 10 ;~(plug sed:ab (star sid:ab))))
1148+
1149+Examples
1150+--------
1151+
1152+ ~zod/try=> (scan "52" dim:ag)
1153+ q=52
1154+ ~zod/try=> (scan "013507" dim:ag)
1155+ ! {1 2}
1156+ ! exit
1157+
1158+------------------------------------------------------------------------
1159+
1160+### `++dum`
1161+
1162+Parse decimal with leading `0`
1163+
1164+Parsing rule. Parses a decmial number with leading zeroes.
1165+
1166+Accepts
1167+-------
1168+
1169+Produces
1170+--------
1171+
1172+Source
1173+------
1174+
1175+ ++ dum (bass 10 (plus sid:ab))
1176+
1177+Examples
1178+--------
1179+
1180+ ~zod/try=> (scan "52" dum:ag)
1181+ q=52
1182+ ~zod/try=> (scan "0000052" dum:ag)
1183+ q=52
1184+ ~zod/try=> (scan "13507" dim:ag)
1185+ q=13.507
1186+
1187+------------------------------------------------------------------------
1188+
1189+### `++fed`
1190+
1191+Parse phonetic base
1192+
1193+Parsing rule. Parses an atom of odor [`@p`](), the phonetic base.
1194+
1195+Accepts
1196+-------
1197+
1198+Produces
1199+--------
1200+
1201+Source
1202+------
1203+
1204+ ++ fed ;~ pose
1205+ (bass 0x1.0000.0000.0000.0000 (most doh hyf:ab))
1206+ huf:ab
1207+ hif:ab
1208+ tiq:ab
1209+ ==
1210+
1211+Examples
1212+--------
1213+
1214+ ~zod/try=> (scan "zod" fed:ag)
1215+ 0
1216+ ~zod/try=> (scan "nec" fed:ag)
1217+ 1
1218+ ~zod/try=> (scan "sondel" fed:ag)
1219+ 9.636
1220+ ~zod/try=> ~tillyn-nillyt
1221+ ~tillyn-nillyt
1222+ ~zod/try=> (scan "tillyn-nillyt" fed:ag)
1223+ 3.569.565.175
1224+ ~zod/try=> (scan "tillyn-nillyt-tasfyn-partyv" fed:ag)
1225+ 15.331.165.687.565.582.592
1226+ ~zod/try=> (scan "tillyn-nillyt-tasfyn-partyv--novweb-talrud-talmud-sonfyr" fed:ag)
1227+ 282.810.089.790.159.633.869.501.053.313.363.681.181
1228+
1229+------------------------------------------------------------------------
1230+
1231+### `++hex`
1232+
1233+Parse hex
1234+
1235+Parsing rule. Parses a hexadecimal number
1236+
1237+Accepts
1238+-------
1239+
1240+Produces
1241+--------
1242+
1243+Source
1244+------
1245+
1246+ ++ hex (ape (bass 0x1.0000 ;~(plug qex:ab (star ;~(pfix dog qix:ab)))))
1247+
1248+Examples
1249+--------
1250+
1251+ ~zod/try=> (scan "4" hex:ag)
1252+ q=4
1253+ ~zod/try=> (scan "1a" hex:ag)
1254+ q=26
1255+ ~zod/try=> (scan "3.ac8d" hex:ag)
1256+ q=240.781
1257+ ~zod/try=> `@ux`(scan "3.ac8d" hex:ag)
1258+ 0x3.ac8d
1259+
1260+------------------------------------------------------------------------
1261+
1262+### `++lip`
1263+
1264+Parse IPv4 address
1265+
1266+Parsing rule. Parses an IPv4 address.
1267+
1268+Accepts
1269+-------
1270+
1271+Produces
1272+--------
1273+
1274+Source
1275+------
1276+
1277+ ++ lip =+ tod=(ape ted:ab)
1278+ (bass 256 ;~(plug tod (stun [3 3] ;~(pfix dog tod))))
1279+
1280+Examples
1281+--------
1282+
1283+ ~zod/try=> (scan "127.0.0.1" lip:ag)
1284+ q=2.130.706.433
1285+ ~zod/try=> `@if`(scan "127.0.0.1" lip:ag)
1286+ .127.0.0.1
1287+ ~zod/try=> `@if`(scan "8.8.8.8" lip:ag)
1288+ .8.8.8.8
1289+
1290+------------------------------------------------------------------------
1291+
1292+### `++viz`
1293+
1294+Parse Base-32 with dots
1295+
1296+Parsing rule. Parses a Base-32 number with dot separators.
1297+
1298+Accepts
1299+-------
1300+
1301+Produces
1302+--------
1303+
1304+Source
1305+------
1306+
1307+ ++ viz (ape (bass 0x200.0000 ;~(plug pev:ab (star ;~(pfix dog piv:ab)))))
1308+
1309+Examples
1310+--------
1311+
1312+ ~zod/try=> (scan "e2.ol4pm" viz:ag)
1313+ q=15.125.353.270
1314+
1315+------------------------------------------------------------------------
1316+
1317+### `++vum`
1318+
1319+Parse base-32 string
1320+
1321+Parsing rule. Parses a raw base-32 string.
1322+
1323+Accepts
1324+-------
1325+
1326+Produces
1327+--------
1328+
1329+Source
1330+------
1331+
1332+ ++ vum (bass 32 (plus siv:ab))
1333+
1334+Examples
1335+--------
1336+
1337+ ~zod/try=> (scan "e2ol4pm" vum:ag)
1338+ q=15.125.353.270
1339+
1340+------------------------------------------------------------------------
1341+
1342+### `++wiz`
1343+
1344+Parse base-64
1345+
1346+Parsing rule. Parses a base-64 number.
1347+
1348+Accepts
1349+-------
1350+
1351+Produces
1352+--------
1353+
1354+Source
1355+------
1356+
1357+ ++ wiz (ape (bass 0x4000.0000 ;~(plug pew:ab (star ;~(pfix dog piw:ab)))))
1358+ --
1359+ ::
1360+
1361+Examples
1362+--------
1363+
1364+ ~zod/try=> (scan "e2O.l4Xpm" wiz:ag)
1365+ q=61.764.130.813.526