diff --git a/collections/arrays/shaped/shaped.factor b/collections/arrays/shaped/shaped.factor index d12363e664..6559452bcf 100644 --- a/collections/arrays/shaped/shaped.factor +++ b/collections/arrays/shaped/shaped.factor @@ -173,7 +173,7 @@ TUPLE: row-traverser shaped-array index ; GENERIC: next-index ( object -- index ) ; -SYNTAX: sa{ \ } [ >shaped-array ] parse-literal ; +SYNTAX: \ sa{ \ } [ >shaped-array ] parse-literal ; use: prettyprint.custom ! M: row-array pprint* shaped-array>array pprint* ; diff --git a/collections/bit-arrays/bit-arrays.factor b/collections/bit-arrays/bit-arrays.factor index a32d1b2e8b..32d326b040 100644 --- a/collections/bit-arrays/bit-arrays.factor +++ b/collections/bit-arrays/bit-arrays.factor @@ -86,7 +86,7 @@ M: bit-array resize M: bit-array byte-length length bits>bytes ; inline -SYNTAX: ?{ \ } [ >bit-array ] parse-literal ; +SYNTAX: \ ?{ \ } [ >bit-array ] parse-literal ; : integer>bit-array ( n -- bit-array ) dup 0 = diff --git a/collections/bit-vectors/bit-vectors.factor b/collections/bit-vectors/bit-vectors.factor index 29e111bee3..9ee20819f2 100644 --- a/collections/bit-vectors/bit-vectors.factor +++ b/collections/bit-vectors/bit-vectors.factor @@ -7,7 +7,7 @@ in: bit-vectors << "bit-vector" create-class-in \ bit-array \ define-vector >> -SYNTAX: ?V{ \ } [ >bit-vector ] parse-literal ; +SYNTAX: \ ?V{ \ } [ >bit-vector ] parse-literal ; M: bit-vector contract 2drop ; M: bit-vector >pprint-sequence ; diff --git a/collections/byte-arrays/hex/hex.factor b/collections/byte-arrays/hex/hex.factor index d157e01ec9..b1e7af711c 100644 --- a/collections/byte-arrays/hex/hex.factor +++ b/collections/byte-arrays/hex/hex.factor @@ -6,7 +6,7 @@ in: byte-arrays.hex ERROR: odd-length-hex-string string ; -SYNTAX: HEX{ +SYNTAX: \ HEX{ "}" parse-tokens concat [ blank? ] reject dup length even? [ odd-length-hex-string ] unless diff --git a/collections/dlists/dlists.factor b/collections/dlists/dlists.factor index 0c2d2c9ec6..909610fadf 100644 --- a/collections/dlists/dlists.factor +++ b/collections/dlists/dlists.factor @@ -213,6 +213,6 @@ PRIVATE> INSTANCE: dlist deque ; -SYNTAX: DL{ \ } [ >dlist ] parse-literal ; +SYNTAX: \ DL{ \ } [ >dlist ] parse-literal ; { "dlists" "prettyprint" } "dlists.prettyprint" require-when diff --git a/collections/hash-sets/identity/identity.factor b/collections/hash-sets/identity/identity.factor index a16fa44ade..479ff01265 100644 --- a/collections/hash-sets/identity/identity.factor +++ b/collections/hash-sets/identity/identity.factor @@ -32,6 +32,6 @@ M: identity-hash-set clone M: identity-hash-set set-like drop dup identity-hash-set? [ ?members >identity-hash-set ] unless ; inline -SYNTAX: IHS{ \ } [ >identity-hash-set ] parse-literal ; +SYNTAX: \ IHS{ \ } [ >identity-hash-set ] parse-literal ; { "hash-sets.identity" "prettyprint" } "hash-sets.identity.prettyprint" require-when diff --git a/collections/hash-sets/numbers/numbers.factor b/collections/hash-sets/numbers/numbers.factor index d09b9966e9..bb89928f75 100644 --- a/collections/hash-sets/numbers/numbers.factor +++ b/collections/hash-sets/numbers/numbers.factor @@ -31,6 +31,6 @@ M: number-hash-set clone : >number-hash-set ( members -- shash-set ) [ ] map >hash-set number-hash-set boa ; -SYNTAX: NHS{ \ } [ >number-hash-set ] parse-literal ; +SYNTAX: \ NHS{ \ } [ >number-hash-set ] parse-literal ; { "hash-sets.numbers" "prettyprint" } "hash-sets.numbers.prettyprint" require-when diff --git a/collections/hash-sets/sequences/sequences.factor b/collections/hash-sets/sequences/sequences.factor index 7ac0870dab..a3b3adf0ea 100644 --- a/collections/hash-sets/sequences/sequences.factor +++ b/collections/hash-sets/sequences/sequences.factor @@ -31,6 +31,6 @@ M: sequence-hash-set clone : >sequence-hash-set ( members -- shash-set ) [ ] map >hash-set sequence-hash-set boa ; -SYNTAX: SHS{ \ } [ >sequence-hash-set ] parse-literal ; +SYNTAX: \ SHS{ \ } [ >sequence-hash-set ] parse-literal ; { "hash-sets.sequences" "prettyprint" } "hash-sets.sequences.prettyprint" require-when diff --git a/collections/hashtables/numbers/numbers.factor b/collections/hashtables/numbers/numbers.factor index 3ed809d8dc..a0f5878b03 100644 --- a/collections/hashtables/numbers/numbers.factor +++ b/collections/hashtables/numbers/numbers.factor @@ -34,6 +34,6 @@ M: number-hashtable clone M: number-hashtable new-assoc drop ; -SYNTAX: NH{ \ } [ >number-hashtable ] parse-literal ; +SYNTAX: \ NH{ \ } [ >number-hashtable ] parse-literal ; { "hashtables.numbers" "prettyprint" } "hashtables.numbers.prettyprint" require-when diff --git a/collections/hashtables/sequences/sequences.factor b/collections/hashtables/sequences/sequences.factor index 85828611dd..fafbdbdb7a 100644 --- a/collections/hashtables/sequences/sequences.factor +++ b/collections/hashtables/sequences/sequences.factor @@ -33,6 +33,6 @@ M: sequence-hashtable clone M: sequence-hashtable new-assoc drop ; -SYNTAX: SH{ \ } [ >sequence-hashtable ] parse-literal ; +SYNTAX: \ SH{ \ } [ >sequence-hashtable ] parse-literal ; { "hashtables.sequences" "prettyprint" } "hashtables.sequences.prettyprint" require-when diff --git a/collections/linked-assocs/linked-assocs.factor b/collections/linked-assocs/linked-assocs.factor index 1fa0339106..07f4a9e044 100644 --- a/collections/linked-assocs/linked-assocs.factor +++ b/collections/linked-assocs/linked-assocs.factor @@ -61,6 +61,6 @@ M: linked-assoc assoc-like M: linked-assoc equal? over linked-assoc? [ [ dlist>> ] bi@ = ] [ 2drop f ] if ; -SYNTAX: LH{ \ } [ check-hashtable >linked-hash ] parse-literal ; +SYNTAX: \ LH{ \ } [ check-hashtable >linked-hash ] parse-literal ; { "linked-assocs" "prettyprint" } "linked-assocs.prettyprint" require-when diff --git a/collections/memory/pools/pools-docs.factor b/collections/memory/pools/pools-docs.factor index 63134acb2f..0c73f3975a 100644 --- a/collections/memory/pools/pools-docs.factor +++ b/collections/memory/pools/pools-docs.factor @@ -9,8 +9,8 @@ HELP: } { $description "Creates a " { $link pool } " of " { $snippet "size" } " objects of " { $snippet "class" } "." } ; -HELP: POOL: -{ $syntax "POOL: class size" } +HELP: \ POOL: +{ $syntax "POOL: class size ;" } { $description "Creates a " { $link pool } " of " { $snippet "size" } " objects of " { $snippet "class" } ", and associates it with the class using " { $link set-class-pool } "." } ; HELP: class-pool diff --git a/collections/memory/pools/pools.factor b/collections/memory/pools/pools.factor index 20339beef7..e1216e22d8 100644 --- a/collections/memory/pools/pools.factor +++ b/collections/memory/pools/pools.factor @@ -49,5 +49,5 @@ PRIVATE> : free-to-pool ( object -- ) dup class-of class-pool pool-free ; -SYNTAX: POOL: - scan-word scan-word '[ _ swap ] [ swap set-class-pool ] bi ; +SYNTAX: \ POOL: + scan-word scan-word ";" expect '[ _ swap ] [ swap set-class-pool ] bi ; diff --git a/collections/nibble-arrays/nibble-arrays.factor b/collections/nibble-arrays/nibble-arrays.factor index 3bc857fef2..7118b4531c 100644 --- a/collections/nibble-arrays/nibble-arrays.factor +++ b/collections/nibble-arrays/nibble-arrays.factor @@ -67,7 +67,7 @@ M: nibble-array resize M: nibble-array byte-length length nibbles>bytes ; -SYNTAX: N{ \ } [ >nibble-array ] parse-literal ; +SYNTAX: \ N{ \ } [ >nibble-array ] parse-literal ; INSTANCE: nibble-array sequence ; diff --git a/collections/persistent/hashtables/hashtables.factor b/collections/persistent/hashtables/hashtables.factor index 95a0b4342d..6a34f5773a 100644 --- a/collections/persistent/hashtables/hashtables.factor +++ b/collections/persistent/hashtables/hashtables.factor @@ -53,7 +53,7 @@ M: persistent-hash hashcode* nip assoc-size ; M: persistent-hash clone ; -SYNTAX: PH{ \ } [ >persistent-hash ] parse-literal ; +SYNTAX: \ PH{ \ } [ >persistent-hash ] parse-literal ; M: persistent-hash pprint-delims drop \ PH{ \ } ; M: persistent-hash >pprint-sequence >alist ; diff --git a/collections/persistent/vectors/vectors.factor b/collections/persistent/vectors/vectors.factor index 3544e1b7e8..1bbab96ee5 100644 --- a/collections/persistent/vectors/vectors.factor +++ b/collections/persistent/vectors/vectors.factor @@ -181,7 +181,7 @@ M: persistent-vector equal? : >persistent-vector ( seq -- pvec ) T{ persistent-vector } like ; -SYNTAX: PV{ \ } [ >persistent-vector ] parse-literal ; +SYNTAX: \ PV{ \ } [ >persistent-vector ] parse-literal ; M: persistent-vector pprint-delims drop \ PV{ \ } ; M: persistent-vector >pprint-sequence ; diff --git a/collections/specialized-arrays/specialized-arrays.factor b/collections/specialized-arrays/specialized-arrays.factor index e2d7f8849f..10de4326ca 100644 --- a/collections/specialized-arrays/specialized-arrays.factor +++ b/collections/specialized-arrays/specialized-arrays.factor @@ -93,7 +93,7 @@ M: A pprint-delims drop \ A{ \ } ; M: A >pprint-sequence ; -SYNTAX: A{ \ } [ \ T >c-array ] parse-literal ; +SYNTAX: \ A{ \ } [ \ T >c-array ] parse-literal ; INSTANCE: A specialized-array ; @@ -168,13 +168,13 @@ M: c-type-word c-array-type? M: pointer c-array-type? drop void* c-array-type? ; -SYNTAX: SPECIALIZED-ARRAYS: +SYNTAX: \ SPECIALIZED-ARRAYS: ";" [ parse-c-type define-array-vocab use-vocab ] each-token ; -SYNTAX: SPECIALIZED-ARRAY: +SYNTAX: \ SPECIALIZED-ARRAY: scan-c-type define-array-vocab use-vocab ; -SYNTAX: specialized-array: +SYNTAX: \ specialized-array: scan-c-type define-array-vocab use-vocab ; { "specialized-arrays" "prettyprint" } "specialized-arrays.prettyprint" require-when diff --git a/collections/specialized-vectors/specialized-vectors.factor b/collections/specialized-vectors/specialized-vectors.factor index 76c236d490..adba72f998 100644 --- a/collections/specialized-vectors/specialized-vectors.factor +++ b/collections/specialized-vectors/specialized-vectors.factor @@ -76,19 +76,14 @@ PRIVATE> [ specialized-vector-vocab ] [ '[ _ define-vector ] ] bi generate-vocab ; -SYNTAX: SPECIALIZED-VECTORS: +SYNTAX: \ SPECIALIZED-VECTORS: ";" [ parse-c-type [ define-array-vocab use-vocab ] [ define-vector-vocab use-vocab ] bi ] each-token ; -SYNTAX: SPECIALIZED-VECTOR: - scan-c-type - [ define-array-vocab use-vocab ] - [ define-vector-vocab use-vocab ] bi ; - -SYNTAX: specialized-vector: +SYNTAX: \ specialized-vector: scan-c-type [ define-array-vocab use-vocab ] [ define-vector-vocab use-vocab ] bi ; diff --git a/collections/suffix-arrays/suffix-arrays.factor b/collections/suffix-arrays/suffix-arrays.factor index fceb984c28..91cecefdb9 100644 --- a/collections/suffix-arrays/suffix-arrays.factor +++ b/collections/suffix-arrays/suffix-arrays.factor @@ -32,7 +32,7 @@ PRIVATE> : >suffix-array ( seq -- suffix-array ) members [ suffixes ] map concat natural-sort ; -SYNTAX: SA{ \ } [ >suffix-array ] parse-literal ; +SYNTAX: \ SA{ \ } [ >suffix-array ] parse-literal ; : query ( begin suffix-array -- matches ) [ find-index ] 2keep '[ _ _ (query) ] [ { } ] if* ; diff --git a/collections/trees/avl/avl.factor b/collections/trees/avl/avl.factor index d5eb8cef59..88087ed890 100644 --- a/collections/trees/avl/avl.factor +++ b/collections/trees/avl/avl.factor @@ -160,7 +160,7 @@ PRIVATE> M: avl assoc-like drop dup avl? [ >avl ] unless ; -SYNTAX: AVL{ +SYNTAX: \ AVL{ \ } [ >avl ] parse-literal ; M: avl pprint-delims drop \ AVL{ \ } ; diff --git a/collections/trees/splay/splay.factor b/collections/trees/splay/splay.factor index d95447e56a..b1bab28498 100644 --- a/collections/trees/splay/splay.factor +++ b/collections/trees/splay/splay.factor @@ -136,7 +136,7 @@ PRIVATE> : >splay ( assoc -- tree ) T{ splay f f 0 } assoc-clone-like ; -SYNTAX: SPLAY{ +SYNTAX: \ SPLAY{ \ } [ >splay ] parse-literal ; M: splay assoc-like diff --git a/collections/trees/trees.factor b/collections/trees/trees.factor index 1f0f424eed..9a5f965ef2 100644 --- a/collections/trees/trees.factor +++ b/collections/trees/trees.factor @@ -209,7 +209,7 @@ M: tree clone dup assoc-clone-like ; M: tree assoc-like drop dup tree? [ >tree ] unless ; -SYNTAX: TREE{ +SYNTAX: \ TREE{ \ } [ >tree ] parse-literal ; M: tree assoc-size count>> ; diff --git a/collections/vlists/vlists.factor b/collections/vlists/vlists.factor index 66a59f9f40..a9d943bd00 100644 --- a/collections/vlists/vlists.factor +++ b/collections/vlists/vlists.factor @@ -50,7 +50,7 @@ M: vlist like INSTANCE: vlist immutable-sequence ; -SYNTAX: VL{ \ } [ >vlist ] parse-literal ; +SYNTAX: \ VL{ \ } [ >vlist ] parse-literal ; M: vlist pprint-delims drop \ VL{ \ } ; M: vlist >pprint-sequence ; @@ -88,7 +88,7 @@ M: valist assoc-like INSTANCE: valist assoc ; -SYNTAX: VA{ \ } [ >valist ] parse-literal ; +SYNTAX: \ VA{ \ } [ >valist ] parse-literal ; M: valist pprint-delims drop \ VA{ \ } ; M: valist >pprint-sequence >alist ; diff --git a/language/functors/backend/backend.factor b/language/functors/backend/backend.factor index a67a5821b7..818f2682f8 100644 --- a/language/functors/backend/backend.factor +++ b/language/functors/backend/backend.factor @@ -16,6 +16,8 @@ SYNTAX: \ FUNCTOR-SYNTAX: : scan-param ( -- obj ) scan-object literalize ; +: scan-escaped-param ( -- obj ) scan-escaped-word literalize ; + : >string-param ( string -- string/param ) dup search dup lexical? [ nip ] [ drop ] if ; diff --git a/language/functors/functors.factor b/language/functors/functors.factor index 55ca5be4fb..48e9e4115b 100644 --- a/language/functors/functors.factor +++ b/language/functors/functors.factor @@ -110,8 +110,9 @@ FUNCTOR-SYNTAX: \ symbol: scan-param suffix! \ define-symbol suffix! ; +! Handles SYNTAX: \ foo: FUNCTOR-SYNTAX: \ SYNTAX: - scan-param suffix! + scan-escaped-param suffix! parse-definition* \ define-syntax suffix! ; diff --git a/modern-transition.factor b/modern-transition.factor index bf45a1c5ed..08755a18ec 100644 --- a/modern-transition.factor +++ b/modern-transition.factor @@ -4,27 +4,11 @@ ! lexable-core-paths [ dup . flush path>literals ] map-zip "resource:language" vocabs-from -{ "constructors" "descriptive" "eval" "functors" "literals" -"match" "method-chains" "multi-methods" "multiline" -"pair-methods" "peg" "promises" "shuffle" "tr" "tuple-arrays" -"variables" "variants" "alien.data" "alien.endian" "alien.fortran" -"alien.syntax" "alien.data.map" "classes.struct" -"classes.struct.vectored" "compiler.codegen" "functors.backend" -"compiler.cfg.dataflow-analysis" "compiler.cfg.renaming.functor" -"compiler.cfg.registers" "cpu.8080.emulator" "definitions.icons" -"compiler.cfg.instructions.syntax" "cpu.x86.assembler.syntax" -"io.encodings.euc" "peg.ebnf" "prettyprint.stylesheet" "slots.syntax" - } diff +{ } diff [ dup . flush vocab>literals ] map-zip "resource:collections" vocabs-from -{ "bit-arrays" -"bit-vectors" "dlists" "linked-assocs" "nibble-arrays" -"specialized-arrays" "specialized-vectors" "suffix-arrays" -"trees" "vlists" "arrays.shaped" "byte-arrays.hex" -"hash-sets.identity" "hash-sets.numbers" "hash-sets.sequences" -"hashtables.numbers" "hashtables.sequences" "persistent.hashtables" -"memory.pools" "persistent.vectors" "trees.avl" "trees.splay" +{ } diff [ dup . flush vocab>literals ] map-zip