mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-24 23:44:56 +03:00
Merge branch 'barbus' (#1712)
* barbus: hoon: removed unused parser type hoon: remove extraneous cast hoon: removed barhax. No hax! hoon: replace barhax with barbus hoon: changed barbus to match barhax hoon: replaced barbus usage with barhax hoon: add parsing for barhax hoon: added barhax to replace barbus hoon: update tall parsing for |$ hoon: replace +* name usage with ++ name |$ hoon: add parsing rules for |$ hoon: add ast for |$
This commit is contained in:
commit
472c27ef6c
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7bf18a0a70e3eb66edf08c49ee57de7551c6894cf2e04a7b93a46109e31d7c73
|
||||
size 11254785
|
||||
oid sha256:bb0a7faca368603e55469035da0deae500a0ad69c9858699a49118f8310b16b2
|
||||
size 12603952
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0b34cfea64cdaf45ef0206cbed7909d1c54979a17eeb01306b850bb8b62ecb5c
|
||||
size 6222454
|
||||
oid sha256:535dc0cc1993506c6a32d2c4d169871329bb77459f352c96681a414261c17e7e
|
||||
size 7644344
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8a7e4e38aa07657b7376fea2bc26d85093294f26f008620cd43986b1427ec3ff
|
||||
size 13951578
|
||||
oid sha256:8ac3be8c9544148e53d70f584476e9d2366159b31dd7474a9be02cccb9ac1d11
|
||||
size 15294014
|
||||
|
@ -273,7 +273,8 @@
|
||||
:: 8 bits.
|
||||
@
|
||||
::
|
||||
+* each [this that]
|
||||
++ each
|
||||
|$ [this that]
|
||||
:: either {a} or {b}, defaulting to {a}.
|
||||
::
|
||||
:: mold generator: produces a discriminated fork between two types,
|
||||
@ -291,7 +292,8 @@
|
||||
:: sample type of `*`.
|
||||
$-(* *)
|
||||
::
|
||||
+* list [item]
|
||||
++ list
|
||||
|$ [item]
|
||||
:: null-terminated list
|
||||
::
|
||||
:: mold generator: produces a mold of a null-terminated list of the
|
||||
@ -299,14 +301,16 @@
|
||||
::
|
||||
$@(~ [i=item t=(list item)])
|
||||
::
|
||||
+* lone [item]
|
||||
++ lone
|
||||
|$ [item]
|
||||
:: single item tuple
|
||||
::
|
||||
:: mold generator: puts the face of `p` on the passed in mold.
|
||||
::
|
||||
p=item
|
||||
::
|
||||
+* lest [item]
|
||||
++ lest
|
||||
|$ [item]
|
||||
:: null-terminated non-empty list
|
||||
::
|
||||
:: mold generator: produces a mold of a null-terminated list of the
|
||||
@ -322,7 +326,8 @@
|
||||
:: examples: * @ud ,[p=time q=?(%a %b)]
|
||||
$~(* $-(* *))
|
||||
::
|
||||
+* pair [head tail]
|
||||
++ pair
|
||||
|$ [head tail]
|
||||
:: dual tuple
|
||||
::
|
||||
:: mold generator: produces a tuple of the two types passed in.
|
||||
@ -332,21 +337,24 @@
|
||||
::
|
||||
[p=head q=tail]
|
||||
::
|
||||
+* pole [item]
|
||||
++ pole
|
||||
|$ [item]
|
||||
:: faceless list
|
||||
::
|
||||
:: like ++list, but without the faces {i} and {t}.
|
||||
::
|
||||
$@(~ [item (pole item)])
|
||||
::
|
||||
+* qual [first second third fourth]
|
||||
++ qual
|
||||
|$ [first second third fourth]
|
||||
:: quadruple tuple
|
||||
::
|
||||
:: mold generator: produces a tuple of the four types passed in.
|
||||
::
|
||||
[p=first q=second r=third s=fourth]
|
||||
::
|
||||
+* quip [item state]
|
||||
++ quip
|
||||
|$ [item state]
|
||||
:: pair of list of first and second
|
||||
::
|
||||
:: a common pattern in hoon code is to return a ++list of changes, along with
|
||||
@ -357,12 +365,14 @@
|
||||
::
|
||||
[(list item) state]
|
||||
::
|
||||
+* trap [product]
|
||||
++ trap
|
||||
|$ [product]
|
||||
:: a core with one arm `$`
|
||||
::
|
||||
_|?($:product)
|
||||
::
|
||||
+* tree [node]
|
||||
++ tree
|
||||
|$ [node]
|
||||
:: tree mold generator
|
||||
::
|
||||
:: a `++tree` can be empty, or contain a node of a type and
|
||||
@ -370,14 +380,16 @@
|
||||
::
|
||||
$@(~ [n=node l=(tree node) r=(tree node)])
|
||||
::
|
||||
+* trel [first second third]
|
||||
++ trel
|
||||
|$ [first second third]
|
||||
:: triple tuple
|
||||
::
|
||||
:: mold generator: produces a tuple of the three types passed in.
|
||||
::
|
||||
[p=first q=second r=third]
|
||||
::
|
||||
+* unit [item]
|
||||
++ unit
|
||||
|$ [item]
|
||||
:: maybe
|
||||
::
|
||||
:: mold generator: either `~` or `[~ u=a]` where `a` is the
|
||||
@ -1815,18 +1827,21 @@
|
||||
:::: 2o: containers ::
|
||||
:: ::
|
||||
::
|
||||
+* jar [key value] (map key (list value)) :: map of lists
|
||||
+* jug [key value] (map key (set value)) :: map of sets
|
||||
++ jar |$ [key value] (map key (list value)) :: map of lists
|
||||
++ jug |$ [key value] (map key (set value)) :: map of sets
|
||||
::
|
||||
+* map [key value] :: table
|
||||
++ map
|
||||
|$ [key value] :: table
|
||||
$| (tree (pair key value))
|
||||
|=(a=(tree (pair)) ~(apt by a))
|
||||
::
|
||||
+* qeu [item] :: queue
|
||||
++ qeu
|
||||
|$ [item] :: queue
|
||||
$| (tree item)
|
||||
|=(a=(tree) ~(apt to a))
|
||||
::
|
||||
+* set [item] :: set
|
||||
++ set
|
||||
|$ [item] :: set
|
||||
$| (tree item)
|
||||
|=(a=(tree) ~(apt in a))
|
||||
::
|
||||
@ -6654,6 +6669,7 @@
|
||||
{$yell p/(list hoon)} :: render as tank
|
||||
{$xray p/manx:hoot} :: ;foo; templating
|
||||
:: :::::: cores
|
||||
{$brbs sample/(lest term) body/spec} :: |$
|
||||
{$brcb p/spec q/alas r/(map term tome)} :: |_
|
||||
{$brcl p/hoon q/hoon} :: |:
|
||||
{$brcn p/(unit term) q/(map term tome)} :: |%
|
||||
@ -8630,6 +8646,13 @@
|
||||
{$yell *} [%cncl [%limb %cain] [%zpbn [%cltr p.gen]] ~]
|
||||
{$note *} q.gen
|
||||
::
|
||||
{$brbs *} =- ?~ - !!
|
||||
[%brtr [%bscl -] [%ktcl body.gen]]
|
||||
%+ turn `(list term)`sample.gen
|
||||
|= =term
|
||||
^- spec
|
||||
=/ tar [%base %noun]
|
||||
[%bsts term [%bssg tar [%bshp tar tar]]]
|
||||
{$brcb *} :+ %tsls [%kttr p.gen]
|
||||
:+ %brcn ~
|
||||
%- ~(run by r.gen)
|
||||
@ -11909,8 +11932,8 @@
|
||||
::
|
||||
+| %helpers
|
||||
::
|
||||
+* batt-of [arm] (map term (pair what (map term arm)))
|
||||
+* chap-of [arm] [doc=what arms=(map term arm)]
|
||||
++ batt-of |$ [arm] (map term (pair what (map term arm)))
|
||||
++ chap-of |$ [arm] [doc=what arms=(map term arm)]
|
||||
::
|
||||
:: Traverse over a chapter in a battery.
|
||||
::
|
||||
@ -16583,6 +16606,7 @@
|
||||
['*' (rune tar %brtr exqc)]
|
||||
['=' (rune tis %brts exqc)]
|
||||
['?' (rune wut %brwt expa)]
|
||||
['$' (rune bus %brbs exqe)]
|
||||
==
|
||||
==
|
||||
:- '$'
|
||||
@ -16793,7 +16817,23 @@
|
||||
==
|
||||
==
|
||||
==
|
||||
::
|
||||
:: parses a or [a b c] or a b c ==
|
||||
++ lynx
|
||||
=/ wid (ifix [lac rac] (most ace sym))
|
||||
=/ tal
|
||||
;~ sfix
|
||||
(most gap sym)
|
||||
;~(plug gap duz)
|
||||
==
|
||||
=/ one
|
||||
%- cook :_ sym
|
||||
|= a=term
|
||||
`(list term)`~[a]
|
||||
%- cook
|
||||
:_ ;~(pose (runq wid tal) one)
|
||||
:: lestify
|
||||
|= a=(list term)
|
||||
?~(a !! a)
|
||||
++ whap !: :: chapter
|
||||
%+ cook
|
||||
|= a=(list (pair term hoon))
|
||||
@ -16874,6 +16914,11 @@
|
||||
|@ ++ $
|
||||
;~(pfix dif (stag hil (stag tuq (toad har))))
|
||||
--
|
||||
++ runq :: wide or tall if tol
|
||||
|* [wid/rule tal/rule] :: else wide
|
||||
?. tol
|
||||
wid
|
||||
;~(pose wid tal)
|
||||
::
|
||||
++ glop ~+((glue mash)) :: separated by space
|
||||
++ gunk ~+((glue muck)) :: separated list
|
||||
@ -16961,6 +17006,7 @@
|
||||
++ exqb |.(;~(gunk loan loan)) :: two specs
|
||||
++ exqc |.(;~(gunk loan loaf)) :: spec then hoon
|
||||
++ exqd |.(;~(gunk loaf loan)) :: hoon then spec
|
||||
++ exqe |.(;~(gunk lynx loan)) :: list of names then spec
|
||||
++ exqs |.((butt hunk)) :: closed gapped specs
|
||||
++ exqg |.(;~(gunk sym loan)) :: term and spec
|
||||
++ exqk |.(;~(gunk loaf ;~(plug loan (easy ~)))) :: hoon with one spec
|
||||
|
@ -6,7 +6,7 @@
|
||||
+| %generics
|
||||
:: $mk-item: constructor for +ordered-map item type
|
||||
::
|
||||
+* mk-item [key val] [key=key val=val]
|
||||
++ mk-item |$ [key val] [key=key val=val]
|
||||
:: +ordered-map: treap with user-specified horizontal order
|
||||
::
|
||||
:: Conceptually smaller items go on the left, so the item with the
|
||||
|
Loading…
Reference in New Issue
Block a user