From d54ac497c637025292d28fe1718e6f9d28e4c30d Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 6 Jun 2016 17:00:20 -0700 Subject: [PATCH] ffi, libs: working on syntax fixes. --- .../apple-script/apple-script-docs.factor | 2 +- ffi/cocoa/apple-script/apple-script.factor | 4 +- ffi/cocoa/cocoa.factor | 16 +++-- ffi/cocoa/subclassing/subclassing.factor | 6 +- ffi/core-foundation/strings/strings.factor | 2 +- .../gobject-introspection.factor | 11 ++-- ffi/mongodb/tuple/tuple.factor | 2 +- ffi/opencl/syntax/syntax.factor | 2 +- ffi/opengl/gl/extensions/extensions.factor | 2 +- ffi/python/syntax/syntax.factor | 6 +- ffi/windows/com/syntax/syntax.factor | 5 +- ffi/x11/syntax/syntax.factor | 2 +- libs/annotations/annotations.factor | 2 +- libs/dice/dice.factor | 2 +- libs/infix/infix-docs.factor | 30 +++++----- libs/infix/infix-tests.factor | 60 +++++++++---------- libs/infix/infix.factor | 6 +- modern-transition.factor | 20 +------ 18 files changed, 81 insertions(+), 99 deletions(-) diff --git a/ffi/cocoa/apple-script/apple-script-docs.factor b/ffi/cocoa/apple-script/apple-script-docs.factor index 9e468efb7d..53718cd052 100644 --- a/ffi/cocoa/apple-script/apple-script-docs.factor +++ b/ffi/cocoa/apple-script/apple-script-docs.factor @@ -8,6 +8,6 @@ HELP: run-apple-script { $notes "Currently, return values are unsupported." } ; HELP: APPLESCRIPT: -{ $syntax "APPLESCRIPT: word ...applescript... ;APPLESCRIPT" } +{ $syntax "APPLESCRIPT: word ...applescript... APPLESCRIPT;" } { $values { "word" "a new word to define" } { "...applescript..." "AppleScript source text" } } { $description "Defines a word that when called will run the provided uncompiled AppleScript. The word has stack effect " { $snippet "( -- )" } " due to return values being currently unsupported." } ; diff --git a/ffi/cocoa/apple-script/apple-script.factor b/ffi/cocoa/apple-script/apple-script.factor index d634ecfca1..f733451d36 100644 --- a/ffi/cocoa/apple-script/apple-script.factor +++ b/ffi/cocoa/apple-script/apple-script.factor @@ -11,6 +11,6 @@ in: cocoa.apple-script send\ initWithSource: send\ autorelease f send\ executeAndReturnError: drop ; -SYNTAX: APPLESCRIPT: - scan-new-word ";APPLESCRIPT" parse-multiline-string +SYNTAX: \ APPLESCRIPT: + scan-new-word "APPLESCRIPT;" parse-multiline-string [ run-apple-script ] curry ( -- ) define-declared ; diff --git a/ffi/cocoa/cocoa.factor b/ffi/cocoa/cocoa.factor index 89fbfa7c8c..faa75e857d 100644 --- a/ffi/cocoa/cocoa.factor +++ b/ffi/cocoa/cocoa.factor @@ -13,13 +13,13 @@ symbol: sent-messages sent-messages (remember-send) ; SYNTAX: -> scan-token dup remember-send suffix! \ send suffix! ; -SYNTAX: send\ scan-token dup remember-send suffix! \ send suffix! ; +SYNTAX: \ send\ scan-token dup remember-send suffix! \ send suffix! ; -SYNTAX: SEL: +SYNTAX: \ SEL: scan-token [ remember-send ] [ suffix! \ cocoa.messages:selector suffix! ] bi ; -SYNTAX: sel\ +SYNTAX: \ sel\ scan-token [ remember-send ] [ suffix! \ cocoa.messages:selector suffix! ] bi ; @@ -29,8 +29,8 @@ symbol: super-sent-messages : remember-super-send ( selector -- ) super-sent-messages (remember-send) ; -SYNTAX: SUPER-> scan-token dup remember-super-send suffix! \ super-send suffix! ; -SYNTAX: super-send\ scan-token dup remember-super-send suffix! \ super-send suffix! ; +SYNTAX: \ SUPER-> scan-token dup remember-super-send suffix! \ super-send suffix! ; +SYNTAX: \ super-send\ scan-token dup remember-super-send suffix! \ super-send suffix! ; symbol: frameworks @@ -38,11 +38,9 @@ frameworks [ V{ } clone ] initialize [ frameworks get [ load-framework ] each ] "cocoa" add-startup-hook -SYNTAX: FRAMEWORK: scan-token [ load-framework ] [ frameworks get push ] bi ; -SYNTAX: framework: scan-token [ load-framework ] [ frameworks get push ] bi ; +SYNTAX: \ framework: scan-token [ load-framework ] [ frameworks get push ] bi ; -SYNTAX: IMPORT: scan-token [ ] import-objc-class ; -SYNTAX: import: scan-token [ ] import-objc-class ; +SYNTAX: \ import: scan-token [ ] import-objc-class ; "Importing Cocoa classes..." print diff --git a/ffi/cocoa/subclassing/subclassing.factor b/ffi/cocoa/subclassing/subclassing.factor index 0874c49605..6d87d947a1 100644 --- a/ffi/cocoa/subclassing/subclassing.factor +++ b/ffi/cocoa/subclassing/subclassing.factor @@ -71,10 +71,10 @@ in: cocoa.subclassing TUPLE: cocoa-protocol name ; C: cocoa-protocol ; -SYNTAX: COCOA-PROTOCOL: +SYNTAX: \ COCOA-PROTOCOL: scan-token suffix! ; -SYNTAX: CLASS: +SYNTAX: \ CLASS: scan-token "<" expect scan-token @@ -99,7 +99,7 @@ SYNTAX: CLASS: [ [ make-local ] map ] H{ } make (parse-lambda) ?rewrite-closures first ; -SYNTAX: METHOD: +SYNTAX: \ METHOD: scan-c-type parse-selector parse-method-body [ swap ] 2dip 4array ";" expect diff --git a/ffi/core-foundation/strings/strings.factor b/ffi/core-foundation/strings/strings.factor index 005edb1f46..78c1beb096 100644 --- a/ffi/core-foundation/strings/strings.factor +++ b/ffi/core-foundation/strings/strings.factor @@ -96,7 +96,7 @@ FUNCTION: CFStringRef CFCopyTypeIDDescription ( CFTypeID type_id ) ; : CFType>description ( cf -- description ) CFGetTypeID [ CFCopyTypeIDDescription &CFRelease CF>string ] with-destructors ; -SYNTAX: CFSTRING: +SYNTAX: \ CFSTRING: scan-new-word scan-object ";" expect [ drop ] [ '[ _ [ _ ] initialize-alien ] ] 2bi ( -- alien ) define-declared ; diff --git a/ffi/gobject-introspection/gobject-introspection.factor b/ffi/gobject-introspection/gobject-introspection.factor index 46e544191c..82d0d54918 100755 --- a/ffi/gobject-introspection/gobject-introspection.factor +++ b/ffi/gobject-introspection/gobject-introspection.factor @@ -53,18 +53,17 @@ M: gir-not-found summary PRIVATE> -SYNTAX: GIR: scan-token define-gir-vocab ; -SYNTAX: gir: scan-token define-gir-vocab ; +SYNTAX: \ gir: scan-token define-gir-vocab ; -SYNTAX: IMPLEMENT-STRUCTS: +SYNTAX: \ IMPLEMENT-STRUCTS: ";" parse-tokens implement-structs [ swap append! ] change-global ; -SYNTAX: FOREIGN-ATOMIC-TYPE: +SYNTAX: \ FOREIGN-ATOMIC-TYPE: scan-token scan-object ";" expect swap register-atomic-type ; -SYNTAX: FOREIGN-ENUM-TYPE: +SYNTAX: \ FOREIGN-ENUM-TYPE: scan-token scan-object ";" expect swap register-enum-type ; -SYNTAX: FOREIGN-RECORD-TYPE: +SYNTAX: \ FOREIGN-RECORD-TYPE: scan-token scan-object ";" expect swap register-record-type ; diff --git a/ffi/mongodb/tuple/tuple.factor b/ffi/mongodb/tuple/tuple.factor index b2fae29d95..e72e724b8c 100644 --- a/ffi/mongodb/tuple/tuple.factor +++ b/ffi/mongodb/tuple/tuple.factor @@ -9,7 +9,7 @@ FROM: mongodb.tuple.persistent => assoc>tuple ; in: mongodb.tuple -SYNTAX: MDBTUPLE: +SYNTAX: \ MDBTUPLE: parse-tuple-definition mdb-check-slots define-tuple-class ; diff --git a/ffi/opencl/syntax/syntax.factor b/ffi/opencl/syntax/syntax.factor index e8fd79c0f1..cccf0045b7 100644 --- a/ffi/opencl/syntax/syntax.factor +++ b/ffi/opencl/syntax/syntax.factor @@ -4,5 +4,5 @@ USING: classes.parser classes.singleton classes.union kernel lexer sequences ; in: opencl.syntax -SYNTAX: SINGLETONS-UNION: +SYNTAX: \ SINGLETONS-UNION: scan-new-class ";" parse-tokens [ create-class-in [ define-singleton-class ] keep ] map define-union-class ; diff --git a/ffi/opengl/gl/extensions/extensions.factor b/ffi/opengl/gl/extensions/extensions.factor index 97712c090d..67eefe3402 100644 --- a/ffi/opengl/gl/extensions/extensions.factor +++ b/ffi/opengl/gl/extensions/extensions.factor @@ -47,7 +47,7 @@ reset-gl-function-number-counter names return function-effect define-declared ; -SYNTAX: GL-FUNCTION: +SYNTAX: \ GL-FUNCTION: gl-function-calling-convention scan-function-name "{" expect "}" parse-tokens over suffix diff --git a/ffi/python/syntax/syntax.factor b/ffi/python/syntax/syntax.factor index 98b13954f2..bcfd07e45d 100644 --- a/ffi/python/syntax/syntax.factor +++ b/ffi/python/syntax/syntax.factor @@ -61,12 +61,12 @@ symbol: current-context PRIVATE> -SYNTAX: PY-FROM: [ +SYNTAX: \ PY-FROM: [ current-context get f add-function ] scan-definitions ; inline -SYNTAX: PY-QUALIFIED-FROM: [ +SYNTAX: \ PY-QUALIFIED-FROM: [ current-context get t add-function ] scan-definitions ; inline -SYNTAX: PY-METHODS: [ add-method ] scan-definitions ; inline +SYNTAX: \ PY-METHODS: [ add-method ] scan-definitions ; inline diff --git a/ffi/windows/com/syntax/syntax.factor b/ffi/windows/com/syntax/syntax.factor index 2ae7932c03..1b802a51eb 100755 --- a/ffi/windows/com/syntax/syntax.factor +++ b/ffi/windows/com/syntax/syntax.factor @@ -82,7 +82,7 @@ ERROR: no-com-interface interface ; PRIVATE> -SYNTAX: COM-INTERFACE: +SYNTAX: \ COM-INTERFACE: CREATE-C-TYPE void* over typedef scan-object find-com-interface-definition @@ -92,8 +92,7 @@ SYNTAX: COM-INTERFACE: dup save-com-interface-definition define-words-for-com-interface ; -SYNTAX: GUID: scan-object string>guid suffix! ; -SYNTAX: guid: scan-object string>guid suffix! ; +SYNTAX: \ guid: scan-object string>guid suffix! ; use: vocabs.loader diff --git a/ffi/x11/syntax/syntax.factor b/ffi/x11/syntax/syntax.factor index 2aaf1ddbc8..3ba9bf3d60 100644 --- a/ffi/x11/syntax/syntax.factor +++ b/ffi/x11/syntax/syntax.factor @@ -3,7 +3,7 @@ USING: alien.syntax alien.parser words x11.io sequences kernel ; in: x11.syntax -SYNTAX: X-FUNCTION: +SYNTAX: \ X-FUNCTION: (FUNCTION:) make-function [ \ awaken-event-loop suffix ] dip define-declared ; diff --git a/libs/annotations/annotations.factor b/libs/annotations/annotations.factor index 74e5b0011c..4698884737 100644 --- a/libs/annotations/annotations.factor +++ b/libs/annotations/annotations.factor @@ -24,7 +24,7 @@ NAMEs. DEFINES ${NAME}s. WHERE : (NAME) ( str -- ) drop ; inline -SYNTAX: !NAME (parse-annotation) \ (NAME) suffix! ; +SYNTAX: \ !NAME (parse-annotation) \ (NAME) suffix! ; : NAMEs ( -- usages ) \ (NAME) (non-annotation-usage) ; diff --git a/libs/dice/dice.factor b/libs/dice/dice.factor index 37c9f49feb..b2a3564a7a 100644 --- a/libs/dice/dice.factor +++ b/libs/dice/dice.factor @@ -26,4 +26,4 @@ in: dice '[ _ _ random-roll ] ] if* ; -SYNTAX: ROLL: scan-token roll-quot append! ; +SYNTAX: \ roll: scan-token roll-quot append! ; diff --git a/libs/infix/infix-docs.factor b/libs/infix/infix-docs.factor index d7c6ba20e8..cba44d1385 100644 --- a/libs/infix/infix-docs.factor +++ b/libs/infix/infix-docs.factor @@ -3,23 +3,23 @@ USING: help.syntax help.markup math math.functions prettyprint locals sequences ; in: infix -HELP: [infix -{ $syntax "[infix ... infix]" } +HELP: infix[[ +{ $syntax "infix[[ ... ]]" } { $description "Parses the infix code inside the brackets, converts it to stack code and executes it." } { $examples { $example "USING: infix prettyprint ;" "in: scratchpad" - "[infix 8+2*3 infix] ." + "infix[[ 8+2*3 ]] ." "14" } $nl - { $link postpone\ [infix } " isn't that useful by itself, as it can only access literal numbers and no variables. It is designed to be used together with locals; for example with " { $link postpone\ :: } " :" + { $link \ infix[[ } " isn't that useful by itself, as it can only access literal numbers and no variables. It is designed to be used together with locals; for example with " { $link postpone\ :: } " :" { $example "USING: infix locals math.functions prettyprint ;" "in: scratchpad" ":: quadratic-equation ( a b c -- z- z+ )" - " [infix (-b-sqrt(b*b-4*a*c)) / (2*a) infix]" - " [infix (-b+sqrt(b*b-4*a*c)) / (2*a) infix] ;" + " infix[[ (-b-sqrt(b*b-4*a*c)) / (2*a) ]]" + " infix[[ (-b+sqrt(b*b-4*a*c)) / (2*a) ]] ;" "1 0 -1 quadratic-equation . ." "1.0\n-1.0" } @@ -28,8 +28,8 @@ HELP: [infix ARTICLE: "infix" "Infix notation" "The " { $vocab-link "infix" } " vocabulary implements support for infix notation in Factor source code." { $subsections - postpone\ [infix - postpone\ INFIX:: + \ infix[[ + \ INFIX:: } "The usual infix math operators are supported:" { $list @@ -43,7 +43,7 @@ ARTICLE: "infix" "Infix notation" "The standard precedence rules apply: Grouping with parentheses before " { $snippet "*" } ", " { $snippet "/" } "and " { $snippet "%" } " before " { $snippet "+" } " and " { $snippet "-" } "." { $example "use: infix" - "[infix 5-40/10*2 infix] ." + "infix[[ 5-40/10*2 ]] ." "-3" } $nl @@ -55,34 +55,34 @@ $nl { $example "USING: infix locals math.functions ;" ":: binary_entropy ( p -- h )" - " [infix -(p*log(p) + (1-p)*log(1-p)) / log(2) infix] ;" - "[infix binary_entropy( sqrt(0.25) ) infix] ." + " infix[[ -(p*log(p) + (1-p)*log(1-p)) / log(2) ]] ;" + "infix[[ binary_entropy( sqrt(0.25) ) ]] ." "1.0" } $nl "You can access " { $vocab-link "sequences" } " inside infix expressions with the familiar " { $snippet "seq[index]" } " notation." { $example "USING: arrays locals infix ;" - "let[ { 1 2 3 4 } :> myarr [infix myarr[4/2]*3 infix] ] ." + "let[ { 1 2 3 4 } :> myarr infix[[ myarr[4/2]*3 ]] ] ." "9" } $nl "You can create sub-" { $vocab-link "sequences" } " inside infix expressions using " { $snippet "seq[from:to]" } " notation." { $example "USING: arrays locals infix ;" - "let[ \"foobar\" :> s [infix s[0:3] infix] ] ." + "let[ \"foobar\" :> s infix[[ s[0:3] ]] ] ." "\"foo\"" } $nl "Additionally, you can step through " { $vocab-link "sequences" } " with " { $snippet "seq[from:to:step]" } " notation." { $example "USING: arrays locals infix ;" - "let[ \"reverse\" :> s [infix s[::-1] infix] ] ." + "let[ \"reverse\" :> s infix[[ s[::-1] ]] ] ." "\"esrever\"" } { $example "USING: arrays locals infix ;" - "let[ \"0123456789\" :> s [infix s[::2] infix] ] ." + "let[ \"0123456789\" :> s infix[[ s[::2] ]] ] ." "\"02468\"" } ; diff --git a/libs/infix/infix-tests.factor b/libs/infix/infix-tests.factor index 33189829b2..04db6d2900 100644 --- a/libs/infix/infix-tests.factor +++ b/libs/infix/infix-tests.factor @@ -4,19 +4,19 @@ USING: infix infix.private kernel locals math math.functions tools.test ; in: infix.tests -{ 0 } [ [infix 0 infix] ] unit-test -{ 0.5 } [ [infix 3.0/6 infix] ] unit-test -{ 1+2/3 } [ [infix 5/3 infix] ] unit-test -{ 3 } [ [infix 2*7%3+1 infix] ] unit-test -{ 1419857 } [ [infix 17**5 infix] ] unit-test -{ 1 } [ [infix 2- +{ 0 } [ infix[[ 0 ]] ] unit-test +{ 0.5 } [ infix[[ 3.0/6 ]] ] unit-test +{ 1+2/3 } [ infix[[ 5/3 ]] ] unit-test +{ 3 } [ infix[[ 2*7%3+1 ]] ] unit-test +{ 1419857 } [ infix[[ 17**5 ]] ] unit-test +{ 1 } [ infix[[ 2- 1 -5* - 0 infix] ] unit-test + 0 ]] ] unit-test -{ 0.0 } [ [infix sin(0) infix] ] unit-test -{ 10 } [ [infix lcm(2,5) infix] ] unit-test -{ 1.0 } [ [infix +cos(-0*+3) infix] ] unit-test +{ 0.0 } [ infix[[ sin(0) ]] ] unit-test +{ 10 } [ infix[[ lcm(2,5) ]] ] unit-test +{ 1.0 } [ infix[[ +cos(-0*+3) ]] ] unit-test { f } [ 2 \ gcd check-word ] unit-test ! multiple return values { f } [ 1 \ drop check-word ] unit-test ! no return value @@ -24,32 +24,32 @@ in: infix.tests : qux ( -- x ) 2 ; { t } [ 0 \ qux check-word ] unit-test -{ 8 } [ [infix qux()*3+2 infix] ] unit-test +{ 8 } [ infix[[ qux()*3+2 ]] ] unit-test : foobar ( x -- y ) 1 + ; { t } [ 1 \ foobar check-word ] unit-test -{ 4 } [ [infix foobar(3*5%12) infix] ] unit-test +{ 4 } [ infix[[ foobar(3*5%12) ]] ] unit-test : stupid_function ( x x x x x -- y ) + + + + ; { t } [ 5 \ stupid_function check-word ] unit-test -{ 10 } [ [infix stupid_function (0, 1, 2, 3, 4) infix] ] unit-test +{ 10 } [ infix[[ stupid_function (0, 1, 2, 3, 4) ]] ] unit-test -{ -1 } [ let[ 1 :> a [infix -a infix] ] ] unit-test +{ -1 } [ let[ 1 :> a infix[[ -a ]] ] ] unit-test -{ char: f } [ let[ "foo" :> s [infix s[0] infix] ] ] unit-test -{ char: r } [ let[ "bar" :> s [infix s[-1] infix] ] ] unit-test -{ "foo" } [ let[ "foobar" :> s [infix s[0:3] infix] ] ] unit-test -{ "foo" } [ let[ "foobar" :> s [infix s[:3] infix] ] ] unit-test -{ "bar" } [ let[ "foobar" :> s [infix s[-3:] infix] ] ] unit-test -{ "boof" } [ let[ "foobar" :> s [infix s[-3::-1] infix] ] ] unit-test -{ "foobar" } [ let[ "foobar" :> s [infix s[:] infix] ] ] unit-test -{ "foa" } [ let[ "foobar" :> s [infix s[::2] infix] ] ] unit-test -{ "bar" } [ let[ "foobar" :> s [infix s[-3:100] infix] ] ] unit-test -{ "foobar" } [ let[ "foobar" :> s [infix s[-100:100] infix] ] ] unit-test -{ "olh" } [ let[ "hello" :> s [infix s[4::-2] infix] ] ] unit-test -{ "rb" } [ let[ "foobar" :> s [infix s[:1:-2] infix] ] ] unit-test -{ "foa" } [ let[ "foobar" :> s [infix s[:-1:2] infix] ] ] unit-test -{ "rbo" } [ let[ "foobar" :> s [infix s[::-2] infix] ] ] unit-test -{ "rbo" } [ let[ "foobar" :> s [infix s[:0:-2] infix] ] ] unit-test -{ "rb" } [ let[ "foobar" :> s [infix s[:-5:-2] infix] ] ] unit-test +{ char: f } [ let[ "foo" :> s infix[[ s[0] ]] ] ] unit-test +{ char: r } [ let[ "bar" :> s infix[[ s[-1] ]] ] ] unit-test +{ "foo" } [ let[ "foobar" :> s infix[[ s[0:3] ]] ] ] unit-test +{ "foo" } [ let[ "foobar" :> s infix[[ s[:3] ]] ] ] unit-test +{ "bar" } [ let[ "foobar" :> s infix[[ s[-3:] ]] ] ] unit-test +{ "boof" } [ let[ "foobar" :> s infix[[ s[-3::-1] ]] ] ] unit-test +{ "foobar" } [ let[ "foobar" :> s infix[[ s[:] ]] ] ] unit-test +{ "foa" } [ let[ "foobar" :> s infix[[ s[::2] ]] ] ] unit-test +{ "bar" } [ let[ "foobar" :> s infix[[ s[-3:100] ]] ] ] unit-test +{ "foobar" } [ let[ "foobar" :> s infix[[ s[-100:100] ]] ] ] unit-test +{ "olh" } [ let[ "hello" :> s infix[[ s[4::-2] ]] ] ] unit-test +{ "rb" } [ let[ "foobar" :> s infix[[ s[:1:-2] ]] ] ] unit-test +{ "foa" } [ let[ "foobar" :> s infix[[ s[:-1:2] ]] ] ] unit-test +{ "rbo" } [ let[ "foobar" :> s infix[[ s[::-2] ]] ] ] unit-test +{ "rbo" } [ let[ "foobar" :> s infix[[ s[:0:-2] ]] ] ] unit-test +{ "rb" } [ let[ "foobar" :> s infix[[ s[:-5:-2] ]] ] ] unit-test INFIX:: foo ( x y -- z ) x**2-abs(y) ; diff --git a/libs/infix/infix.factor b/libs/infix/infix.factor index 4dd94f1abc..b7fb2b6e96 100644 --- a/libs/infix/infix.factor +++ b/libs/infix/infix.factor @@ -117,8 +117,8 @@ M: ast-function infix-codegen PRIVATE> -SYNTAX: [infix - "infix]" parse-infix-quotation suffix! \ call suffix! ; +SYNTAX: \ infix[[ + "]]" parse-infix-quotation suffix! \ call suffix! ; -SYNTAX: INFIX:: (INFIX::) define-declared ; +SYNTAX: \ INFIX:: (INFIX::) define-declared ; diff --git a/modern-transition.factor b/modern-transition.factor index 08755a18ec..999ee9bf34 100644 --- a/modern-transition.factor +++ b/modern-transition.factor @@ -8,30 +8,16 @@ [ dup . flush vocab>literals ] map-zip "resource:collections" vocabs-from -{ +{ "specialized-arrays" "specialized-vectors" } diff [ dup . flush vocab>literals ] map-zip "resource:ffi" vocabs-from -{ "x11.syntax" "windows.com.syntax" "python.syntax" "opengl.gl.extensions" - "opencl.syntax" "mongodb.tuple" "cuda.syntax" "core-foundation.strings" - "cocoa.subclassing" "cocoa" "cocoa.apple-script" "gobject-introspection" } diff +{ } diff [ dup . flush vocab>literals ] map-zip "resource:libs" vocabs-from -{ "annotations" "brainfuck" "dice" "infix" "logging" -"metar" "money" "poker" "qw" "roles" "roman" "slides" -"svg" "urls" "xkcd" "calendar.holidays" -"calendar.holidays.canada" "calendar.holidays.us" -"colors.constants" "colors.hex" "gml.macros" -"gml.parser" "gml.runtime" "html.templates.chloe.syntax" -"infix.tokenizer" "irc.messages.base" -"math.complex" "math.rectangles" "math.blas.matrices" -"math.blas.vectors" "math.derivatives.syntax" -"math.vectors.simd" "math.vectors.simd.cords" "peg.pl0" -"peg.javascript.parser" "peg.javascript.tokenizer" -"unicode.categories" "units.reduction" "xml.errors" -"xml.syntax" "xmode.loader.syntax" "yaml.conversion" +{ } diff [ dup . flush vocab>literals ] map-zip