From 565f97950a35e5dd001887c12edc32150b220906 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Thu, 15 Nov 2007 23:09:38 -0600 Subject: [PATCH 001/285] Fix redundancy in tty-listener --- extra/raptor/raptor.factor | 5 ++--- extra/raptor/readme-0.1.1 | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/extra/raptor/raptor.factor b/extra/raptor/raptor.factor index b0b9c05895..a3b4cbfd0a 100644 --- a/extra/raptor/raptor.factor +++ b/extra/raptor/raptor.factor @@ -40,9 +40,8 @@ USING: io io.files io.streams.lines io.streams.plain io.streams.duplex listener ; : tty-listener ( tty -- ) - [ ] - [ ] - bi [ listener ] with-stream ; + [ ] [ ] bi + [ listener ] with-stream ; : forever ( quot -- ) [ call ] [ forever ] bi ; diff --git a/extra/raptor/readme-0.1.1 b/extra/raptor/readme-0.1.1 index 303fb416c4..bb5d4c0ff8 100644 --- a/extra/raptor/readme-0.1.1 +++ b/extra/raptor/readme-0.1.1 @@ -8,9 +8,22 @@ Raptor Linux is a mod of Ubuntu 6.06 (Dapper Drake) This is unlikely to work on another version of Ubuntu, much less another Linux distribution. +*** Features *** + + * /sbin/init is replaced with Factor + * Virtual terminals managed by Factor + * Listeners run on virtual terminals + * Native support for static ip networking + * Crontab replacement + *** Install *** + # mkdir -v /etc/raptor + + # cp -v /scratch/factor/extra/raptor/{config,cronjobs}.factor /etc/raptor + ( scratchpad ) USE: raptor + ( scratchpad ) reload-raptor-config ( scratchpad ) save # mv -v /sbin/{init,init.orig} @@ -19,10 +32,6 @@ another Linux distribution. # cp -v /scratch/factor/factor.image /sbin/init.image - # mkdir -v /etc/raptor - - # cp -v /scratch/factor/extra/raptor/config.factor /etc/raptor/config.factor - *** Static IP networking *** If you use a static IP in your network then Factor can take care of From f927a01370f3d7d77717f64635c65cd9bc71a534 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Sun, 18 Nov 2007 15:19:02 -0600 Subject: [PATCH 002/285] unix: Added words to inspect status from wait/waitpid --- extra/unix/unix.factor | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/extra/unix/unix.factor b/extra/unix/unix.factor index 0854754dcb..10ff7a9efa 100644 --- a/extra/unix/unix.factor +++ b/extra/unix/unix.factor @@ -166,6 +166,10 @@ FUNCTION: time_t time ( time_t* t ) ; FUNCTION: int unlink ( char* path ) ; FUNCTION: int utimes ( char* path, timeval[2] times ) ; +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! wait and waitpid +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Flags for waitpid : WNOHANG 1 ; @@ -176,7 +180,27 @@ FUNCTION: int utimes ( char* path, timeval[2] times ) ; : WCONTINUED 8 ; : WNOWAIT HEX: 1000000 ; +! Examining status + +: WTERMSIG ( status -- value ) HEX: 7f bitand ; + +: WIFEXITED ( status -- ? ) WTERMSIG zero? ; + +: WEXITSTATUS ( status -- value ) HEX: ff00 bitand -8 shift ; + +: WIFSIGNALED ( status -- ? ) HEX: 7f bitand 1+ -1 shift 0 > ; + +: WCOREFLAG ( -- value ) HEX: 80 ; + +: WCOREDUMP ( status -- ? ) WCOREFLAG bitand zero? not ; + +: WIFSTOPPED ( status -- ? ) HEX: ff bitand HEX: 7f = ; + +: WSTOPSIG ( status -- value ) WEXITSTATUS ; + FUNCTION: pid_t wait ( int* status ) ; FUNCTION: pid_t waitpid ( pid_t wpid, int* status, int options ) ; +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + FUNCTION: ssize_t write ( int fd, void* buf, size_t nbytes ) ; From 76146310db62e8f265e078b0f035e4861906ee72 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Tue, 20 Nov 2007 01:57:22 -0600 Subject: [PATCH 003/285] Add `{ parsing word to bake --- extra/bake/bake.factor | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/extra/bake/bake.factor b/extra/bake/bake.factor index 5e1700c6e2..437a42d546 100644 --- a/extra/bake/bake.factor +++ b/extra/bake/bake.factor @@ -1,6 +1,6 @@ -USING: kernel parser namespaces quotations vectors strings -sequences assocs tuples math combinators ; +USING: kernel parser namespaces quotations arrays vectors strings + sequences assocs tuples math combinators ; IN: bake @@ -48,4 +48,8 @@ DEFER: bake : bake-items ( seq -- ) [ bake-item ] each ; : bake ( seq -- seq ) - [ reset-building save-exemplar bake-items finish-baking ] with-scope ; \ No newline at end of file + [ reset-building save-exemplar bake-items finish-baking ] with-scope ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: `{ \ } [ >array ] parse-literal \ bake parsed ; parsing \ No newline at end of file From 350a23e525f10f8041db3c2a02c12f6d71ee219c Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Tue, 20 Nov 2007 01:57:44 -0600 Subject: [PATCH 004/285] Add factor-refresh-all function to factor.el --- misc/factor.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/misc/factor.el b/misc/factor.el index 19e29843d6..88af0a6dab 100644 --- a/misc/factor.el +++ b/misc/factor.el @@ -166,6 +166,9 @@ (beginning-of-line) (insert "! ")) +(defun factor-refresh-all () + (interactive) + (comint-send-string "*factor*" "refresh-all\n")) (define-key factor-mode-map "\C-c\C-f" 'factor-run-file) (define-key factor-mode-map "\C-c\C-r" 'factor-send-region) From 1d4d78c2ce404e2827488d2bced2b15710cb5512 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Tue, 20 Nov 2007 01:58:20 -0600 Subject: [PATCH 005/285] Add the new wait-loop system to unix.process --- extra/unix/process/process.factor | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/extra/unix/process/process.factor b/extra/unix/process/process.factor index 7f06f903ac..a99611aba6 100644 --- a/extra/unix/process/process.factor +++ b/extra/unix/process/process.factor @@ -31,11 +31,23 @@ IN: unix.process ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! This is kludgy. We need a better implementation. +USING: kernel alien.c-types namespaces continuations threads assocs unix + combinators.cleave ; -USE: threads +SYMBOL: pid-wait -: wait-for-pid ( pid -- ) - dup "int" WNOHANG waitpid - 0 = [ 100 sleep wait-for-pid ] [ drop ] if ; +! KEY | VALUE +! ----------- +! pid | continuation +: init-pid-wait ( -- ) H{ } clone pid-wait set-global ; + +: wait-for-pid ( pid -- status ) [ pid-wait get set-at stop ] curry callcc1 ; + +: wait-loop ( -- ) + -1 0 tuck WNOHANG waitpid ! &status return + [ *int ] [ pid-wait get delete-at* drop ] bi* ! status ? + dup [ schedule-thread-with ] [ 2drop ] if + 250 sleep wait-loop ; + +: start-wait-loop ( -- ) init-pid-wait [ wait-loop ] in-thread ; \ No newline at end of file From bbcd7bc6ea2ab9a5ff7cc5b1c98776aee9de90f0 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Tue, 20 Nov 2007 01:59:04 -0600 Subject: [PATCH 006/285] Modify raptor.cron --- extra/raptor/cron/cron.factor | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/extra/raptor/cron/cron.factor b/extra/raptor/cron/cron.factor index f004ba30d5..8158a03286 100644 --- a/extra/raptor/cron/cron.factor +++ b/extra/raptor/cron/cron.factor @@ -1,5 +1,6 @@ -USING: kernel threads sequences calendar combinators.cleave combinators.lib ; +USING: kernel namespaces threads sequences calendar + combinators.cleave combinators.lib ; IN: raptor.cron @@ -46,3 +47,16 @@ C: when : schedule ( when quot -- ) [ recurring-job ] curry curry in-thread ; +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +SYMBOL: cron-jobs-hourly +SYMBOL: cron-jobs-daily +SYMBOL: cron-jobs-weekly +SYMBOL: cron-jobs-monthly + +: schedule-cron-jobs ( -- ) + { 17 } f f f f [ cron-jobs-hourly get call ] schedule + { 25 } { 6 } f f f [ cron-jobs-daily get call ] schedule + { 47 } { 6 } f f { 7 } [ cron-jobs-weekly get call ] schedule + { 52 } { 6 } { 1 } f f [ cron-jobs-monthly get call ] schedule ; + From bab5554cfe409af70b5cb127e58bd71e186d24de Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Tue, 20 Nov 2007 01:59:37 -0600 Subject: [PATCH 007/285] Refactor raptor a bit --- extra/raptor/raptor.factor | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/extra/raptor/raptor.factor b/extra/raptor/raptor.factor index a3b4cbfd0a..7e32463ea1 100644 --- a/extra/raptor/raptor.factor +++ b/extra/raptor/raptor.factor @@ -1,5 +1,6 @@ -USING: kernel parser namespaces threads unix.process combinators.cleave ; +USING: kernel parser namespaces threads sequences unix unix.process + combinators.cleave bake ; IN: raptor @@ -10,29 +11,29 @@ SYMBOL: reboot-hook SYMBOL: shutdown-hook SYMBOL: networking-hook +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + : reload-raptor-config ( -- ) "/etc/raptor/config.factor" run-file "/etc/raptor/cronjobs.factor" run-file ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -USING: sequences unix ; +: fork-exec-wait ( pathname args -- ) + fork dup 0 = [ drop exec drop ] [ 2nip wait-for-pid drop ] if ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +: forever ( quot -- ) [ call ] [ forever ] bi ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : start-service ( name -- ) "/etc/init.d/" swap " start" 3append system drop ; : stop-service ( name -- ) "/etc/init.d/" swap " stop" 3append system drop ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: fork-exec-wait ( pathname args -- ) - fork dup 0 = [ drop exec drop ] [ 2nip wait-for-pid ] if ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: respawn ( pathname args -- ) [ fork-exec-wait ] [ respawn ] 2bi ; - -: start-gettys ( -- ) - [ "/sbin/getty" { "getty" "38400" "tty5" } respawn ] in-thread - [ "/sbin/getty" { "getty" "38400" "tty6" } respawn ] in-thread ; +: getty ( tty -- ) `{ "/sbin/getty" "38400" , } fork-exec-wait ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -43,13 +44,6 @@ USING: io io.files io.streams.lines io.streams.plain io.streams.duplex [ ] [ ] bi [ listener ] with-stream ; -: forever ( quot -- ) [ call ] [ forever ] bi ; - -: start-listeners ( -- ) - [ [ "/dev/tty2" tty-listener ] forever ] in-thread - [ [ "/dev/tty3" tty-listener ] forever ] in-thread - [ [ "/dev/tty4" tty-listener ] forever ] in-thread ; - ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : start-networking ( -- ) networking-hook get call ; @@ -59,3 +53,4 @@ USING: io io.files io.streams.lines io.streams.plain io.streams.duplex : shutdown ( -- ) shutdown-hook get call ; MAIN: boot + From a2aea6a4d17353812b9b3c9561ba2297d88e4ea1 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Tue, 20 Nov 2007 02:03:16 -0600 Subject: [PATCH 008/285] Update raptor config and cronjobs --- extra/raptor/config.factor | 21 +++++++++--- extra/raptor/cronjobs.factor | 63 ++++++++++++++++-------------------- 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/extra/raptor/config.factor b/extra/raptor/config.factor index d06d8e3db0..386ddf7744 100644 --- a/extra/raptor/config.factor +++ b/extra/raptor/config.factor @@ -1,5 +1,7 @@ -USING: namespaces unix.linux.if unix.linux.ifreq unix.linux.route ; +USING: namespaces threads + unix.process unix.linux.if unix.linux.ifreq unix.linux.route + raptor.cron ; IN: raptor @@ -24,9 +26,12 @@ IN: raptor configure-route ] networking-hook set-global +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! boot-hook ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ + start-wait-loop ! rcS.d @@ -76,11 +81,17 @@ IN: raptor "rmnologin" start-service schedule-cron-jobs - start-listeners - start-gettys - + + [ [ "/dev/tty2" tty-listener ] forever ] in-thread + [ [ "/dev/tty3" tty-listener ] forever ] in-thread + [ [ "/dev/tty4" tty-listener ] forever ] in-thread + [ [ "/dev/tty5" getty ] forever ] in-thread + [ [ "/dev/tty6" getty ] forever ] in-thread + ] boot-hook set-global +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! reboot-hook ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ @@ -108,6 +119,8 @@ IN: raptor "reboot" stop-service ] reboot-hook set-global +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! shutdown-hook ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ diff --git a/extra/raptor/cronjobs.factor b/extra/raptor/cronjobs.factor index 394c213162..894e8e5ce7 100644 --- a/extra/raptor/cronjobs.factor +++ b/extra/raptor/cronjobs.factor @@ -1,5 +1,6 @@ -USING: kernel threads arrays sequences combinators.cleave raptor raptor.cron ; +USING: kernel namespaces threads arrays sequences combinators.cleave + raptor raptor.cron ; IN: raptor @@ -7,41 +8,33 @@ IN: raptor : fork-exec-args-wait ( args -- ) [ first ] [ ] bi fork-exec-wait ; +: run-script ( path -- ) 1array [ fork-exec-args-wait ] curry in-thread ; + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: cron-hourly ( -- ) ; - -: cron-daily ( -- ) - { "/etc/cron.daily/apt" - "/etc/cron.daily/aptitude" - "/etc/cron.daily/bsdmainutils" - "/etc/cron.daily/find.notslocate" - "/etc/cron.daily/logrotate" - "/etc/cron.daily/man-db" - "/etc/cron.daily/ntp-server" - "/etc/cron.daily/slocate" - "/etc/cron.daily/standard" - "/etc/cron.daily/sysklogd" - "/etc/cron.daily/tetex-bin" } - [ 1array [ fork-exec-args-wait ] in-thread drop ] each ; +[ + "/etc/cron.daily/apt" run-script + "/etc/cron.daily/aptitude" run-script + "/etc/cron.daily/bsdmainutils" run-script + "/etc/cron.daily/find.notslocate" run-script + "/etc/cron.daily/logrotate" run-script + "/etc/cron.daily/man-db" run-script + "/etc/cron.daily/ntp-server" run-script + "/etc/cron.daily/slocate" run-script + "/etc/cron.daily/standard" run-script + "/etc/cron.daily/sysklogd" run-script + "/etc/cron.daily/tetex-bin" run-script +] cron-jobs-daily set-global -: cron-weekly ( -- ) - { "/etc/cron.weekly/cvs" - "/etc/cron.weekly/man-db" - "/etc/cron.weekly/ntp-server" - "/etc/cron.weekly/popularity-contest" - "/etc/cron.weekly/sysklogd" } - [ 1array [ fork-exec-args-wait ] in-thread drop ] each ; +[ + "/etc/cron.weekly/cvs" run-script + "/etc/cron.weekly/man-db" run-script + "/etc/cron.weekly/ntp-server" run-script + "/etc/cron.weekly/popularity-contest" run-script + "/etc/cron.weekly/sysklogd" run-script +] cron-jobs-weekly set-global -: cron-monthly ( -- ) - { "/etc/cron.monthly/scrollkeeper" - "/etc/cron.monthly/standard" } - [ 1array [ fork-exec-args-wait ] in-thread drop ] each ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: schedule-cron-jobs ( -- ) - { 17 } f f f f [ cron-hourly ] schedule - { 25 } { 6 } f f f [ cron-daily ] schedule - { 47 } { 6 } f f { 7 } [ cron-weekly ] schedule - { 52 } { 6 } { 1 } f f [ cron-monthly ] schedule ; \ No newline at end of file +[ + "/etc/cron.monthly/scrollkeeper" run-script + "/etc/cron.monthly/standard" run-script +] cron-jobs-monthly set-global \ No newline at end of file From 4369dc61c237b299b2035a5d882b904da57905a1 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Wed, 21 Nov 2007 03:19:32 -0600 Subject: [PATCH 009/285] Planet Factor Atom feed --- extra/rss/rss.factor | 35 +++++++++++++++++++----------- extra/webapps/planet/planet.factor | 12 ++++++++++ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/extra/rss/rss.factor b/extra/rss/rss.factor index b0fdc65adb..458f09642f 100644 --- a/extra/rss/rss.factor +++ b/extra/rss/rss.factor @@ -1,24 +1,14 @@ -! Copyright (C) 2006 Chris Double. +! Copyright (C) 2006 Chris Double, Daniel Ehrenberg. ! See http://factorcode.org/license.txt for BSD license. IN: rss -! USING: kernel http-client xml xml-utils xml-data errors io strings -! sequences xml-writer parser-combinators lazy-lists entities ; USING: xml.utilities kernel promises parser-combinators assocs - parser-combinators.replace strings sequences xml.data xml.writer + strings sequences xml.data xml.writer io.streams.string combinators xml xml.entities io.files io - http.client ; + http.client namespaces xml.generator hashtables ; : ?children>string ( tag/f -- string/f ) [ children>string ] [ f ] if* ; -LAZY: '&' ( -- parser ) - "&" token - [ blank? ] satisfy &> - [ "&" swap add ] <@ ; - -: &>& ( string -- string ) - '&' replace ; - TUPLE: feed title link entries ; C: feed @@ -95,3 +85,22 @@ C: entry ] [ 2drop "Error retrieving newsfeed file" throw ] if ; + +! Atom generation +: simple-tag, ( content name -- ) + [ , ] tag, ; + +: (generate-atom) ( entry -- ) + "entry" [ + dup entry-title "title" simple-tag, + "link" over entry-link "href" associate contained*, + dup entry-pub-date "published" simple-tag, + entry-description "content" simple-tag, + ] tag, ; + +: generate-atom ( feed -- xml ) + "feed" [ + dup feed-title "title" simple-tag, + "link" over feed-link "href" associate contained*, + feed-entries [ (generate-atom) ] each + ] make-xml ; diff --git a/extra/webapps/planet/planet.factor b/extra/webapps/planet/planet.factor index 3f7fed6446..5b5879ff9e 100644 --- a/extra/webapps/planet/planet.factor +++ b/extra/webapps/planet/planet.factor @@ -123,3 +123,15 @@ SYMBOL: last-update [ update-thread ] in-thread ; "planet" "planet-factor" "extra/webapps/planet" web-app + +: merge-feeds ( feeds -- feed ) + [ feed-entries ] map concat sort-entries ; + +: planet-feed ( -- feed ) + default-blogroll get [ second news-get ] map merge-feeds + >r "[ planet-factor ]" "http://planet.factorcode.org" r> + generate-atom ; + +: feed.xml planet-feed ; + +\ feed.xml { } define-action From ea571c54dd2f219ab0c2b8d5339c6dfc63352fcd Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 21 Nov 2007 14:27:25 -0600 Subject: [PATCH 010/285] Add open_console() command line parameter and stubs on each platform Add Config.windows.nt --- vm/Config.windows.nt | 8 ++++++++ vm/Config.windows.nt.x86.32 | 9 ++------- vm/factor.c | 6 ++++++ vm/image.h | 1 + vm/os-unix.c | 2 ++ vm/os-unix.h | 1 + vm/os-windows-ce.c | 2 ++ vm/os-windows-ce.h | 1 + vm/os-windows-nt.c | 4 ++++ vm/os-windows-nt.h | 1 + 10 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 vm/Config.windows.nt diff --git a/vm/Config.windows.nt b/vm/Config.windows.nt new file mode 100644 index 0000000000..8c67b11c19 --- /dev/null +++ b/vm/Config.windows.nt @@ -0,0 +1,8 @@ +LIBS = -lm +EXE_SUFFIX=-nt +DLL_SUFFIX=-nt +PLAF_DLL_OBJS += vm/os-windows-nt.o +PLAF_EXE_OBJS += vm/resources.o +PLAF_EXE_OBJS += vm/main-windows-nt.o +CFLAGS += -mwindows +include vm/Config.windows diff --git a/vm/Config.windows.nt.x86.32 b/vm/Config.windows.nt.x86.32 index adc69b1e27..a8d4931b4d 100644 --- a/vm/Config.windows.nt.x86.32 +++ b/vm/Config.windows.nt.x86.32 @@ -1,7 +1,2 @@ -LIBS = -lm -EXE_SUFFIX=-nt -DLL_SUFFIX=-nt -PLAF_DLL_OBJS += vm/os-windows-nt.o -PLAF_EXE_OBJS += vm/resources.o -PLAF_EXE_OBJS += vm/main-windows-nt.o -include vm/Config.x86.32 vm/Config.windows +include vm/Config.windows.nt +include vm/Config.x86.32 diff --git a/vm/factor.c b/vm/factor.c index 690f5d490c..8719416b72 100755 --- a/vm/factor.c +++ b/vm/factor.c @@ -26,6 +26,7 @@ void default_parameters(F_PARAMETERS *p) p->secure_gc = false; p->fep = false; + p->console = false; } /* Get things started */ @@ -110,6 +111,8 @@ void init_factor_from_args(F_CHAR *image, int argc, F_CHAR **argv, bool embedded p.fep = true; else if(STRNCMP(argv[i],STR_FORMAT("-i="),3) == 0) p.image = argv[i] + 3; + else if(STRCMP(argv[i],STR_FORMAT("-console")) == 0) + p.console = true ; } init_factor(&p); @@ -135,6 +138,9 @@ void init_factor_from_args(F_CHAR *image, int argc, F_CHAR **argv, bool embedded nest_stacks(); + if(p.console) + open_console(); + if(p.fep) factorbug(); diff --git a/vm/image.h b/vm/image.h index 52b666254e..3774263031 100755 --- a/vm/image.h +++ b/vm/image.h @@ -32,6 +32,7 @@ typedef struct { CELL code_size; bool secure_gc; bool fep; + bool console; } F_PARAMETERS; void load_image(F_PARAMETERS *p); diff --git a/vm/os-unix.c b/vm/os-unix.c index 303c01491a..437a528fb8 100644 --- a/vm/os-unix.c +++ b/vm/os-unix.c @@ -256,3 +256,5 @@ void reset_stdio(void) fcntl(0,F_SETFL,0); fcntl(1,F_SETFL,0); } + +void open_console(void) { } diff --git a/vm/os-unix.h b/vm/os-unix.h index cbce7de985..85f760b5aa 100755 --- a/vm/os-unix.h +++ b/vm/os-unix.h @@ -39,3 +39,4 @@ s64 current_millis(void); void sleep_millis(CELL msec); void reset_stdio(void); +void open_console(void); diff --git a/vm/os-windows-ce.c b/vm/os-windows-ce.c index 1465e0c89f..e68a6385ae 100755 --- a/vm/os-windows-ce.c +++ b/vm/os-windows-ce.c @@ -46,3 +46,5 @@ void c_to_factor_toplevel(CELL quot) { c_to_factor(quot); } + +void open_console(void) { } diff --git a/vm/os-windows-ce.h b/vm/os-windows-ce.h index 959de89634..f1d6df6f3d 100755 --- a/vm/os-windows-ce.h +++ b/vm/os-windows-ce.h @@ -24,3 +24,4 @@ char *getenv(char *name); s64 current_millis(void); void c_to_factor_toplevel(CELL quot); +void open_console(void); diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index baa0a06c4b..7ea8155072 100755 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -88,3 +88,7 @@ void c_to_factor_toplevel(CELL quot) c_to_factor(quot); RemoveVectoredExceptionHandler((void*)exception_handler); } + +void open_console(void) +{ +} diff --git a/vm/os-windows-nt.h b/vm/os-windows-nt.h index f7c56c129d..f74c7b1883 100755 --- a/vm/os-windows-nt.h +++ b/vm/os-windows-nt.h @@ -18,3 +18,4 @@ typedef char F_SYMBOL; void c_to_factor_toplevel(CELL quot); long exception_handler(PEXCEPTION_POINTERS pe); +void open_console(void); From 01682c1cd2dcb5f95db776e4a2d1c6441c0f52aa Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 21 Nov 2007 14:31:36 -0600 Subject: [PATCH 011/285] Open a console when calling factorbug() --- vm/debug.c | 1 + 1 file changed, 1 insertion(+) diff --git a/vm/debug.c b/vm/debug.c index 55ffcadca6..2692bdf59c 100755 --- a/vm/debug.c +++ b/vm/debug.c @@ -213,6 +213,7 @@ void dump_objects(F_FIXNUM type) void factorbug(void) { reset_stdio(); + open_console(); printf("Starting low level debugger...\n"); printf(" Basic commands:\n"); From 0da81b301833a87dde90a620daa397908a2bbbdc Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 21 Nov 2007 14:47:15 -0600 Subject: [PATCH 012/285] Reuse existing console if present, or else open a new console, when -console is supplied --- vm/os-windows-nt.c | 10 ++++++++++ vm/os-windows-nt.h | 1 + 2 files changed, 11 insertions(+) diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index 7ea8155072..afd1e0ed3b 100755 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -91,4 +91,14 @@ void c_to_factor_toplevel(CELL quot) void open_console(void) { + if(!console_open) + { + if(!AttachConsole(ATTACH_PARENT_PROCESS)) + { + if(AllocConsole()) + console_open = true; + } + else + console_open = true; + } } diff --git a/vm/os-windows-nt.h b/vm/os-windows-nt.h index f74c7b1883..9e451f0301 100755 --- a/vm/os-windows-nt.h +++ b/vm/os-windows-nt.h @@ -18,4 +18,5 @@ typedef char F_SYMBOL; void c_to_factor_toplevel(CELL quot); long exception_handler(PEXCEPTION_POINTERS pe); +bool console_open; void open_console(void); From aacf88a72d67a47edc6b5cde8e139dcf4c124d64 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 20 Nov 2007 16:36:38 +1300 Subject: [PATCH 013/285] First cut at peg style packrat parser --- extra/peg/peg-docs.factor | 11 +++++ extra/peg/peg-tests.factor | 55 +++++++++++++++++++++++ extra/peg/peg.factor | 92 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 extra/peg/peg-docs.factor create mode 100644 extra/peg/peg-tests.factor create mode 100644 extra/peg/peg.factor diff --git a/extra/peg/peg-docs.factor b/extra/peg/peg-docs.factor new file mode 100644 index 0000000000..ec4a5d304d --- /dev/null +++ b/extra/peg/peg-docs.factor @@ -0,0 +1,11 @@ +! Copyright (C) 2007 Chris Double. +! See http://factorcode.org/license.txt for BSD license. +USING: help.markup help.syntax peg ; + +HELP: token +{ $values + { "string" "a string" } } +{ $description + "A parser generator that returns a parser that matches the given string." } +{ $example "\"begin foo end\" \"begin\" token parse" "result-here" } ; + diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor new file mode 100644 index 0000000000..20e4206357 --- /dev/null +++ b/extra/peg/peg-tests.factor @@ -0,0 +1,55 @@ +! Copyright (C) 2007 Chris Double. +! See http://factorcode.org/license.txt for BSD license. +! +USING: kernel tools.test strings namespaces arrays peg ; +IN: temporary + +{ 0 1 2 } [ + 0 next-id set-global get-next-id get-next-id get-next-id +] unit-test + +{ "0123456789" } [ + "0123456789" 0 0 state-tail parse-state-input >string +] unit-test + +{ "56789" } [ + "0123456789" 5 0 state-tail parse-state-input >string +] unit-test + +{ "789" } [ + "0123456789" 5 2 state-tail parse-state-input >string +] unit-test + +{ f } [ + "endbegin" 0 "begin" token parse +] unit-test + +{ "begin" "begin" "end" } [ + "beginend" 0 "begin" token parse + { parse-result-matched parse-result-ast parse-result-remaining } get-slots + parse-state-input >string +] unit-test + +{ f } [ + "" 0 CHAR: a CHAR: z range parse +] unit-test + +{ f } [ + "1bcd" 0 CHAR: a CHAR: z range parse +] unit-test + +{ CHAR: a } [ + "abcd" 0 CHAR: a CHAR: z range parse parse-result-ast +] unit-test + +{ CHAR: z } [ + "zbcd" 0 CHAR: a CHAR: z range parse parse-result-ast +] unit-test + +{ f } [ + "bad" 0 "a" token "b" token 2array seq parse +] unit-test + +{ "go" } [ + "good" 0 "g" token "o" token 2array seq parse parse-result-matched +] unit-test diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor new file mode 100644 index 0000000000..f5c3f4ab3e --- /dev/null +++ b/extra/peg/peg.factor @@ -0,0 +1,92 @@ +! Copyright (C) 2007 Chris Double. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel sequences strings namespaces math assocs combinators.lib ; +IN: peg + +TUPLE: parse-state input cache ; + +: ( input index -- state ) + tail-slice { set-parse-state-input } parse-state construct ; + +: get-cached ( pid state -- result ) + tuck parse-state-cache at [ + swap parse-state-input slice-from swap nth + ] [ + drop f + ] if* ; + +: state-tail ( state n -- state ) + dupd [ parse-state-cache ] dipd + [ parse-state-input ] dip tail-slice + { set-parse-state-cache set-parse-state-input } parse-state construct ; + +TUPLE: parse-result remaining matched ast ; + +: ( remaining matched ast -- parse-result ) + parse-result construct-boa ; + +SYMBOL: next-id + +: get-next-id ( -- number ) + next-id get-global 0 or dup 1+ next-id set-global ; + +TUPLE: parser id ; + +: init-parser ( parser -- parser ) + get-next-id parser construct-boa over set-delegate ; + +GENERIC: parse ( state parser -- result ) + +TUPLE: token-parser symbol ; + +M: token-parser parse ( state parser -- result ) + token-parser-symbol 2dup >r parse-state-input r> head? [ + dup >r length state-tail r> dup + ] [ + 2drop f + ] if ; + +: token ( string -- parser ) + token-parser construct-boa init-parser ; + +TUPLE: range-parser min max ; + +M: range-parser parse ( state parser -- result ) + over parse-state-input empty? [ + 2drop f + ] [ + 0 pick parse-state-input nth dup rot + { range-parser-min range-parser-max } get-slots between? [ + [ 1 state-tail ] dip dup + ] [ + 2drop f + ] if + ] if ; + +: range ( min max -- parser ) + range-parser construct-boa init-parser ; + +TUPLE: seq-parser parsers ; + +: do-seq-parser ( result parser -- result ) + [ dup parse-result-remaining ] dip parse [ + [ parse-result-remaining swap set-parse-result-remaining ] 2keep + [ parse-result-ast swap parse-result-ast push ] 2keep + parse-result-matched swap [ parse-result-matched swap append ] keep [ set-parse-result-matched ] keep + + ] [ + drop f + ] if* ; + +: (seq-parser) ( result parsers -- result ) + dup empty? not pick and [ + unclip swap [ do-seq-parser ] dip (seq-parser) + ] [ + drop + ] if ; + +M: seq-parser parse ( state parser -- result ) + seq-parser-parsers [ "" V{ } clone ] dip (seq-parser) ; + +: seq ( seq -- parser ) + seq-parser construct-boa init-parser ; From 2d3fe08403e807febf7c62c6547d90bc2aec0926 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 20 Nov 2007 17:58:11 +1300 Subject: [PATCH 014/285] Add choice parser --- extra/peg/peg-tests.factor | 16 ++++++++++++++++ extra/peg/peg.factor | 22 ++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index 20e4206357..d95233b899 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -53,3 +53,19 @@ IN: temporary { "go" } [ "good" 0 "g" token "o" token 2array seq parse parse-result-matched ] unit-test + +{ "a" } [ + "abcd" 0 "a" token "b" token 2array choice parse parse-result-matched +] unit-test + +{ "b" } [ + "bbcd" 0 "a" token "b" token 2array choice parse parse-result-matched +] unit-test + +{ f } [ + "cbcd" 0 "a" token "b" token 2array choice parse +] unit-test + +{ f } [ + "" 0 "a" token "b" token 2array choice parse +] unit-test \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index f5c3f4ab3e..7965424ddd 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -72,8 +72,7 @@ TUPLE: seq-parser parsers ; [ dup parse-result-remaining ] dip parse [ [ parse-result-remaining swap set-parse-result-remaining ] 2keep [ parse-result-ast swap parse-result-ast push ] 2keep - parse-result-matched swap [ parse-result-matched swap append ] keep [ set-parse-result-matched ] keep - + parse-result-matched swap [ parse-result-matched swap append ] keep [ set-parse-result-matched ] keep ] [ drop f ] if* ; @@ -90,3 +89,22 @@ M: seq-parser parse ( state parser -- result ) : seq ( seq -- parser ) seq-parser construct-boa init-parser ; + +TUPLE: choice-parser parsers ; + +: (choice-parser) ( state parsers -- result ) + dup empty? [ + 2drop f + ] [ + unclip pick swap parse [ + 2nip + ] [ + (choice-parser) + ] if* + ] if ; + +M: choice-parser parse ( state parser -- result ) + choice-parser-parsers (choice-parser) ; + +: choice ( seq -- parser ) + choice-parser construct-boa init-parser ; From 691c62501f71ae4163ccda89751b27a4ba720f6d Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 21 Nov 2007 15:01:44 +1300 Subject: [PATCH 015/285] add repeat0 and repeat1 --- extra/peg/peg-tests.factor | 28 ++++++++++++++++++++++++++-- extra/peg/peg.factor | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index d95233b899..8c496a2b95 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. ! -USING: kernel tools.test strings namespaces arrays peg ; +USING: kernel tools.test strings namespaces arrays sequences peg ; IN: temporary { 0 1 2 } [ @@ -68,4 +68,28 @@ IN: temporary { f } [ "" 0 "a" token "b" token 2array choice parse -] unit-test \ No newline at end of file +] unit-test + +{ 0 } [ + "" 0 "a" token repeat0 parse parse-result-ast length +] unit-test + +{ 0 } [ + "b" 0 "a" token repeat0 parse parse-result-ast length +] unit-test + +{ "aaa" } [ + "aaab" 0 "a" token repeat0 parse parse-result-matched +] unit-test + +{ f } [ + "" 0 "a" token repeat1 parse +] unit-test + +{ f } [ + "b" 0 "a" token repeat1 parse +] unit-test + +{ "aaa" } [ + "aaab" 0 "a" token repeat1 parse parse-result-matched +] unit-test diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 7965424ddd..9bda5a358b 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel sequences strings namespaces math assocs combinators.lib ; +USING: kernel sequences strings namespaces math assocs shuffle combinators.lib ; IN: peg TUPLE: parse-state input cache ; @@ -108,3 +108,37 @@ M: choice-parser parse ( state parser -- result ) : choice ( seq -- parser ) choice-parser construct-boa init-parser ; + +TUPLE: repeat0-parser p1 ; + +: (repeat-parser) ( parser result -- result ) + 2dup parse-result-remaining swap parse [ + [ parse-result-remaining swap set-parse-result-remaining ] 2keep + [ parse-result-ast swap parse-result-ast push ] 2keep + parse-result-matched swap [ parse-result-matched swap append ] keep [ set-parse-result-matched ] keep + (repeat-parser) + ] [ + nip + ] if* ; + +: clone-result ( result -- result ) + { parse-result-remaining parse-result-matched parse-result-ast } + get-slots V{ } clone-like ; + +M: repeat0-parser parse ( state parser -- result ) + repeat0-parser-p1 2dup parse [ + nipd clone-result (repeat-parser) + ] [ + drop "" V{ } clone + ] if* ; + +: repeat0 ( parser -- parser ) + repeat0-parser construct-boa init-parser ; + +TUPLE: repeat1-parser p1 ; + +M: repeat1-parser parse ( state parser -- result ) + repeat1-parser-p1 tuck parse dup [ clone-result (repeat-parser) ] [ nip ] if ; + +: repeat1 ( parser -- parser ) + repeat1-parser construct-boa init-parser ; From e9df13dad58a7a6cc25eaab61a15b80850849f81 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 21 Nov 2007 15:31:23 +1300 Subject: [PATCH 016/285] remove match from parse results --- extra/peg/peg-tests.factor | 20 ++++++++++---------- extra/peg/peg.factor | 24 +++++++++++------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index 8c496a2b95..82d993af3c 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -24,9 +24,9 @@ IN: temporary "endbegin" 0 "begin" token parse ] unit-test -{ "begin" "begin" "end" } [ +{ "begin" "end" } [ "beginend" 0 "begin" token parse - { parse-result-matched parse-result-ast parse-result-remaining } get-slots + { parse-result-ast parse-result-remaining } get-slots parse-state-input >string ] unit-test @@ -50,16 +50,16 @@ IN: temporary "bad" 0 "a" token "b" token 2array seq parse ] unit-test -{ "go" } [ - "good" 0 "g" token "o" token 2array seq parse parse-result-matched +{ V{ "g" "o" } } [ + "good" 0 "g" token "o" token 2array seq parse parse-result-ast ] unit-test { "a" } [ - "abcd" 0 "a" token "b" token 2array choice parse parse-result-matched + "abcd" 0 "a" token "b" token 2array choice parse parse-result-ast ] unit-test { "b" } [ - "bbcd" 0 "a" token "b" token 2array choice parse parse-result-matched + "bbcd" 0 "a" token "b" token 2array choice parse parse-result-ast ] unit-test { f } [ @@ -78,8 +78,8 @@ IN: temporary "b" 0 "a" token repeat0 parse parse-result-ast length ] unit-test -{ "aaa" } [ - "aaab" 0 "a" token repeat0 parse parse-result-matched +{ V{ "a" "a" "a" } } [ + "aaab" 0 "a" token repeat0 parse parse-result-ast ] unit-test { f } [ @@ -90,6 +90,6 @@ IN: temporary "b" 0 "a" token repeat1 parse ] unit-test -{ "aaa" } [ - "aaab" 0 "a" token repeat1 parse parse-result-matched +{ V{ "a" "a" "a" } } [ + "aaab" 0 "a" token repeat1 parse parse-result-ast ] unit-test diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 9bda5a358b..4a43c1b965 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel sequences strings namespaces math assocs shuffle combinators.lib ; +USING: kernel sequences strings namespaces math assocs shuffle vectors combinators.lib ; IN: peg TUPLE: parse-state input cache ; @@ -20,9 +20,9 @@ TUPLE: parse-state input cache ; [ parse-state-input ] dip tail-slice { set-parse-state-cache set-parse-state-input } parse-state construct ; -TUPLE: parse-result remaining matched ast ; +TUPLE: parse-result remaining ast ; -: ( remaining matched ast -- parse-result ) +: ( remaining ast -- parse-result ) parse-result construct-boa ; SYMBOL: next-id @@ -41,7 +41,7 @@ TUPLE: token-parser symbol ; M: token-parser parse ( state parser -- result ) token-parser-symbol 2dup >r parse-state-input r> head? [ - dup >r length state-tail r> dup + dup >r length state-tail r> ] [ 2drop f ] if ; @@ -57,7 +57,7 @@ M: range-parser parse ( state parser -- result ) ] [ 0 pick parse-state-input nth dup rot { range-parser-min range-parser-max } get-slots between? [ - [ 1 state-tail ] dip dup + [ 1 state-tail ] dip ] [ 2drop f ] if @@ -71,8 +71,7 @@ TUPLE: seq-parser parsers ; : do-seq-parser ( result parser -- result ) [ dup parse-result-remaining ] dip parse [ [ parse-result-remaining swap set-parse-result-remaining ] 2keep - [ parse-result-ast swap parse-result-ast push ] 2keep - parse-result-matched swap [ parse-result-matched swap append ] keep [ set-parse-result-matched ] keep + parse-result-ast swap [ parse-result-ast push ] keep ] [ drop f ] if* ; @@ -85,7 +84,7 @@ TUPLE: seq-parser parsers ; ] if ; M: seq-parser parse ( state parser -- result ) - seq-parser-parsers [ "" V{ } clone ] dip (seq-parser) ; + seq-parser-parsers [ V{ } clone ] dip (seq-parser) ; : seq ( seq -- parser ) seq-parser construct-boa init-parser ; @@ -114,22 +113,21 @@ TUPLE: repeat0-parser p1 ; : (repeat-parser) ( parser result -- result ) 2dup parse-result-remaining swap parse [ [ parse-result-remaining swap set-parse-result-remaining ] 2keep - [ parse-result-ast swap parse-result-ast push ] 2keep - parse-result-matched swap [ parse-result-matched swap append ] keep [ set-parse-result-matched ] keep + parse-result-ast swap [ parse-result-ast push ] keep (repeat-parser) ] [ nip ] if* ; : clone-result ( result -- result ) - { parse-result-remaining parse-result-matched parse-result-ast } - get-slots V{ } clone-like ; + { parse-result-remaining parse-result-ast } + get-slots 1vector ; M: repeat0-parser parse ( state parser -- result ) repeat0-parser-p1 2dup parse [ nipd clone-result (repeat-parser) ] [ - drop "" V{ } clone + drop V{ } clone ] if* ; : repeat0 ( parser -- parser ) From ffa71ef86f608e4a3f22dd3d146260a55727d13d Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 21 Nov 2007 15:50:47 +1300 Subject: [PATCH 017/285] add optional parser --- extra/peg/peg-tests.factor | 12 ++++++++++++ extra/peg/peg.factor | 10 +++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index 82d993af3c..b10fcb8e55 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -93,3 +93,15 @@ IN: temporary { V{ "a" "a" "a" } } [ "aaab" 0 "a" token repeat1 parse parse-result-ast ] unit-test + +{ V{ "a" "b" } } [ + "ab" 0 "a" token optional "b" token 2array seq parse parse-result-ast +] unit-test + +{ V{ f "b" } } [ + "b" 0 "a" token optional "b" token 2array seq parse parse-result-ast +] unit-test + +{ f } [ + "cb" 0 "a" token optional "b" token 2array seq parse +] unit-test \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 4a43c1b965..e2f0cfd1b2 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -136,7 +136,15 @@ M: repeat0-parser parse ( state parser -- result ) TUPLE: repeat1-parser p1 ; M: repeat1-parser parse ( state parser -- result ) - repeat1-parser-p1 tuck parse dup [ clone-result (repeat-parser) ] [ nip ] if ; + repeat1-parser-p1 tuck parse dup [ clone-result (repeat-parser) ] [ nip ] if ; : repeat1 ( parser -- parser ) repeat1-parser construct-boa init-parser ; + +TUPLE: optional-parser p1 ; + +M: optional-parser parse ( state parser -- result ) + dupd optional-parser-p1 parse swap f or ; + +: optional ( parser -- parser ) + optional-parser construct-boa init-parser ; From 129f68d428f548bb20f28272718aa77074704510 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 21 Nov 2007 16:06:02 +1300 Subject: [PATCH 018/285] add ensure parser --- extra/peg/peg-tests.factor | 8 ++++++++ extra/peg/peg.factor | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index b10fcb8e55..b7977285c4 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -104,4 +104,12 @@ IN: temporary { f } [ "cb" 0 "a" token optional "b" token 2array seq parse +] unit-test + +{ V{ CHAR: a CHAR: b } } [ + "ab" 0 "a" token ensure CHAR: a CHAR: z range dup 3array seq parse parse-result-ast +] unit-test + +{ f } [ + "bb" 0 "a" token ensure CHAR: a CHAR: z range 2array seq parse ] unit-test \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index e2f0cfd1b2..239af02d26 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -3,6 +3,8 @@ USING: kernel sequences strings namespaces math assocs shuffle vectors combinators.lib ; IN: peg +SYMBOL: ignore + TUPLE: parse-state input cache ; : ( input index -- state ) @@ -71,7 +73,7 @@ TUPLE: seq-parser parsers ; : do-seq-parser ( result parser -- result ) [ dup parse-result-remaining ] dip parse [ [ parse-result-remaining swap set-parse-result-remaining ] 2keep - parse-result-ast swap [ parse-result-ast push ] keep + parse-result-ast dup ignore = [ drop ] [ swap [ parse-result-ast push ] keep ] if ] [ drop f ] if* ; @@ -148,3 +150,15 @@ M: optional-parser parse ( state parser -- result ) : optional ( parser -- parser ) optional-parser construct-boa init-parser ; + +TUPLE: ensure-parser p1 ; + +M: ensure-parser parse ( state parser -- result ) + dupd ensure-parser-p1 parse [ + ignore + ] [ + drop f + ] if ; + +: ensure ( parser -- parser ) + ensure-parser construct-boa init-parser ; From 2a464ea2c65bb14782066b00789b63567a77c308 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 21 Nov 2007 16:11:49 +1300 Subject: [PATCH 019/285] add ensure-not parser --- extra/peg/peg-tests.factor | 24 ++++++++++++++++++++++++ extra/peg/peg.factor | 12 ++++++++++++ 2 files changed, 36 insertions(+) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index b7977285c4..94f70d32ad 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -112,4 +112,28 @@ IN: temporary { f } [ "bb" 0 "a" token ensure CHAR: a CHAR: z range 2array seq parse +] unit-test + +{ t } [ + "a+b" 0 + "a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq + parse [ t ] [ f ] if +] unit-test + +{ t } [ + "a++b" 0 + "a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq + parse [ t ] [ f ] if +] unit-test + +{ t } [ + "a+b" 0 + "a" token "+" token "++" token 2array choice "b" token 3array seq + parse [ t ] [ f ] if +] unit-test + +{ f } [ + "a++b" 0 + "a" token "+" token "++" token 2array choice "b" token 3array seq + parse [ t ] [ f ] if ] unit-test \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 239af02d26..82c4505ae7 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -162,3 +162,15 @@ M: ensure-parser parse ( state parser -- result ) : ensure ( parser -- parser ) ensure-parser construct-boa init-parser ; + +TUPLE: ensure-not-parser p1 ; + +M: ensure-not-parser parse ( state parser -- result ) + dupd ensure-not-parser-p1 parse [ + drop f + ] [ + ignore + ] if ; + +: ensure-not ( parser -- parser ) + ensure-not-parser construct-boa init-parser ; From 167f2d716d323bff0a1c82ab8e5a1de6f9360306 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 21 Nov 2007 16:21:23 +1300 Subject: [PATCH 020/285] add action parser --- extra/peg/peg-tests.factor | 12 ++++++++++++ extra/peg/peg.factor | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index 94f70d32ad..a60d1eaaf0 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -136,4 +136,16 @@ IN: temporary "a++b" 0 "a" token "+" token "++" token 2array choice "b" token 3array seq parse [ t ] [ f ] if +] unit-test + +{ 1 } [ + "a" 0 "a" token [ drop 1 ] action parse parse-result-ast +] unit-test + +{ V{ 1 1 } } [ + "aa" 0 "a" token [ drop 1 ] action dup 2array seq parse parse-result-ast +] unit-test + +{ f } [ + "b" 0 "a" token [ drop 1 ] action parse ] unit-test \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 82c4505ae7..2c985b68dc 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -174,3 +174,16 @@ M: ensure-not-parser parse ( state parser -- result ) : ensure-not ( parser -- parser ) ensure-not-parser construct-boa init-parser ; + +TUPLE: action-parser p1 quot ; + +M: action-parser parse ( state parser -- result ) + tuck action-parser-p1 parse dup [ + dup parse-result-ast rot action-parser-quot call + swap [ set-parse-result-ast ] keep + ] [ + nip + ] if ; + +: action ( parser quot -- parser ) + action-parser construct-boa init-parser ; From 861cfe7dc2f88990d4da9056bf30dff3792c64fa Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Wed, 21 Nov 2007 18:32:32 -0600 Subject: [PATCH 021/285] add unix.linux.fs --- extra/unix/linux/fs/fs.factor | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 extra/unix/linux/fs/fs.factor diff --git a/extra/unix/linux/fs/fs.factor b/extra/unix/linux/fs/fs.factor new file mode 100644 index 0000000000..02fd357ccd --- /dev/null +++ b/extra/unix/linux/fs/fs.factor @@ -0,0 +1,25 @@ + +USING: alien.syntax ; + +IN: unix.linux.fs + +: MS_RDONLY 1 ; ! Mount read-only. +: MS_NOSUID 2 ; ! Ignore suid and sgid bits. +: MS_NODEV 4 ; ! Disallow access to device special files. +: MS_NOEXEC 8 ; ! Disallow program execution. +: MS_SYNCHRONOUS 16 ; ! Writes are synced at once. +: MS_REMOUNT 32 ; ! Alter flags of a mounted FS. +: MS_MANDLOCK 64 ; ! Allow mandatory locks on an FS. +: S_WRITE 128 ; ! Write on file/directory/symlink. +: S_APPEND 256 ; ! Append-only file. +: S_IMMUTABLE 512 ; ! Immutable file. +: MS_NOATIME 1024 ; ! Do not update access times. +: MS_NODIRATIME 2048 ; ! Do not update directory access times. +: MS_BIND 4096 ; ! Bind directory at different place. + +FUNCTION: int mount +( char* special_file, char* dir, char* fstype, ulong options, void* data ) ; + +! FUNCTION: int umount2 ( char* file, int flags ) ; + +FUNCTION: int umount ( char* file ) ; \ No newline at end of file From 963ae64952ce375237090e199b3bc24f707c96f1 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Wed, 21 Nov 2007 18:32:51 -0600 Subject: [PATCH 022/285] add unix.linux.swap --- extra/unix/linux/swap/swap.factor | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 extra/unix/linux/swap/swap.factor diff --git a/extra/unix/linux/swap/swap.factor b/extra/unix/linux/swap/swap.factor new file mode 100644 index 0000000000..4cafa5723f --- /dev/null +++ b/extra/unix/linux/swap/swap.factor @@ -0,0 +1,12 @@ + +USING: alien.syntax ; + +IN: unix.linux.swap + +: SWAP_FLAG_PREFER HEX: 8000 ; ! Set if swap priority is specified. +: SWAP_FLAG_PRIO_MASK HEX: 7fff ; +: SWAP_FLAG_PRIO_SHIFT 0 ; + +FUNCTION: int swapon ( char* path, int flags ) ; + +FUNCTION: int swapoff ( char* path ) ; \ No newline at end of file From 6d64c460c31fcbfb74753c417b91a69b5c9d8208 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Wed, 21 Nov 2007 18:33:39 -0600 Subject: [PATCH 023/285] Add ,u and `{ to bake --- extra/bake/bake.factor | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/extra/bake/bake.factor b/extra/bake/bake.factor index 437a42d546..d038e81394 100644 --- a/extra/bake/bake.factor +++ b/extra/bake/bake.factor @@ -22,6 +22,10 @@ C: splice-quot ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +: ,u ( seq -- seq ) unclip building get push ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + SYMBOL: exemplar : reset-building ( -- ) 1024 building set ; @@ -35,6 +39,7 @@ DEFER: bake : bake-item ( item -- ) { { [ dup \ , = ] [ drop , ] } { [ dup \ % = ] [ drop % ] } + { [ dup \ ,u = ] [ drop ,u ] } { [ dup insert-quot? ] [ insert-quot-expr call , ] } { [ dup splice-quot? ] [ splice-quot-expr call % ] } { [ dup integer? ] [ , ] } @@ -52,4 +57,5 @@ DEFER: bake ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: `{ \ } [ >array ] parse-literal \ bake parsed ; parsing \ No newline at end of file +: `{ \ } [ >array ] parse-literal \ bake parsed ; parsing + From 1143f52f25ac9af286ee4259dc38cdcffec18715 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Wed, 21 Nov 2007 18:34:25 -0600 Subject: [PATCH 024/285] Activate swap and mount root fs in raptor --- extra/raptor/config.factor | 15 ++++++++++++++- extra/raptor/raptor.factor | 13 ++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/extra/raptor/config.factor b/extra/raptor/config.factor index 386ddf7744..ecdbf98f17 100644 --- a/extra/raptor/config.factor +++ b/extra/raptor/config.factor @@ -26,6 +26,14 @@ IN: raptor configure-route ] networking-hook set-global +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Filesystems +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +"/dev/hda1" root-device set-global + +{ "/dev/hda5" } swap-devices set-global + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! boot-hook ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -43,7 +51,12 @@ IN: raptor "mountdevsubfs" start-service "module-init-tools" start-service "procps.sh" start-service - "checkroot.sh" start-service + + ! "checkroot.sh" start-service + + activate-swap + mount-root + "mtab" start-service "checkfs.sh" start-service "mountall.sh" start-service diff --git a/extra/raptor/raptor.factor b/extra/raptor/raptor.factor index 7e32463ea1..e6f960cd8d 100644 --- a/extra/raptor/raptor.factor +++ b/extra/raptor/raptor.factor @@ -33,7 +33,7 @@ SYMBOL: networking-hook ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: getty ( tty -- ) `{ "/sbin/getty" "38400" , } fork-exec-wait ; +: getty ( tty -- ) `{ "/sbin/getty" "38400" , } fork-exec-args-wait ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -46,6 +46,17 @@ USING: io io.files io.streams.lines io.streams.plain io.streams.duplex ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +USING: unix.linux.swap unix.linux.fs ; + +SYMBOL: root-device +SYMBOL: swap-devices + +: activate-swap ( -- ) swap-devices get [ 0 swapon drop ] each ; + +: mount-root ( -- ) root-device get "/" "ext3" MS_REMOUNT f mount drop ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + : start-networking ( -- ) networking-hook get call ; : boot ( -- ) boot-hook get call ; From 812277815fd1ac0605d00d1656fbe61d03bf54e3 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 22 Nov 2007 14:21:32 -0500 Subject: [PATCH 025/285] Improve multi-click detection logic --- extra/ui/gestures/gestures.factor | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) mode change 100644 => 100755 extra/ui/gestures/gestures.factor diff --git a/extra/ui/gestures/gestures.factor b/extra/ui/gestures/gestures.factor old mode 100644 new mode 100755 index 0e337c538a..756ddfbf00 --- a/extra/ui/gestures/gestures.factor +++ b/extra/ui/gestures/gestures.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: arrays assocs kernel math models namespaces sequences words strings system hashtables math.parser -math.vectors tuples classes ui.gadgets timers ; +math.vectors tuples classes ui.gadgets timers combinators ; IN: ui.gestures : set-gestures ( class hash -- ) "gestures" set-word-prop ; @@ -176,9 +176,23 @@ drag-timer construct-empty drag-timer set-global : hand-click-rel ( gadget -- loc ) hand-click-loc get-global swap screen-loc v- ; +: multi-click-timeout? ( -- ? ) + millis hand-last-time get - double-click-timeout get <= ; + +: multi-click-button? ( button -- button ? ) + dup hand-last-button get = ; + +: multi-click-position? ( -- ? ) + hand-loc get hand-click-loc get v- norm 10 <= ; + : multi-click? ( button -- ? ) - millis hand-last-time get - double-click-timeout get <= - swap hand-last-button get = and ; + { + { [ multi-click-timeout? not ] [ f ] } + { [ multi-click-button? not ] [ f ] } + { [ multi-click-position? not ] [ f ] } + { [ multi-click-position? not ] [ f ] } + { [ t ] [ t ] } + } cond nip ; : update-click# ( button -- ) global [ From 687d2aa6a4707afc807a926fc91bc73bfc95b0a3 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Fri, 23 Nov 2007 14:32:02 +1300 Subject: [PATCH 026/285] Fix article manager bitrot --- extra/webapps/article-manager/furnace/article.furnace | 2 +- extra/webapps/article-manager/furnace/tag.furnace | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extra/webapps/article-manager/furnace/article.furnace b/extra/webapps/article-manager/furnace/article.furnace index 41929301a6..f0647aa442 100644 --- a/extra/webapps/article-manager/furnace/article.furnace +++ b/extra/webapps/article-manager/furnace/article.furnace @@ -1,4 +1,4 @@ -<% USING: kernel io http.server namespaces sequences math html.elements random furnace webapps.article-manager webapps.article-manager.database ; %> +<% USING: kernel io http.server namespaces sequences math html.elements random furnace webapps.article-manager webapps.article-manager.database html.elements ; %> <% f "navigation" render-template %>
diff --git a/extra/webapps/article-manager/furnace/tag.furnace b/extra/webapps/article-manager/furnace/tag.furnace index 493ce2e613..a778deb9be 100644 --- a/extra/webapps/article-manager/furnace/tag.furnace +++ b/extra/webapps/article-manager/furnace/tag.furnace @@ -1,4 +1,4 @@ -<% USING: kernel io http.server namespaces sequences math html furnace webapps.article-manager.database webapps.article-manager ; %> +<% USING: kernel io http.server namespaces sequences math html furnace webapps.article-manager.database webapps.article-manager html.elements ; %> <% f "navigation" render-template %> From cd844658959e2203c38d23a1da203da1a17d5426 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 22 Nov 2007 20:47:58 -0500 Subject: [PATCH 027/285] Documentation fix --- core/quotations/quotations-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 core/quotations/quotations-docs.factor diff --git a/core/quotations/quotations-docs.factor b/core/quotations/quotations-docs.factor old mode 100644 new mode 100755 index f647bb2a66..3a32b63ae9 --- a/core/quotations/quotations-docs.factor +++ b/core/quotations/quotations-docs.factor @@ -22,7 +22,7 @@ $nl ABOUT: "quotations" HELP: callable -{ $class-description "The class whose instances can be passed to " { $link call } ". This includes quotations, " { $link f } " (which behaves like an empty quotation), and composed quotations built up with " { $link curry } "." } ; +{ $class-description "The class whose instances can be passed to " { $link call } ". This includes quotations and composed quotations built up with " { $link curry } " or " { $link compose } "." } ; HELP: quotation { $description "The class of quotations. See " { $link "syntax-quots" } " for syntax and " { $link "quotations" } " for general information." } ; From a61c0d5f7c1ec5c9c51a24ac4a83c900d9b37da8 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 22 Nov 2007 20:48:24 -0500 Subject: [PATCH 028/285] Fix definition of macro predicate class --- extra/macros/macros.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 extra/macros/macros.factor diff --git a/extra/macros/macros.factor b/extra/macros/macros.factor old mode 100644 new mode 100755 index 9c06822463..1c23a1c85e --- a/extra/macros/macros.factor +++ b/extra/macros/macros.factor @@ -19,7 +19,7 @@ IN: macros : MACRO: (:) (MACRO:) ; parsing -PREDICATE: word macro +PREDICATE: compound macro "macro" word-prop >boolean ; M: macro definer drop \ MACRO: \ ; ; From 204069e01d8b0768a00850ef500c3dd2754ae39f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 22 Nov 2007 21:00:56 -0500 Subject: [PATCH 029/285] Improve editor gadget selection behavior --- extra/documents/documents.factor | 6 +++ extra/ui/gadgets/editors/editors.factor | 56 +++++++++++++++++-------- extra/ui/gestures/gestures.factor | 13 +++--- extra/ui/windows/windows.factor | 6 ++- 4 files changed, 55 insertions(+), 26 deletions(-) mode change 100644 => 100755 extra/documents/documents.factor diff --git a/extra/documents/documents.factor b/extra/documents/documents.factor old mode 100644 new mode 100755 index bc4dc412fc..01034e0e3f --- a/extra/documents/documents.factor +++ b/extra/documents/documents.factor @@ -167,6 +167,12 @@ M: char-elt prev-elt M: char-elt next-elt drop [ drop 1 +col ] (next-char) ; +TUPLE: one-char-elt ; + +M: one-char-elt prev-elt 2drop ; + +M: one-char-elt next-elt 2drop ; + : (word-elt) ( loc document quot -- loc ) pick >r >r >r first2 swap r> doc-line r> call diff --git a/extra/ui/gadgets/editors/editors.factor b/extra/ui/gadgets/editors/editors.factor index 65758ab54c..84cc01cdb6 100755 --- a/extra/ui/gadgets/editors/editors.factor +++ b/extra/ui/gadgets/editors/editors.factor @@ -4,7 +4,7 @@ USING: arrays documents ui.clipboards ui.commands ui.gadgets ui.gadgets.borders ui.gadgets.buttons ui.gadgets.labels ui.gadgets.scrollers ui.gadgets.theme ui.render ui.gestures io kernel math models namespaces opengl opengl.gl sequences strings -io.styles math.vectors sorting colors combinators ; +io.styles math.vectors sorting colors combinators assocs ; IN: ui.gadgets.editors TUPLE: editor @@ -94,8 +94,11 @@ M: editor ungraft* rot editor-line x>offset , ] { } make ; +: clicked-loc ( editor -- loc ) + [ hand-rel ] keep point>loc ; + : click-loc ( editor model -- ) - >r [ hand-rel ] keep point>loc r> set-model ; + >r clicked-loc r> set-model ; : focus-editor ( editor -- ) t over set-editor-focused? relayout-1 ; @@ -244,11 +247,37 @@ M: editor user-input* M: editor gadget-text* editor-string % ; -: start-selection ( editor -- ) - dup editor-caret click-loc ; - : extend-selection ( editor -- ) - dup request-focus start-selection ; + dup request-focus dup editor-caret click-loc ; + +: mouse-elt ( -- elelement ) + hand-click# get { + { 2 T{ one-word-elt } } + { 3 T{ one-line-elt } } + } at T{ one-char-elt } or ; + +: drag-direction? ( loc editor -- ? ) + editor-mark* <=> 0 < ; + +: drag-selection-caret ( loc editor element -- loc ) + >r [ drag-direction? ] 2keep + gadget-model + r> prev/next-elt ? ; + +: drag-selection-mark ( loc editor element -- loc ) + >r [ drag-direction? not ] 2keep + nip dup editor-mark* swap gadget-model + r> prev/next-elt ? ; + +: drag-caret&mark ( editor -- caret mark ) + dup clicked-loc swap mouse-elt + [ drag-selection-caret ] 3keep + drag-selection-mark ; + +: drag-selection ( editor -- ) + dup drag-caret&mark + pick editor-mark set-model + swap editor-caret set-model ; : editor-cut ( editor clipboard -- ) dupd gadget-copy remove-selection ; @@ -296,17 +325,10 @@ M: editor gadget-text* editor-string % ; dup T{ one-word-elt } select-elt ] unless gadget-selection ; -: (position-caret) ( editor -- ) - dup extend-selection - dup editor-mark click-loc ; - : position-caret ( editor -- ) - hand-click# get { - { 1 [ (position-caret) ] } - { 2 [ T{ one-word-elt } select-elt ] } - { 3 [ T{ one-line-elt } select-elt ] } - [ 2drop ] - } case ; + mouse-elt dup T{ one-char-elt } = + [ drop dup extend-selection dup editor-mark click-loc ] + [ select-elt ] if ; : insert-newline "\n" swap user-input ; @@ -408,7 +430,7 @@ editor "caret-motion" f { editor "selection" f { { T{ button-down f { S+ } } extend-selection } - { T{ drag } start-selection } + { T{ drag } drag-selection } { T{ gain-focus } focus-editor } { T{ lose-focus } unfocus-editor } { T{ delete-action } remove-selection } diff --git a/extra/ui/gestures/gestures.factor b/extra/ui/gestures/gestures.factor index 756ddfbf00..3d1e7baf7f 100755 --- a/extra/ui/gestures/gestures.factor +++ b/extra/ui/gestures/gestures.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: arrays assocs kernel math models namespaces sequences words strings system hashtables math.parser -math.vectors tuples classes ui.gadgets timers combinators ; +math.vectors tuples classes ui.gadgets timers combinators.lib ; IN: ui.gestures : set-gestures ( class hash -- ) "gestures" set-word-prop ; @@ -187,12 +187,11 @@ drag-timer construct-empty drag-timer set-global : multi-click? ( button -- ? ) { - { [ multi-click-timeout? not ] [ f ] } - { [ multi-click-button? not ] [ f ] } - { [ multi-click-position? not ] [ f ] } - { [ multi-click-position? not ] [ f ] } - { [ t ] [ t ] } - } cond nip ; + [ multi-click-timeout? ] + [ multi-click-button? ] + [ multi-click-position? ] + [ multi-click-position? ] + } && nip ; : update-click# ( button -- ) global [ diff --git a/extra/ui/windows/windows.factor b/extra/ui/windows/windows.factor index 3ce745970d..290e4ef311 100755 --- a/extra/ui/windows/windows.factor +++ b/extra/ui/windows/windows.factor @@ -397,8 +397,10 @@ M: windows-ui-backend (close-window) GetDoubleClickTime double-click-timeout set-global ; : cleanup-win32-ui ( -- ) - class-name-ptr get-global f UnregisterClass drop - class-name-ptr get-global [ free ] when* + class-name-ptr get-global [ + dup f UnregisterClass drop + free + ] when* f class-name-ptr set-global ; : setup-pixel-format ( hdc -- ) From 937446c53b96d5faacf84d056d7bac25a0af1d8c Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 23 Nov 2007 16:24:57 -0500 Subject: [PATCH 030/285] Editors tweaks --- extra/tools/test/ui/ui.factor | 2 +- extra/ui/gadgets/editors/editors-tests.factor | 2 +- extra/ui/gadgets/gadgets-tests.factor | 2 +- extra/ui/gadgets/scrollers/scrollers-tests.factor | 2 +- extra/ui/tools/browser/browser-tests.factor | 2 +- extra/ui/tools/listener/listener-tests.factor | 2 +- extra/ui/tools/search/search-tests.factor | 2 +- extra/ui/tools/tools-tests.factor | 2 +- extra/ui/tools/walker/walker-tests.factor | 2 +- extra/ui/ui.factor | 10 +--------- 10 files changed, 10 insertions(+), 18 deletions(-) diff --git a/extra/tools/test/ui/ui.factor b/extra/tools/test/ui/ui.factor index 6dcf9da4b5..0376e7f4c7 100755 --- a/extra/tools/test/ui/ui.factor +++ b/extra/tools/test/ui/ui.factor @@ -1,5 +1,5 @@ USING: dlists ui.gadgets kernel ui namespaces io.streams.string -io ui.private ; +io ; IN: tools.test.ui ! We can't print to stdio here because that might be a pane diff --git a/extra/ui/gadgets/editors/editors-tests.factor b/extra/ui/gadgets/editors/editors-tests.factor index 6966e9639f..6be0423e95 100755 --- a/extra/ui/gadgets/editors/editors-tests.factor +++ b/extra/ui/gadgets/editors/editors-tests.factor @@ -1,5 +1,5 @@ USING: ui.gadgets.editors tools.test kernel io io.streams.plain -definitions namespaces ui.gadgets ui.private +definitions namespaces ui.gadgets ui.gadgets.grids prettyprint documents ui.gestures tools.test.inference tools.test.ui models ; diff --git a/extra/ui/gadgets/gadgets-tests.factor b/extra/ui/gadgets/gadgets-tests.factor index 6c651fa248..48bb3718cb 100755 --- a/extra/ui/gadgets/gadgets-tests.factor +++ b/extra/ui/gadgets/gadgets-tests.factor @@ -2,7 +2,7 @@ IN: temporary USING: ui.gadgets ui.gadgets.packs ui.gadgets.worlds tools.test namespaces models kernel tools.test.inference dlists math math.parser ui sequences hashtables assocs io arrays -prettyprint io.streams.string ui.private ; +prettyprint io.streams.string ; [ T{ rect f { 10 10 } { 20 20 } } ] [ diff --git a/extra/ui/gadgets/scrollers/scrollers-tests.factor b/extra/ui/gadgets/scrollers/scrollers-tests.factor index 7d0dd0158f..a53cf1fb0e 100755 --- a/extra/ui/gadgets/scrollers/scrollers-tests.factor +++ b/extra/ui/gadgets/scrollers/scrollers-tests.factor @@ -1,5 +1,5 @@ IN: temporary -USING: ui.gadgets ui.gadgets.scrollers ui.private +USING: ui.gadgets ui.gadgets.scrollers namespaces tools.test kernel models ui.gadgets.viewports ui.gadgets.labels ui.gadgets.grids ui.gadgets.frames ui.gadgets.sliders math math.vectors arrays sequences diff --git a/extra/ui/tools/browser/browser-tests.factor b/extra/ui/tools/browser/browser-tests.factor index 00c8e5489c..5a343919e7 100755 --- a/extra/ui/tools/browser/browser-tests.factor +++ b/extra/ui/tools/browser/browser-tests.factor @@ -1,6 +1,6 @@ IN: temporary USING: tools.test tools.test.ui ui.tools.browser -tools.test.inference ui.private ; +tools.test.inference ; { 0 1 } [ ] unit-test-effect [ ] [ [ ] with-grafted-gadget ] unit-test diff --git a/extra/ui/tools/listener/listener-tests.factor b/extra/ui/tools/listener/listener-tests.factor index 62bd350e71..4e59fd63ee 100755 --- a/extra/ui/tools/listener/listener-tests.factor +++ b/extra/ui/tools/listener/listener-tests.factor @@ -1,7 +1,7 @@ USING: continuations documents ui.tools.interactor ui.tools.listener hashtables kernel namespaces parser sequences timers tools.test ui.commands ui.gadgets ui.gadgets.editors -ui.gadgets.panes vocabs words tools.test.ui ui.private ; +ui.gadgets.panes vocabs words tools.test.ui ; IN: temporary timers [ init-timers ] unless diff --git a/extra/ui/tools/search/search-tests.factor b/extra/ui/tools/search/search-tests.factor index ed110e19d6..47ae786f59 100755 --- a/extra/ui/tools/search/search-tests.factor +++ b/extra/ui/tools/search/search-tests.factor @@ -1,6 +1,6 @@ USING: assocs ui.tools.search help.topics io.files io.styles kernel namespaces sequences source-files threads timers -tools.test ui.gadgets ui.gestures ui.private vocabs +tools.test ui.gadgets ui.gestures vocabs vocabs.loader words tools.test.ui debugger ; IN: temporary diff --git a/extra/ui/tools/tools-tests.factor b/extra/ui/tools/tools-tests.factor index eb30b198d6..919d1705af 100755 --- a/extra/ui/tools/tools-tests.factor +++ b/extra/ui/tools/tools-tests.factor @@ -2,7 +2,7 @@ USING: ui.tools ui.tools.interactor ui.tools.listener ui.tools.search ui.tools.workspace kernel models namespaces sequences timers tools.test ui.gadgets ui.gadgets.buttons ui.gadgets.labelled ui.gadgets.presentations -ui.gadgets.scrollers vocabs tools.test.ui ui ui.private ; +ui.gadgets.scrollers vocabs tools.test.ui ui ; IN: temporary [ diff --git a/extra/ui/tools/walker/walker-tests.factor b/extra/ui/tools/walker/walker-tests.factor index b37c38c6ed..eea6d78f22 100755 --- a/extra/ui/tools/walker/walker-tests.factor +++ b/extra/ui/tools/walker/walker-tests.factor @@ -1,6 +1,6 @@ USING: arrays continuations ui.tools.listener ui.tools.walker ui.tools.workspace inspector kernel namespaces sequences threads -listener tools.test ui ui.gadgets ui.gadgets.worlds ui.private +listener tools.test ui ui.gadgets ui.gadgets.worlds ui.gadgets.packs vectors ui.tools tools.interpreter tools.interpreter.debug tools.test.inference tools.test.ui ; IN: temporary diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index 0e1b82ab9b..0c3b3e7867 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -28,8 +28,6 @@ SYMBOL: windows : unregister-window ( handle -- ) windows global [ [ first = not ] curry* subset ] change-at ; - - : open-world-window ( world -- ) dup pref-dim over set-gadget-dim dup relayout graft ; @@ -90,8 +86,6 @@ SYMBOL: ui-hook \ layout-queue set-global V{ } clone windows set-global ; - - : ui-step ( -- ) [ do-timers From f0d29daedddca86799c3715210ef9945ae57cf36 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 23 Nov 2007 17:23:53 -0500 Subject: [PATCH 031/285] Remove debugging --- extra/ui/ui.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index 0c3b3e7867..1f7f0dabca 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -127,7 +127,7 @@ SYMBOL: ui-hook ] { } make ; : redraw-worlds ( seq -- ) - [ dup update-hand [ draw-world ] time ] each ; + [ dup update-hand draw-world ] each ; : notify ( gadget -- ) dup gadget-graft-state { From 86070337fd372fff42d6685e2d962c5224ecc11e Mon Sep 17 00:00:00 2001 From: "U-EE860\\Administrator" Date: Sat, 24 Nov 2007 02:17:40 +0100 Subject: [PATCH 032/285] Refactor open-file to allow flags and attributes as the fourth parameter --- extra/io/windows/ce/files/files.factor | 3 ++- extra/io/windows/mmap/mmap.factor | 2 +- extra/io/windows/nt/files/files.factor | 4 ++-- extra/io/windows/windows.factor | 18 ++++++++++-------- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/extra/io/windows/ce/files/files.factor b/extra/io/windows/ce/files/files.factor index df5dc65094..c4f5b2ef9e 100755 --- a/extra/io/windows/ce/files/files.factor +++ b/extra/io/windows/ce/files/files.factor @@ -7,7 +7,8 @@ IN: windows.ce.files ! M: windows-ce-io normalize-pathname ( string -- string ) ! dup 1 tail* CHAR: \\ = [ "*" append ] [ "\\*" append ] if ; -M: windows-ce-io CreateFile-flags ( -- DWORD ) FILE_ATTRIBUTE_NORMAL ; +M: windows-ce-io CreateFile-flags ( DWORD -- DWORD ) + FILE_ATTRIBUTE_NORMAL bitor ; M: windows-ce-io FileArgs-overlapped ( port -- f ) drop f ; : finish-read ( port status bytes-ret -- ) diff --git a/extra/io/windows/mmap/mmap.factor b/extra/io/windows/mmap/mmap.factor index ca5d2bbd9a..27587e8340 100755 --- a/extra/io/windows/mmap/mmap.factor +++ b/extra/io/windows/mmap/mmap.factor @@ -62,7 +62,7 @@ M: windows-ce-io with-privileges : mmap-open ( path access-mode create-mode flProtect access -- handle handle address ) { "SeCreateGlobalPrivilege" "SeLockMemoryPrivilege" } [ - >r >r open-file dup f r> 0 0 f + >r >r 0 open-file dup f r> 0 0 f CreateFileMapping [ win32-error=0/f ] keep dup close-later dup diff --git a/extra/io/windows/nt/files/files.factor b/extra/io/windows/nt/files/files.factor index d53f5fcb40..5eed39224c 100755 --- a/extra/io/windows/nt/files/files.factor +++ b/extra/io/windows/nt/files/files.factor @@ -3,8 +3,8 @@ io.windows.nt io.windows.nt.backend kernel libc math threads windows windows.kernel32 ; IN: io.windows.nt.files -M: windows-nt-io CreateFile-flags ( -- DWORD ) - FILE_FLAG_OVERLAPPED ; +M: windows-nt-io CreateFile-flags ( DWORD -- DWORD ) + FILE_FLAG_OVERLAPPED bitor ; M: windows-nt-io FileArgs-overlapped ( port -- overlapped ) make-overlapped ; diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index ac0ede0e06..b0ec7f8436 100755 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -23,7 +23,7 @@ TUPLE: win32-file handle ptr overlapped ; : ( in out -- stream ) >r f r> f handle>duplex-stream ; -HOOK: CreateFile-flags io-backend ( -- DWORD ) +HOOK: CreateFile-flags io-backend ( DWORD -- DWORD ) HOOK: FileArgs-overlapped io-backend ( port -- overlapped/f ) HOOK: add-completion io-backend ( port -- ) @@ -31,7 +31,8 @@ M: windows-io normalize-directory ( string -- string ) "\\" ?tail drop "\\*" append ; : share-mode ( -- fixnum ) - FILE_SHARE_READ FILE_SHARE_WRITE bitor ; inline + FILE_SHARE_READ FILE_SHARE_WRITE bitor + FILE_SHARE_DELETE bitor ; foldable M: win32-file init-handle ( handle -- ) drop ; @@ -40,24 +41,25 @@ M: win32-file close-handle ( handle -- ) win32-file-handle CloseHandle drop ; ! Clean up resources (open handle) if add-completion fails -: open-file ( path access-mode create-mode -- handle ) +: open-file ( path access-mode create-mode flags -- handle ) [ - >r share-mode f r> CreateFile-flags f CreateFile + >r >r >r normalize-pathname r> + share-mode f r> r> CreateFile-flags f CreateFile dup invalid-handle? dup close-later dup add-completion ] with-destructors ; : open-pipe-r/w ( path -- handle ) - GENERIC_READ GENERIC_WRITE bitor OPEN_EXISTING open-file ; + GENERIC_READ GENERIC_WRITE bitor OPEN_EXISTING 0 open-file ; : open-read ( path -- handle length ) - normalize-pathname GENERIC_READ OPEN_EXISTING open-file 0 ; + GENERIC_READ OPEN_EXISTING 0 open-file 0 ; : open-write ( path -- handle length ) - normalize-pathname GENERIC_WRITE CREATE_ALWAYS open-file 0 ; + GENERIC_WRITE CREATE_ALWAYS 0 open-file 0 ; : (open-append) ( path -- handle ) - normalize-pathname GENERIC_WRITE OPEN_ALWAYS open-file ; + GENERIC_WRITE OPEN_ALWAYS 0 open-file ; : set-file-pointer ( handle length -- ) dupd d>w/w FILE_BEGIN SetFilePointer From eca98a3b8fbaed7dea467fc7781bcdb448770c08 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Fri, 23 Nov 2007 23:54:25 -0500 Subject: [PATCH 033/285] Deleting dead code in extra/rss --- extra/rss/rss.factor | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/extra/rss/rss.factor b/extra/rss/rss.factor index b0fdc65adb..0d399e620f 100644 --- a/extra/rss/rss.factor +++ b/extra/rss/rss.factor @@ -3,22 +3,14 @@ IN: rss ! USING: kernel http-client xml xml-utils xml-data errors io strings ! sequences xml-writer parser-combinators lazy-lists entities ; -USING: xml.utilities kernel promises parser-combinators assocs - parser-combinators.replace strings sequences xml.data xml.writer +USING: xml.utilities kernel assocs + strings sequences xml.data xml.writer io.streams.string combinators xml xml.entities io.files io http.client ; : ?children>string ( tag/f -- string/f ) [ children>string ] [ f ] if* ; -LAZY: '&' ( -- parser ) - "&" token - [ blank? ] satisfy &> - [ "&" swap add ] <@ ; - -: &>& ( string -- string ) - '&' replace ; - TUPLE: feed title link entries ; C: feed From 2da85091341eac0d94609dde3a0afd671f6d005b Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 15:41:27 -0500 Subject: [PATCH 034/285] Update Cocoa UI backend for recent changes --- extra/ui/cocoa/cocoa.factor | 10 +++++++++- extra/ui/cocoa/views/views.factor | 11 ++++++++--- extra/ui/tools/deploy/deploy.factor | 7 ++++++- extra/ui/ui.factor | 4 +++- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/extra/ui/cocoa/cocoa.factor b/extra/ui/cocoa/cocoa.factor index 52722a2fab..6607a22f50 100755 --- a/extra/ui/cocoa/cocoa.factor +++ b/extra/ui/cocoa/cocoa.factor @@ -60,11 +60,19 @@ M: cocoa-ui-backend set-title ( string world -- ) drop ] if ; -M: cocoa-ui-backend (open-world-window) ( world -- ) +M: cocoa-ui-backend (open-window) ( world -- ) dup gadget-window dup auto-position world-handle second f -> makeKeyAndOrderFront: ; +M: cocoa-ui-backend (close-window) ( handle -- ) + first unregister-window ; + +M: cocoa-ui-backend close-window ( gadget -- ) + find-world [ + world-handle second f -> performClose: + ] when* ; + M: cocoa-ui-backend raise-window ( world -- ) world-handle [ second dup f -> orderFront: -> makeKeyWindow diff --git a/extra/ui/cocoa/views/views.factor b/extra/ui/cocoa/views/views.factor index 31d6c89f8c..feac09ffc4 100644 --- a/extra/ui/cocoa/views/views.factor +++ b/extra/ui/cocoa/views/views.factor @@ -3,7 +3,8 @@ USING: alien arrays assocs cocoa kernel math cocoa.messages cocoa.subclassing cocoa.classes cocoa.views cocoa.application cocoa.pasteboard cocoa.types cocoa.windows sequences ui -ui.gadgets ui.gadgets.worlds ui.gestures core-foundation ; +ui.gadgets ui.gadgets.worlds ui.gestures core-foundation +threads ; IN: ui.cocoa.views : send-mouse-moved ( view event -- ) @@ -313,8 +314,6 @@ CLASS: { { "dealloc" "void" { "id" "SEL" } [ drop - dup window stop-world - dup unregister-window dup remove-observer SUPER-> dealloc ] @@ -347,6 +346,12 @@ CLASS: { forget-rollover 2nip -> object -> contentView window unfocus-world ] +} + +{ "windowShouldClose:" "bool" { "id" "SEL" "id" } + [ + 2nip -> contentView window ungraft t + ] } ; : install-window-delegate ( window -- ) diff --git a/extra/ui/tools/deploy/deploy.factor b/extra/ui/tools/deploy/deploy.factor index c4b41e119f..e7d9161079 100755 --- a/extra/ui/tools/deploy/deploy.factor +++ b/extra/ui/tools/deploy/deploy.factor @@ -77,7 +77,8 @@ TUPLE: deploy-gadget vocab settings ; : com-deploy ( gadget -- ) dup com-save - find-deploy-vocab [ deploy ] curry call-listener ; + dup find-deploy-vocab [ deploy ] curry call-listener + close-window ; : com-help ( -- ) "ui-deploy" help-window ; @@ -86,7 +87,11 @@ TUPLE: deploy-gadget vocab settings ; { +nullary+ t } } define-command +: com-close ( gadget -- ) + close-window ; + deploy-gadget "toolbar" f { + { f com-close } { f com-help } { f com-revert } { f com-save } diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index 1f7f0dabca..98549a16f7 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -72,7 +72,9 @@ M: world ungraft* >r [ 1 track, ] { 0 1 } make-track r> f open-world-window ; -: close-window ( gadget -- ) +HOOK: close-window ui-backend ( gadget -- ) + +M: object close-window find-world [ ungraft ] when* ; : find-window ( quot -- world ) From c17640f9820498c0f95bf2e841268baa1c6cfc9b Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:28:40 -0500 Subject: [PATCH 035/285] Cocoa fixes --- extra/cocoa/cocoa.factor | 3 ++- extra/cocoa/messages/messages.factor | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/extra/cocoa/cocoa.factor b/extra/cocoa/cocoa.factor index ddfb601be5..f13a5e2ab0 100644 --- a/extra/cocoa/cocoa.factor +++ b/extra/cocoa/cocoa.factor @@ -58,8 +58,9 @@ SYMBOL: super-sent-messages "NSSavePanel" "NSView" "NSWindow" + "NSWorkspace" } [ - f import-objc-class + [ ] import-objc-class ] each : ( str -- alien ) -> autorelease ; diff --git a/extra/cocoa/messages/messages.factor b/extra/cocoa/messages/messages.factor index 91c4262312..54ddbaa0cf 100644 --- a/extra/cocoa/messages/messages.factor +++ b/extra/cocoa/messages/messages.factor @@ -4,7 +4,7 @@ USING: alien alien.c-types alien.compiler arrays assocs combinators compiler inference.transforms kernel math namespaces parser prettyprint prettyprint.sections quotations sequences strings words cocoa.runtime io macros -memoize ; +memoize debugger ; IN: cocoa.messages : make-sender ( method function -- quot ) @@ -201,8 +201,11 @@ H{ : import-objc-class ( name quot -- ) 2dup unless-defined dupd define-objc-class-word - dup objc-class register-objc-methods - objc-meta-class register-objc-methods ; + [ + dup + objc-class register-objc-methods + objc-meta-class register-objc-methods + ] curry try ; : root-class ( class -- root ) dup objc-class-super-class [ root-class ] [ ] ?if ; From 3d17dbb4338227a661a20c97f3cbecffbcb76fd3 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:29:13 -0500 Subject: [PATCH 036/285] Update X11 UI backend --- extra/ui/x11/x11.factor | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/extra/ui/x11/x11.factor b/extra/ui/x11/x11.factor index 165989d86a..857b13a973 100755 --- a/extra/ui/x11/x11.factor +++ b/extra/ui/x11/x11.factor @@ -158,18 +158,14 @@ M: world selection-request-event { [ t ] [ drop send-notify-failure ] } } cond ; -: close-window ( handle -- ) +M: x11-ui-backend (close-window) ( handle -- ) dup x11-handle-xic XDestroyIC dup x11-handle-glx destroy-glx x11-handle-window dup unregister-window destroy-window ; M: world client-event - swap close-box? [ - dup world-handle >r stop-world r> close-window - ] [ - drop - ] if ; + swap close-box? [ ungraft ] [ drop ] if ; : gadget-window ( world -- ) dup world-loc over rect-dim glx-window @@ -222,7 +218,7 @@ M: x11-ui-backend set-title ( string world -- ) world-handle x11-handle-window swap dpy get -rot 3dup set-title-old set-title-new ; -M: x11-ui-backend (open-world-window) ( world -- ) +M: x11-ui-backend (open-window) ( world -- ) dup gadget-window world-handle x11-handle-window dup set-closable map-window ; From 90731836af126b384d811815a5a5b9130e6f0b32 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:32:59 -0500 Subject: [PATCH 037/285] Fix unix mmap --- extra/io/unix/mmap/mmap.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/io/unix/mmap/mmap.factor b/extra/io/unix/mmap/mmap.factor index d7dcad67d9..5a72a5426a 100644 --- a/extra/io/unix/mmap/mmap.factor +++ b/extra/io/unix/mmap/mmap.factor @@ -13,7 +13,7 @@ IN: io.unix.mmap M: unix-io ( path length -- obj ) swap >r dup PROT_READ PROT_WRITE bitor MAP_FILE MAP_SHARED bitor - r> mmap-open \ mapped-file construct-boa ; + r> mmap-open f mapped-file construct-boa ; M: unix-io (close-mapped-file) ( mmap -- ) [ mapped-file-address ] keep From aaa493ebd293faeef8b1284c8aa11ec42a433ac4 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:38:20 -0500 Subject: [PATCH 038/285] Implement copy-file on Windows --- core/io/files/files.factor | 4 +++- extra/io/windows/windows.factor | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/io/files/files.factor b/core/io/files/files.factor index 967f2f7913..1dd4259bb6 100755 --- a/core/io/files/files.factor +++ b/core/io/files/files.factor @@ -97,7 +97,9 @@ TUPLE: no-parent-directory path ; ] } } cond drop ; -: copy-file ( from to -- ) +HOOK: copy-file io-backend ( from to -- ) + +M: object copy-file dup parent-directory make-directories [ stdio get swap diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index ac0ede0e06..df0fd0d900 100755 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -116,6 +116,10 @@ M: windows-io delete-file ( path -- ) normalize-pathname DeleteFile win32-error=0/f ; +M: windows-io copy-file ( from to -- ) + normalize-pathname + f CopyFile win32-error=0/f ; + M: windows-io make-directory ( path -- ) normalize-pathname f CreateDirectory win32-error=0/f ; From a13975502c46fd04fc1907e0d94aba63fc6bf4dd Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:39:00 -0500 Subject: [PATCH 039/285] More Windows CopyFile stuff --- extra/io/windows/windows.factor | 10 ++++------ extra/windows/kernel32/kernel32.factor | 5 +++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index df0fd0d900..65efce4426 100755 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -109,16 +109,14 @@ M: windows-io ( path -- stream ) open-append ; M: windows-io rename-file ( from to -- ) - [ normalize-pathname ] 2apply - MoveFile win32-error=0/f ; + [ normalize-pathname ] 2apply MoveFile win32-error=0/f ; M: windows-io delete-file ( path -- ) - normalize-pathname - DeleteFile win32-error=0/f ; + normalize-pathname DeleteFile win32-error=0/f ; M: windows-io copy-file ( from to -- ) - normalize-pathname - f CopyFile win32-error=0/f ; + dup parent-directory make-directories + [ normalize-pathname ] 2apply f CopyFile win32-error=0/f ; M: windows-io make-directory ( path -- ) normalize-pathname diff --git a/extra/windows/kernel32/kernel32.factor b/extra/windows/kernel32/kernel32.factor index 8776378929..bb8919dd70 100755 --- a/extra/windows/kernel32/kernel32.factor +++ b/extra/windows/kernel32/kernel32.factor @@ -566,7 +566,8 @@ FUNCTION: BOOL ConnectNamedPipe ( HANDLE hNamedPipe, LPOVERLAPPED lpOverlapped ) ! FUNCTION: CopyFileA ! FUNCTION: CopyFileExA ! FUNCTION: CopyFileExW -! FUNCTION: CopyFileW +FUNCTION: BOOL CopyFileW ( LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists ) ; +: CopyFile CopyFileW ; inline ! FUNCTION: CopyLZFile ! FUNCTION: CreateActCtxA ! FUNCTION: CreateActCtxW @@ -575,7 +576,7 @@ FUNCTION: BOOL ConnectNamedPipe ( HANDLE hNamedPipe, LPOVERLAPPED lpOverlapped ) ! FUNCTION: CreateDirectoryExA ! FUNCTION: CreateDirectoryExW FUNCTION: BOOL CreateDirectoryW ( LPCTSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttribytes ) ; -: CreateDirectory CreateDirectoryW ; +: CreateDirectory CreateDirectoryW ; inline ! FUNCTION: CreateEventA ! FUNCTION: CreateEventW From cb1959b54994afdd5b939671e17d9a6497112a77 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:39:16 -0500 Subject: [PATCH 040/285] OS X deploy tool cleanup --- extra/tools/deploy/macosx/macosx.factor | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/extra/tools/deploy/macosx/macosx.factor b/extra/tools/deploy/macosx/macosx.factor index d59665488a..a5319563be 100755 --- a/extra/tools/deploy/macosx/macosx.factor +++ b/extra/tools/deploy/macosx/macosx.factor @@ -1,18 +1,16 @@ ! Copyright (C) 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: io io.files io.launcher kernel namespaces sequences -system cocoa.plists cocoa.application tools.deploy -tools.deploy.config assocs hashtables prettyprint ; +system tools.deploy tools.deploy.config assocs hashtables +prettyprint unix io.unix.backend cocoa cocoa.plists +cocoa.application cocoa.classes ; IN: tools.deploy.macosx : touch ( path -- ) - "touch \"" swap "\"" 3append run-process ; + { "touch" } swap add run-process ; : rm ( path -- ) - "rm -rf \"" swap "\"" 3append run-process ; - -: chmod ( path perms -- ) - [ "chmod " % % " \"" % % "\"" % ] "" make run-process ; + { "rm" "-rf" } swap add run-process ; : bundle-dir ( -- dir ) vm parent-directory parent-directory ; @@ -24,7 +22,7 @@ IN: tools.deploy.macosx : copy-vm ( executable bundle-name -- vm ) "Contents/MacOS/" path+ swap path+ vm swap [ copy-file ] keep - [ "755" chmod ] keep ; + [ 755 chmod io-error ] keep ; : copy-fonts ( name -- ) "fonts/" resource-path @@ -63,6 +61,12 @@ TUPLE: macosx-deploy-implementation ; T{ macosx-deploy-implementation } deploy-implementation set-global +: show-in-finder ( path -- ) + NSWorkspace + -> sharedWorkspace + over rot parent-directory + -> selectFile:inFileViewerRootedAtPath: drop ; + M: macosx-deploy-implementation deploy ( vocab -- ) ".app deploy tool" assert.app "." resource-path cd @@ -70,5 +74,6 @@ M: macosx-deploy-implementation deploy ( vocab -- ) bundle-name rm [ bundle-name create-app-dir ] keep [ bundle-name deploy.app-image ] keep - namespace - ] bind deploy* ; + namespace deploy* + bundle-name show-in-finder + ] bind ; From c84577e86f60a9b4bcff113ee2c7be7b4146220a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:39:27 -0500 Subject: [PATCH 041/285] Add another blog to blogroll --- extra/webapps/planet/planet.factor | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extra/webapps/planet/planet.factor b/extra/webapps/planet/planet.factor index 3abb42ecf1..c7f4e4c2f1 100644 --- a/extra/webapps/planet/planet.factor +++ b/extra/webapps/planet/planet.factor @@ -18,7 +18,7 @@ TUPLE: posting author title date link body ; #! entries is an array of { author entries } pairs. dup [ [ fetch-feed ] [ error. drop f ] recover - ] parallel-map [ ] subset + ] parallel-map [ [ >r first r> 2array ] curry* map ] 2map concat ; : sort-entries ( entries -- entries' ) @@ -108,6 +108,7 @@ SYMBOL: cached-postings { "Kio M. Smallwood" "http://sekenre.wordpress.com/feed/atom/" "http://sekenre.wordpress.com/" } + { "Phil Dawes" "http://www.phildawes.net/blog/category/factor/feed/atom" "http://www.phildawes.net/blog/" } { "Samuel Tardieu" "http://www.rfc1149.net/blog/tag/factor/feed/atom/" "http://www.rfc1149.net/blog/tag/factor/" } { "Slava Pestov" "http://factor-language.blogspot.com/atom.xml" "http://factor-language.blogspot.com/" } } default-blogroll set-global From 10db30089596b63d5908cea52555871f9e20c08b Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 16:58:31 -0500 Subject: [PATCH 042/285] Tweak UI shortcuts a bit to not clash with F8 being reserved for Spaces in Leopard --- extra/ui/tools/tools.factor | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/extra/ui/tools/tools.factor b/extra/ui/tools/tools.factor index 4184591cec..48d341b4b8 100755 --- a/extra/ui/tools/tools.factor +++ b/extra/ui/tools/tools.factor @@ -67,11 +67,11 @@ M: workspace model-changed : com-profiler profiler-gadget select-tool ; workspace "tool-switching" f { - { T{ key-down f f "F2" } com-listener } - { T{ key-down f f "F3" } com-browser } - { T{ key-down f f "F4" } com-inspector } - { T{ key-down f f "F5" } com-walker } - { T{ key-down f f "F6" } com-profiler } + { T{ key-down f { C+ } "1" } com-listener } + { T{ key-down f { C+ } "2" } com-browser } + { T{ key-down f { C+ } "3" } com-inspector } + { T{ key-down f { C+ } "4" } com-walker } + { T{ key-down f { C+ } "5" } com-profiler } } define-command-map \ workspace-window @@ -86,8 +86,8 @@ H{ { +nullary+ t } { +listener+ t } } define-command workspace "workflow" f { { T{ key-down f { C+ } "n" } workspace-window } { T{ key-down f f "ESC" } hide-popup } - { T{ key-down f f "F8" } refresh-all } - { T{ key-down f { A+ } "F8" } test-changes } + { T{ key-down f f "F2" } refresh-all } + { T{ key-down f { A+ } "F2" } test-changes } } define-command-map [ From 43931a4a4334c97d18facb6b0cd9c63cff52755f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 18:05:34 -0500 Subject: [PATCH 043/285] Fix copy-file --- extra/io/windows/launcher/launcher.factor | 5 ++++- extra/io/windows/windows.factor | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/extra/io/windows/launcher/launcher.factor b/extra/io/windows/launcher/launcher.factor index 3caa2c7113..31893fab0c 100755 --- a/extra/io/windows/launcher/launcher.factor +++ b/extra/io/windows/launcher/launcher.factor @@ -53,8 +53,11 @@ TUPLE: CreateProcess-args CreateProcess-args-lpProcessInformation } get-slots CreateProcess win32-error=0/f ; +: escape-argument ( str -- newstr ) + [ [ dup CHAR: " = [ CHAR: \\ , ] when , ] each ] "" make ; + : join-arguments ( args -- cmd-line ) - [ "\"" swap "\"" 3append ] map " " join ; + [ "\"" swap escape-argument "\"" 3append ] map " " join ; : app-name/cmd-line ( -- app-name cmd-line ) +command+ get [ diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index 65efce4426..53ee82ed65 100755 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -116,7 +116,7 @@ M: windows-io delete-file ( path -- ) M: windows-io copy-file ( from to -- ) dup parent-directory make-directories - [ normalize-pathname ] 2apply f CopyFile win32-error=0/f ; + [ normalize-pathname ] 2apply 0 CopyFile win32-error=0/f ; M: windows-io make-directory ( path -- ) normalize-pathname From 6668b6a975d354d679338785a46650b21adc6de7 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 18:07:01 -0500 Subject: [PATCH 044/285] Minor parser combinators tweaks (hope doublec doesn't mind) --- extra/fjsc/fjsc-tests.factor | 28 ++-- extra/fjsc/fjsc.factor | 148 +++++++++--------- .../parser-combinators-docs.factor | 17 +- .../parser-combinators.factor | 43 +++-- .../parser-combinators/replace/replace.factor | 6 +- .../simple/simple-docs.factor | 39 ++--- extra/parser-combinators/simple/simple.factor | 3 - extra/webapps/fjsc/fjsc.factor | 18 +-- 8 files changed, 149 insertions(+), 153 deletions(-) mode change 100644 => 100755 extra/fjsc/fjsc-tests.factor mode change 100644 => 100755 extra/fjsc/fjsc.factor mode change 100644 => 100755 extra/parser-combinators/parser-combinators-docs.factor mode change 100644 => 100755 extra/parser-combinators/parser-combinators.factor mode change 100644 => 100755 extra/parser-combinators/replace/replace.factor mode change 100644 => 100755 extra/parser-combinators/simple/simple-docs.factor mode change 100644 => 100755 extra/parser-combinators/simple/simple.factor mode change 100644 => 100755 extra/webapps/fjsc/fjsc.factor diff --git a/extra/fjsc/fjsc-tests.factor b/extra/fjsc/fjsc-tests.factor old mode 100644 new mode 100755 index 8dda62faea..1c70c0c325 --- a/extra/fjsc/fjsc-tests.factor +++ b/extra/fjsc/fjsc-tests.factor @@ -4,51 +4,51 @@ USING: kernel tools.test parser-combinators lazy-lists fjsc ; IN: temporary { T{ ast-expression f { T{ ast-number f 55 } T{ ast-identifier f "2abc1" } T{ ast-number f 100 } } } } [ - "55 2abc1 100" 'expression' parse car parse-result-parsed + "55 2abc1 100" 'expression' parse-1 ] unit-test { T{ ast-quotation f { T{ ast-number f 55 } T{ ast-identifier f "2abc1" } T{ ast-number f 100 } } } } [ - "[ 55 2abc1 100 ]" 'quotation' parse car parse-result-parsed + "[ 55 2abc1 100 ]" 'quotation' parse-1 ] unit-test { T{ ast-array f { T{ ast-number f 55 } T{ ast-identifier f "2abc1" } T{ ast-number f 100 } } } } [ - "{ 55 2abc1 100 }" 'array' parse car parse-result-parsed + "{ 55 2abc1 100 }" 'array' parse-1 ] unit-test { T{ ast-stack-effect f { } { "d" "e" "f" } } } [ - "( -- d e f )" 'stack-effect' parse car parse-result-parsed + "( -- d e f )" 'stack-effect' parse-1 ] unit-test { T{ ast-stack-effect f { "a" "b" "c" } { "d" "e" "f" } } } [ - "( a b c -- d e f )" 'stack-effect' parse car parse-result-parsed + "( a b c -- d e f )" 'stack-effect' parse-1 ] unit-test { T{ ast-stack-effect f { "a" "b" "c" } { } } } [ - "( a b c -- )" 'stack-effect' parse car parse-result-parsed + "( a b c -- )" 'stack-effect' parse-1 ] unit-test { T{ ast-stack-effect f { } { } } } [ - "( -- )" 'stack-effect' parse car parse-result-parsed + "( -- )" 'stack-effect' parse-1 ] unit-test { } [ ": foo ( a b -- c d ) abcdefghijklmn 123 ;" 'expression' parse car drop ] unit-test - -{ T{ ast-expression f { T{ ast-string f "abcd" } } } } [ - "\"abcd\"" 'statement' parse car parse-result-parsed -] unit-test + +{ T{ ast-expression f { T{ ast-string f "abcd" } } } } [ + "\"abcd\"" 'statement' parse-1 +] unit-test { T{ ast-expression f { T{ ast-use f "foo" } } } } [ - "USE: foo" 'statement' parse car parse-result-parsed + "USE: foo" 'statement' parse-1 ] unit-test { T{ ast-expression f { T{ ast-in f "foo" } } } } [ - "IN: foo" 'statement' parse car parse-result-parsed + "IN: foo" 'statement' parse-1 ] unit-test { T{ ast-expression f { T{ ast-using f { "foo" "bar" } } } } } [ - "USING: foo bar ;" 'statement' parse car parse-result-parsed + "USING: foo bar ;" 'statement' parse-1 ] unit-test diff --git a/extra/fjsc/fjsc.factor b/extra/fjsc/fjsc.factor old mode 100644 new mode 100755 index c6572f147c..22031afb25 --- a/extra/fjsc/fjsc.factor +++ b/extra/fjsc/fjsc.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2006 Chris Double. All Rights Reserved. ! See http://factorcode.org/license.txt for BSD license. USING: kernel lazy-lists parser-combinators parser-combinators.simple - strings promises sequences math math.parser namespaces words + strings promises sequences math math.parser namespaces words quotations arrays hashtables io io.streams.string assocs ; IN: fjsc @@ -53,11 +53,11 @@ C: ast-hashtable [ CHAR: ] = not ] keep [ CHAR: ;" = not ] keep [ CHAR: " = not ] keep - digit? not + digit? not and and and and and ; -LAZY: 'identifier-ends' ( -- parser ) - [ +LAZY: 'identifier-ends' ( -- parser ) + [ [ blank? not ] keep [ CHAR: " = not ] keep [ CHAR: ;" = not ] keep @@ -67,23 +67,23 @@ LAZY: 'identifier-ends' ( -- parser ) and and and and and ] satisfy ; -LAZY: 'identifier-middle' ( -- parser ) +LAZY: 'identifier-middle' ( -- parser ) [ identifier-middle? ] satisfy ; LAZY: 'identifier' ( -- parser ) - 'identifier-ends' + 'identifier-ends' 'identifier-middle' <&> - 'identifier-ends' <:&> + 'identifier-ends' <:&> [ concat >string f ] <@ ; - + DEFER: 'expression' LAZY: 'effect-name' ( -- parser ) - [ + [ [ blank? not ] keep CHAR: - = not - and + and ] satisfy [ >string ] <@ ; LAZY: 'stack-effect' ( -- parser ) @@ -94,24 +94,24 @@ LAZY: 'stack-effect' ( -- parser ) ")" token sp <& [ first2 ] <@ ; LAZY: 'define' ( -- parser ) - ":" token sp + ":" token sp 'identifier' sp [ ast-identifier-value ] <@ &> 'stack-effect' sp <&> 'expression' <:&> ";" token sp <& [ first3 ] <@ ; LAZY: 'quotation' ( -- parser ) - "[" token sp + "[" token sp 'expression' [ ast-expression-values ] <@ &> "]" token sp <& [ ] <@ ; LAZY: 'array' ( -- parser ) - "{" token sp + "{" token sp 'expression' [ ast-expression-values ] <@ &> "}" token sp <& [ ] <@ ; LAZY: 'word' ( -- parser ) - "\\" token sp + "\\" token sp 'identifier' sp &> [ ast-identifier-value f ] <@ ; LAZY: 'atom' ( -- parser ) @@ -137,7 +137,7 @@ LAZY: 'USING:' ( -- parser ) ";" token sp <& [ ] <@ ; LAZY: 'hashtable' ( -- parser ) - "H{" token sp + "H{" token sp 'expression' [ ast-expression-values ] <@ &> "}" token sp <& [ ] <@ ; @@ -147,14 +147,14 @@ LAZY: 'parsing-word' ( -- parser ) 'IN:' <|> ; LAZY: 'expression' ( -- parser ) - 'comment' - 'parsing-word' sp <|> - 'quotation' sp <|> + 'comment' + 'parsing-word' sp <|> + 'quotation' sp <|> 'define' sp <|> 'array' sp <|> 'hashtable' sp <|> 'word' sp <|> - 'atom' sp <|> + 'atom' sp <|> <*> [ ] <@ ; LAZY: 'statement' ( -- parser ) @@ -163,41 +163,41 @@ LAZY: 'statement' ( -- parser ) GENERIC: (compile) ( ast -- ) GENERIC: (literal) ( ast -- ) -M: ast-number (literal) +M: ast-number (literal) ast-number-value number>string , ; -M: ast-number (compile) - "factor.push_data(" , - (literal) - "," , ; - -M: ast-string (literal) - "\"" , - ast-string-value , - "\"" , ; - -M: ast-string (compile) +M: ast-number (compile) "factor.push_data(" , (literal) "," , ; -M: ast-identifier (literal) +M: ast-string (literal) + "\"" , + ast-string-value , + "\"" , ; + +M: ast-string (compile) + "factor.push_data(" , + (literal) + "," , ; + +M: ast-identifier (literal) dup ast-identifier-vocab [ - "factor.get_word(\"" , + "factor.get_word(\"" , dup ast-identifier-vocab , "\",\"" , - ast-identifier-value , - "\")" , + ast-identifier-value , + "\")" , ] [ - "factor.find_word(\"" , ast-identifier-value , "\")" , + "factor.find_word(\"" , ast-identifier-value , "\")" , ] if ; -M: ast-identifier (compile) +M: ast-identifier (compile) (literal) ".execute(" , ; -M: ast-define (compile) - "factor.define_word(\"" , - dup ast-define-name , +M: ast-define (compile) + "factor.define_word(\"" , + dup ast-define-name , "\",\"source\"," , ast-define-expression (compile) "," , ; @@ -207,7 +207,7 @@ M: ast-define (compile) unclip dup ast-comment? not [ "function() {" , - (compile) + (compile) do-expressions ")}" , ] [ @@ -217,74 +217,74 @@ M: ast-define (compile) drop "factor.cont.next" , ] if ; -M: ast-quotation (literal) +M: ast-quotation (literal) "factor.make_quotation(\"source\"," , ast-quotation-values do-expressions ")" , ; -M: ast-quotation (compile) +M: ast-quotation (compile) "factor.push_data(factor.make_quotation(\"source\"," , ast-quotation-values do-expressions ")," , ; -M: ast-array (literal) - "[" , +M: ast-array (literal) + "[" , ast-array-elements [ "," , ] [ (literal) ] interleave "]" , ; -M: ast-array (compile) +M: ast-array (compile) "factor.push_data(" , (literal) "," , ; -M: ast-hashtable (literal) - "new Hashtable().fromAlist([" , +M: ast-hashtable (literal) + "new Hashtable().fromAlist([" , ast-hashtable-elements [ "," , ] [ (literal) ] interleave "])" , ; -M: ast-hashtable (compile) +M: ast-hashtable (compile) "factor.push_data(" , (literal) "," , ; M: ast-expression (literal) ast-expression-values [ - (literal) + (literal) ] each ; - + M: ast-expression (compile) ast-expression-values do-expressions ; -M: ast-word (literal) +M: ast-word (literal) dup ast-word-vocab [ - "factor.get_word(\"" , + "factor.get_word(\"" , dup ast-word-vocab , "\",\"" , - ast-word-value , - "\")" , + ast-word-value , + "\")" , ] [ - "factor.find_word(\"" , ast-word-value , "\")" , + "factor.find_word(\"" , ast-word-value , "\")" , ] if ; M: ast-word (compile) "factor.push_data(" , (literal) "," , ; - + M: ast-comment (compile) drop ; M: ast-stack-effect (compile) drop ; -M: ast-use (compile) +M: ast-use (compile) "factor.use(\"" , - ast-use-name , + ast-use-name , "\"," , ; -M: ast-in (compile) +M: ast-in (compile) "factor.set_in(\"" , - ast-in-name , + ast-in-name , "\"," , ; -M: ast-using (compile) +M: ast-using (compile) "factor.using([" , ast-using-names [ "," , @@ -308,17 +308,17 @@ M: string (parse-factor-quotation) ( object -- ast ) ; M: quotation (parse-factor-quotation) ( object -- ast ) - [ + [ [ (parse-factor-quotation) , ] each ] { } make ; M: array (parse-factor-quotation) ( object -- ast ) - [ + [ [ (parse-factor-quotation) , ] each ] { } make ; M: hashtable (parse-factor-quotation) ( object -- ast ) - >alist [ + >alist [ [ (parse-factor-quotation) , ] each ] { } make ; @@ -328,33 +328,33 @@ M: wrapper (parse-factor-quotation) ( object -- ast ) GENERIC: fjsc-parse ( object -- ast ) M: string fjsc-parse ( object -- ast ) - 'expression' parse car parse-result-parsed ; + 'expression' parse-1 ; M: quotation fjsc-parse ( object -- ast ) [ - [ (parse-factor-quotation) , ] each + [ (parse-factor-quotation) , ] each ] { } make ; : fjsc-compile ( ast -- string ) [ - [ + [ "(" , - (compile) + (compile) ")" , ] { } make [ write ] each ] string-out ; - + : fjsc-compile* ( string -- string ) - 'statement' parse car parse-result-parsed fjsc-compile ; + 'statement' parse-1 fjsc-compile ; : fc* ( string -- string ) [ - 'statement' parse car parse-result-parsed ast-expression-values do-expressions + 'statement' parse-1 ast-expression-values do-expressions ] { } make [ write ] each ; - + : fjsc-literal ( ast -- string ) [ [ (literal) ] { } make [ write ] each ] string-out ; - + diff --git a/extra/parser-combinators/parser-combinators-docs.factor b/extra/parser-combinators/parser-combinators-docs.factor old mode 100644 new mode 100755 index b3d25e4cd3..7b575e4da9 --- a/extra/parser-combinators/parser-combinators-docs.factor +++ b/extra/parser-combinators/parser-combinators-docs.factor @@ -3,14 +3,23 @@ USING: help.markup help.syntax parser-combinators ; HELP: list-of -{ $values +{ $values { "items" "a parser object" } { "separator" "a parser object" } { "parser" "a parser object" } } -{ $description +{ $description "Return a parser for parsing the repetition of things that are " "separated by a certain symbol. For example, comma separated lists. " "'items' is a parser that can parse the individual elements. 'separator' " - "is a parser for the symbol that separatest them. The result tree of " + "is a parser for the symbol that separatest them. The result tree of " "the resulting parser is an array of the parsed elements." } -{ $example "USE: parser-combinators" "\"1,2,3,4\" 'integer' \",\" token list-of parse car parse-result-parsed ." "{ 1 2 3 4 }" } +{ $example "USE: parser-combinators" "\"1,2,3,4\" 'integer' \",\" token list-of parse-1 ." "{ 1 2 3 4 }" } { $see-also list-of } ; +HELP: any-char-parser +{ $values + { "parser" "a parser object" } } +{ $description + "Return a parser that consumes a single value " + "from the input string. The value consumed is the " + "result of the parse." } +{ $examples +{ $example "USING: lazy-lists parser-combinators ;" "\"foo\" any-char-parser parse-1 ." "102" } } ; diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor old mode 100644 new mode 100755 index fa0733f321..3e34333a41 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -13,6 +13,9 @@ M: promise (parse) ( input parser -- list ) : parse ( input parser -- promise ) (parse) ; +: parse-1 ( input parser -- result ) + parse car parse-result-parsed ; + TUPLE: parse-result parsed unparsed ; C: parse-result @@ -23,7 +26,7 @@ C: token token-parser ( string -- parser ) M: token-parser (parse) ( input parser -- list ) token-parser-string swap over ?head-slice [ - 1list + 1list ] [ 2drop nil ] if ; @@ -43,9 +46,12 @@ M: satisfy-parser (parse) ( input parser -- list ) swap 1list ] [ 2drop nil - ] if + ] if ] if ; +LAZY: any-char-parser ( -- parser ) + [ drop t ] satisfy ; + TUPLE: epsilon-parser ; C: epsilon epsilon-parser ( -- parser ) @@ -63,7 +69,7 @@ C: succeed succeed-parser ( result -- parser ) M: succeed-parser (parse) ( input parser -- list ) #! A parser that always returns 'result' as a - #! successful parse with no input consumed. + #! successful parse with no input consumed. succeed-parser-result swap 1list ; TUPLE: fail-parser ; @@ -81,7 +87,7 @@ TUPLE: and-parser parsers ; over and-parser? [ >r and-parser-parsers r> add ] [ - 2array + 2array ] if \ and-parser construct-boa ; : and-parser-parse ( list p1 -- list ) @@ -92,13 +98,13 @@ TUPLE: and-parser parsers ; [ parse-result-parsed 2array ] keep parse-result-unparsed ] lmap-with - ] lmap-with lconcat ; - + ] lmap-with lconcat ; + M: and-parser (parse) ( input parser -- list ) #! Parse 'input' by sequentially combining the #! two parsers. First parser1 is applied to the #! input then parser2 is applied to the rest of - #! the input strings from the first parser. + #! the input strings from the first parser. and-parser-parsers unclip swapd parse [ [ and-parser-parse ] reduce ] 2curry promise ; TUPLE: or-parser p1 p2 ; @@ -115,7 +121,7 @@ M: or-parser (parse) ( input parser1 -- list ) #! Return a new string without any leading whitespace #! from the original string. dup empty? [ - dup first blank? [ 1 tail-slice left-trim-slice ] when + dup first blank? [ 1 tail-slice left-trim-slice ] when ] unless ; TUPLE: sp-parser p1 ; @@ -136,7 +142,7 @@ C: just just-parser ( p1 -- parser ) M: just-parser (parse) ( input parser -- result ) #! Calls the given parser on the input removes #! from the results anything where the remaining - #! input to be parsed is not empty. So ensures a + #! input to be parsed is not empty. So ensures a #! fully parsed input string. just-parser-p1 parse [ parse-result-unparsed empty? ] lsubset ; @@ -150,8 +156,8 @@ M: apply-parser (parse) ( input parser -- result ) #! The result of that quotation then becomes the new parse result. #! This allows modification of parse tree results (like #! converting strings to integers, etc). - [ apply-parser-p1 ] keep apply-parser-quot - -rot parse [ + [ apply-parser-p1 ] keep apply-parser-quot + -rot parse [ [ parse-result-parsed swap call ] keep parse-result-unparsed ] lmap-with ; @@ -165,7 +171,7 @@ M: some-parser (parse) ( input parser -- result ) #! the parse is complete (the remaining input is empty), #! picks the first solution and only returns the parse #! tree since the remaining input is empty. - some-parser-p1 just parse car parse-result-parsed ; + some-parser-p1 just parse-1 ; : <& ( parser1 parser2 -- parser ) @@ -230,13 +236,13 @@ LAZY: ( parser -- parser ) #! required. only-first ; -LAZY: <(*)> ( parser -- parser ) - #! Like <*> but take shortest match first. +LAZY: <(*)> ( parser -- parser ) + #! Like <*> but take shortest match first. #! Implementation by Matthew Willis. { } succeed swap dup <(*)> <&:> <|> ; LAZY: <(+)> ( parser -- parser ) - #! Like <+> but take shortest match first. + #! Like <+> but take shortest match first. #! Implementation by Matthew Willis. dup <(*)> <&:> ; @@ -249,6 +255,9 @@ LAZY: pack ( close body open -- parser ) LAZY: list-of ( items separator -- parser ) #! Given a parser for the separator and for the #! items themselves, return a parser that parses - #! lists of those items. The parse tree is an + #! lists of those items. The parse tree is an #! array of the parsed items. - over &> <*> <&:> { } succeed <|> ; \ No newline at end of file + dup -rot over &> <*> <&:> &> { } succeed <|> ; + +LAZY: surrounded-by ( parser start end -- parser' ) + [ token ] 2apply swapd pack ; \ No newline at end of file diff --git a/extra/parser-combinators/replace/replace.factor b/extra/parser-combinators/replace/replace.factor old mode 100644 new mode 100755 index 0d9b7f743a..541bde7ac7 --- a/extra/parser-combinators/replace/replace.factor +++ b/extra/parser-combinators/replace/replace.factor @@ -13,21 +13,21 @@ IN: parser-combinators } cond ; : search ( string parser -- seq ) - 'any-char' [ drop f ] <@ <|> <*> parse dup nil? [ + any-char-parser [ drop f ] <@ <|> <*> parse dup nil? [ drop { } ] [ car parse-result-parsed [ ] subset ] if ; : search* ( string parsers -- seq ) - unclip [ <|> ] reduce 'any-char' [ drop f ] <@ <|> <*> parse dup nil? [ + unclip [ <|> ] reduce any-char-parser [ drop f ] <@ <|> <*> parse dup nil? [ drop { } ] [ car parse-result-parsed [ ] subset ] if ; : (replace) ( string parser -- seq ) - 'any-char' <|> <*> parse car parse-result-parsed ; + any-char-parser <|> <*> parse-1 ; : replace ( string parser -- result ) [ (replace) [ tree-write ] each ] string-out ; diff --git a/extra/parser-combinators/simple/simple-docs.factor b/extra/parser-combinators/simple/simple-docs.factor old mode 100644 new mode 100755 index b85d3ab5bb..52786aceae --- a/extra/parser-combinators/simple/simple-docs.factor +++ b/extra/parser-combinators/simple/simple-docs.factor @@ -3,17 +3,6 @@ USING: help.syntax help.markup parser-combinators parser-combinators.simple ; -HELP: 'any-char' -{ $values - { "parser" "a parser object" } } -{ $description - "Return a parser that consumes a single value " - "from the input string. The value consumed is the " - "result of the parse." } -{ $examples -{ $example "USING: lazy-lists parser-combinators ;" "\"foo\" 'any-char' parse car parse-result-parsed ." "102" } } -{ $see-also 'any-char' 'digit' 'integer' 'string' 'bold' 'italic' comma-list } ; - HELP: 'digit' { $values { "parser" "a parser object" } } @@ -22,8 +11,7 @@ HELP: 'digit' "the input string. The numeric value of the digit " " consumed is the result of the parse." } { $examples -{ $example "USING: lazy-lists parser-combinators ;" "\"123\" 'digit' parse car parse-result-parsed ." "1" } } -{ $see-also 'any-char' 'digit' 'integer' 'string' 'bold' 'italic' comma-list } ; +{ $example "USING: lazy-lists parser-combinators ;" "\"123\" 'digit' parse-1 ." "1" } } ; HELP: 'integer' { $values @@ -33,9 +21,7 @@ HELP: 'integer' "the input string. The numeric value of the integer " " consumed is the result of the parse." } { $examples -{ $example "USING: lazy-lists parser-combinators ;" "\"123\" 'integer' parse car parse-result-parsed ." "123" } } -{ $see-also 'any-char' 'digit' 'integer' 'string' 'bold' 'italic' comma-list } ; - +{ $example "USING: lazy-lists parser-combinators ;" "\"123\" 'integer' parse-1 ." "123" } } ; HELP: 'string' { $values { "parser" "a parser object" } } @@ -44,9 +30,7 @@ HELP: 'string' "quotations from the input string. The string value " " consumed is the result of the parse." } { $examples -{ $example "USING: lazy-lists parser-combinators ;" "\"\\\"foo\\\"\" 'string' parse car parse-result-parsed ." "\"foo\"" } } -{ $see-also 'any-char' 'digit' 'integer' 'string' 'bold' 'italic' comma-list } ; - +{ $example "USING: lazy-lists parser-combinators ;" "\"\\\"foo\\\"\" 'string' parse-1 ." "\"foo\"" } } ; HELP: 'bold' { $values { "parser" "a parser object" } } @@ -55,10 +39,8 @@ HELP: 'bold' "the '*' character from the input string. This is " "commonly used in markup languages to indicate bold " "faced text." } -{ $example "USE: parser-combinators" "\"*foo*\" 'bold' parse car parse-result-parsed ." "\"foo\"" } -{ $example "USE: parser-combinators" "\"*foo*\" 'bold' [ \"\" swap \"\" 3append ] <@ parse car parse-result-parsed ." "\"foo\"" } -{ $see-also 'any-char' 'digit' 'integer' 'string' 'bold' 'italic' comma-list } ; - +{ $example "USE: parser-combinators" "\"*foo*\" 'bold' parse-1 ." "\"foo\"" } +{ $example "USE: parser-combinators" "\"*foo*\" 'bold' [ \"\" swap \"\" 3append ] <@ parse-1 ." "\"foo\"" } ; HELP: 'italic' { $values { "parser" "a parser object" } } @@ -68,10 +50,8 @@ HELP: 'italic' "commonly used in markup languages to indicate italic " "faced text." } { $examples -{ $example "USING: lazy-lists parser-combinators ;" "\"_foo_\" 'italic' parse car parse-result-parsed ." "\"foo\"" } -{ $example "USING: lazy-lists parser-combinators ;" "\"_foo_\" 'italic' [ \"\" swap \"\" 3append ] <@ parse car parse-result-parsed ." "\"foo\"" } } -{ $see-also 'any-char' 'digit' 'integer' 'string' 'bold' 'italic' comma-list } ; - +{ $example "USING: lazy-lists parser-combinators ;" "\"_foo_\" 'italic' parse-1 ." "\"foo\"" } +{ $example "USING: lazy-lists parser-combinators ;" "\"_foo_\" 'italic' [ \"\" swap \"\" 3append ] <@ parse-1 ." "\"foo\"" } } ; HELP: comma-list { $values { "element" "a parser object" } { "parser" "a parser object" } } @@ -80,5 +60,6 @@ HELP: comma-list "'element' should be a parser that can parse the elements. The " "result of the parser is a sequence of the parsed elements." } { $examples -{ $example "USING: lazy-lists parser-combinators ;" "\"1,2,3,4\" 'integer' comma-list parse car parse-result-parsed ." "{ 1 2 3 4 }" } } -{ $see-also 'any-char' 'digit' 'integer' 'string' 'bold' 'italic' comma-list } ; +{ $example "USING: lazy-lits parser-combinators ;" "\"1,2,3,4\" 'integer' comma-list parse-1 ." "{ 1 2 3 4 }" } } ; + +{ $see-also 'digit' 'integer' 'string' 'bold' 'italic' comma-list } related-words diff --git a/extra/parser-combinators/simple/simple.factor b/extra/parser-combinators/simple/simple.factor old mode 100644 new mode 100755 index 955807efa3..c5b84d86c6 --- a/extra/parser-combinators/simple/simple.factor +++ b/extra/parser-combinators/simple/simple.factor @@ -4,9 +4,6 @@ USING: kernel strings math sequences lazy-lists words math.parser promises ; IN: parser-combinators -LAZY: 'any-char' ( -- parser ) - [ drop t ] satisfy ; - : 'digit' ( -- parser ) [ digit? ] satisfy [ digit> ] <@ ; diff --git a/extra/webapps/fjsc/fjsc.factor b/extra/webapps/fjsc/fjsc.factor old mode 100644 new mode 100755 index 2a5bb94e30..bede8846c1 --- a/extra/webapps/fjsc/fjsc.factor +++ b/extra/webapps/fjsc/fjsc.factor @@ -2,8 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. ! USING: kernel furnace fjsc parser-combinators namespaces - lazy-lists io io.files furnace.validator sequences - http.client http.server http.server.responders + lazy-lists io io.files furnace.validator sequences + http.client http.server http.server.responders webapps.file ; IN: webapps.fjsc @@ -11,15 +11,15 @@ IN: webapps.fjsc #! Compile the factor code as a string, outputting the http #! response containing the javascript. serving-text - 'expression' parse car parse-result-parsed fjsc-compile + 'expression' parse-1 fjsc-compile write flush ; ! The 'compile' action results in an URL that looks like -! 'responder/fjsc/compile'. It takes one query or post +! 'responder/fjsc/compile'. It takes one query or post ! parameter called 'code'. It calls the 'compile' word ! passing the parameter to it on the stack. -\ compile { - { "code" v-required } +\ compile { + { "code" v-required } } define-action : compile-url ( url -- ) @@ -28,18 +28,18 @@ IN: webapps.fjsc "http://" host rot 3append http-get 2nip compile "();" write flush ; \ compile-url { - { "url" v-required } + { "url" v-required } } define-action : repl ( -- ) #! The main 'repl' page. f "repl" "head" render-page* ; -! An action called 'repl' +! An action called 'repl' \ repl { } define-action : fjsc-web-app ( -- ) - ! Create the web app, providing access + ! Create the web app, providing access ! under '/responder/fjsc' which calls the ! 'repl' action. "fjsc" "repl" "extra/webapps/fjsc" web-app From 1cd5d8bacb9dcdd5041453b26ed6119ccf69fbb7 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 18:09:30 -0500 Subject: [PATCH 045/285] io.unix.launcher no longer depends on /bin/sh! Down with the GNU establishment! --- extra/io/unix/launcher/launcher-tests.factor | 19 +++++++++++ extra/io/unix/launcher/launcher.factor | 34 ++++++++++++++++++-- 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100755 extra/io/unix/launcher/launcher-tests.factor mode change 100644 => 100755 extra/io/unix/launcher/launcher.factor diff --git a/extra/io/unix/launcher/launcher-tests.factor b/extra/io/unix/launcher/launcher-tests.factor new file mode 100755 index 0000000000..d07ab24da5 --- /dev/null +++ b/extra/io/unix/launcher/launcher-tests.factor @@ -0,0 +1,19 @@ +IN: temporary +USING: io.unix.launcher tools.test ; + +[ { } ] [ "" tokenize-command ] unit-test +[ { } ] [ " " tokenize-command ] unit-test +[ { "a" } ] [ "a" tokenize-command ] unit-test +[ { "abc" } ] [ "abc" tokenize-command ] unit-test +[ { "abc" } ] [ "abc " tokenize-command ] unit-test +[ { "abc" } ] [ " abc" tokenize-command ] unit-test +[ { "abc" "def" } ] [ "abc def" tokenize-command ] unit-test +[ { "abc def" } ] [ "abc\\ def" tokenize-command ] unit-test +[ { "abc\\" "def" } ] [ "abc\\\\ def" tokenize-command ] unit-test +[ { "abc\\ def" } ] [ "'abc\\\\ def'" tokenize-command ] unit-test +[ { "abc\\ def" } ] [ " 'abc\\\\ def'" tokenize-command ] unit-test +[ { "abc\\ def" "hey" } ] [ "'abc\\\\ def' hey" tokenize-command ] unit-test +[ { "abc def" "hey" } ] [ "'abc def' \"hey\"" tokenize-command ] unit-test +[ "'abc def' \"hey" tokenize-command ] unit-test-fails +[ "'abc def" tokenize-command ] unit-test-fails +[ { "abc def" "h\"ey" } ] [ "'abc def' \"h\"ey\" " tokenize-command ] unit-test diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor old mode 100644 new mode 100755 index 0e7ec9ad16..2ca5b748fc --- a/extra/io/unix/launcher/launcher.factor +++ b/extra/io/unix/launcher/launcher.factor @@ -2,15 +2,43 @@ ! See http://factorcode.org/license.txt for BSD license. USING: io io.launcher io.unix.backend io.nonblocking sequences kernel namespaces math system alien.c-types -debugger continuations arrays assocs combinators unix.process ; +debugger continuations arrays assocs combinators unix.process +parser-combinators memoize ; IN: io.unix.launcher ! Search unix first USE: unix +! Our command line parser. Supported syntax: +! foo bar baz -- simple tokens +! foo\ bar -- escaping the space +! 'foo bar' -- quotation +! "foo bar" -- quotation +LAZY: 'escaped-char' "\\" token any-char-parser &> ; + +LAZY: 'chars' 'escaped-char' any-char-parser <|> <*> ; + +LAZY: 'non-space-char' + 'escaped-char' [ CHAR: \s = not ] satisfy <|> ; + +LAZY: 'quoted-1' 'chars' "\"" "\"" surrounded-by ; + +LAZY: 'quoted-2' 'chars' "'" "'" surrounded-by ; + +LAZY: 'unquoted' 'non-space-char' <+> ; + +LAZY: 'argument' + 'quoted-1' 'quoted-2' 'unquoted' <|> <|> + [ >string ] <@ ; + +MEMO: 'arguments' ( -- parser ) + 'argument' " " token <+> list-of ; + +: tokenize-command ( command -- arguments ) + 'arguments' parse-1 ; + : get-arguments ( -- seq ) - +command+ get - [ "/bin/sh" "-c" rot 3array ] [ +arguments+ get ] if* ; + +command+ get [ tokenize-command ] [ +arguments+ get ] if* ; : assoc>env ( assoc -- env ) [ "=" swap 3append ] { } assoc>map ; From 84076184ddd87c09fe0e610c1be2fc45ff0b4a25 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 18:32:19 -0500 Subject: [PATCH 046/285] Add missing USE: --- extra/io/unix/launcher/launcher.factor | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor index 2ca5b748fc..d0a68f4c6d 100755 --- a/extra/io/unix/launcher/launcher.factor +++ b/extra/io/unix/launcher/launcher.factor @@ -3,7 +3,7 @@ USING: io io.launcher io.unix.backend io.nonblocking sequences kernel namespaces math system alien.c-types debugger continuations arrays assocs combinators unix.process -parser-combinators memoize ; +parser-combinators memoize promises strings ; IN: io.unix.launcher ! Search unix first @@ -40,7 +40,8 @@ MEMO: 'arguments' ( -- parser ) : get-arguments ( -- seq ) +command+ get [ tokenize-command ] [ +arguments+ get ] if* ; -: assoc>env ( assoc -- env ) [ "=" swap 3append ] { } assoc>map ; +: assoc>env ( assoc -- env ) + [ "=" swap 3append ] { } assoc>map ; : (spawn-process) ( -- ) [ From 30731a5808ce5c86986a63d88d65a1ead039a4f1 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 18:33:20 -0500 Subject: [PATCH 047/285] Fix parser-combinators load issue --- extra/parser-combinators/parser-combinators.factor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index 3e34333a41..6301f778f5 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -13,11 +13,11 @@ M: promise (parse) ( input parser -- list ) : parse ( input parser -- promise ) (parse) ; +TUPLE: parse-result parsed unparsed ; + : parse-1 ( input parser -- result ) parse car parse-result-parsed ; -TUPLE: parse-result parsed unparsed ; - C: parse-result TUPLE: token-parser string ; From 82e98dac8b7f187f8049a51a903747b79b18aa9c Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 18:44:04 -0500 Subject: [PATCH 048/285] Cleanup --- extra/io/unix/launcher/launcher.factor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor index d0a68f4c6d..ef45a0705e 100755 --- a/extra/io/unix/launcher/launcher.factor +++ b/extra/io/unix/launcher/launcher.factor @@ -18,13 +18,13 @@ LAZY: 'escaped-char' "\\" token any-char-parser &> ; LAZY: 'chars' 'escaped-char' any-char-parser <|> <*> ; -LAZY: 'non-space-char' - 'escaped-char' [ CHAR: \s = not ] satisfy <|> ; - LAZY: 'quoted-1' 'chars' "\"" "\"" surrounded-by ; LAZY: 'quoted-2' 'chars' "'" "'" surrounded-by ; +LAZY: 'non-space-char' + 'escaped-char' [ CHAR: \s = not ] satisfy <|> ; + LAZY: 'unquoted' 'non-space-char' <+> ; LAZY: 'argument' From 9695beb00c67a1d69c189a265e534c752b782a87 Mon Sep 17 00:00:00 2001 From: "U-C4\\Administrator" Date: Sat, 24 Nov 2007 17:59:11 -0600 Subject: [PATCH 049/285] Rename the install.sh to factor.sh - Add install and update parameters to it --- misc/factor.sh | 203 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100755 misc/factor.sh diff --git a/misc/factor.sh b/misc/factor.sh new file mode 100755 index 0000000000..3f8152518c --- /dev/null +++ b/misc/factor.sh @@ -0,0 +1,203 @@ +#!/bin/bash -e + +# Programs returning != 0 will not cause script to exit +set +e + +# Case insensitive string comparison +shopt -s nocaseglob +#shopt -s nocasematch + +OS= +ARCH= +WORD= + +ensure_program_installed() { + echo -n "Checking for $1..." + result=`type -p $1` + if ! [[ -n $result ]] ; then + echo "not found!" + echo "Install $1 and try again." + exit 1 + fi + echo "found!" +} + +check_ret() { + RET=$? + if [[ $RET -ne 0 ]] ; then + echo $1 failed + exit 5 + fi +} + +check_gcc_version() { + GCC_VERSION=`gcc --version` + if [[ $GCC_VERSION == *3.3.* ]] ; then + echo "You have a known buggy version of gcc (3.3)" + echo "Install gcc 3.4 or higher and try again." + exit 1 + fi +} + +check_installed_programs() { + ensure_program_installed chmod + ensure_program_installed uname + ensure_program_installed git + ensure_program_installed wget + ensure_program_installed gcc + ensure_program_installed make + check_gcc_version +} + + +find_os() { + uname_s=`uname -s` + case $uname_s in + CYGWIN_NT-5.2-WOW64) OS=windows-nt;; + *CYGWIN_NT*) OS=windows-nt;; + *CYGWIN*) OS=windows-nt;; + *darwin*) OS=macosx;; + *Darwin*) OS=macosx;; + *linux*) OS=linux;; + *Linux*) OS=linux;; + esac +} + +find_architecture() { + uname_m=`uname -m` + case $uname_m in + i386) ARCH=x86;; + i686) ARCH=x86;; + *86) ARCH=x86;; + "Power Macintosh") ARCH=ppc;; + esac +} + +write_test_program() { + echo "#include " > $C_WORD.c + echo "int main(){printf(\"%d\", 8*sizeof(void*)); return 0; }" >> $C_WORD.c +} + +find_word_size() { + C_WORD=factor-word-size + write_test_program + gcc -o $C_WORD $C_WORD.c + WORD=$(./$C_WORD) + check_ret $C_WORD + rm -f $C_WORD* +} + +set_factor_binary() { + case $OS in + windows-nt) FACTOR_BINARY=factor-nt;; + macosx) FACTOR_BINARY=./Factor.app/Contents/MacOS/factor;; + *) FACTOR_BINARY=factor;; + esac +} + +echo_build_info() { + echo OS=$OS + echo ARCH=$ARCH + echo WORD=$WORD + echo FACTOR_BINARY=$FACTOR_BINARY + echo MAKE_TARGET=$MAKE_TARGET + echo BOOT_IMAGE=$BOOT_IMAGE +} + +set_build_info() { + if ! [[ -n $OS && -n $ARCH && -n $WORD ]] ; then + echo "OS, ARCH, or WORD is empty. Please report this" + exit 4 + fi + MAKE_TARGET=$OS-$ARCH-$WORD + BOOT_IMAGE=boot.$ARCH.$WORD.image +} + +find_build_info() { + find_os + find_architecture + find_word_size + set_factor_binary + set_build_info + echo_build_info +} + + + +git_clone() { + echo "Downloading the git repository from factorcode.org..." + git clone git://factorcode.org/git/factor.git + check_ret git +} + +git_pull_factorcode() { + git pull git://factorcode.org/git/factor.git + check_ret git +} + +cd_factor() { + cd factor + check_ret cd +} + +make_factor() { + make $MAKE_TARGET + check_ret make +} + +delete_boot_images() { + echo "Deleting old images..." + rm $BOOT_IMAGE > /dev/null 2>&1 + rm $BOOT_IMAGE.* > /dev/null 2>&1 +} + +get_boot_image() { + wget http://factorcode.org/images/latest/$BOOT_IMAGE + check_ret wget +} + +maybe_download_dlls() { + if [[ $OS == windows-nt ]] ; then + wget http://factorcode.org/dlls/freetype6.dll + check_ret + wget http://factorcode.org/dlls/zlib1.dll + check_ret + chmod 777 *.dll + check_ret + fi +} + +bootstrap() { + ./$FACTOR_BINARY -i=$BOOT_IMAGE +} + +usage() { + echo "usage: $0 install|update" +} + +case "$1" in + install) + check_installed_programs + find_build_info + git_clone + cd_factor + make_factor + get_boot_image + maybe_download_dlls + bootstrap + ;; + + update) + check_installed_programs + find_build_info + git_pull_factorcode + make_factor + delete_boot_images + get_boot_image + bootstrap + ;; + + *) + usage + ;; +esac From 5849496a93ae77f866ce7a5f99a42c06fd8a6081 Mon Sep 17 00:00:00 2001 From: "U-C4\\Administrator" Date: Sat, 24 Nov 2007 18:00:18 -0600 Subject: [PATCH 050/285] add Config file for win64 --- vm/Config.windows.nt.x86.64 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 vm/Config.windows.nt.x86.64 diff --git a/vm/Config.windows.nt.x86.64 b/vm/Config.windows.nt.x86.64 new file mode 100644 index 0000000000..1c30e64096 --- /dev/null +++ b/vm/Config.windows.nt.x86.64 @@ -0,0 +1,4 @@ +CC=/k/target/bin/x86_64-pc-mingw32-gcc +include vm/Config.windows.nt +include vm/Config.x86.64 +WINDRES = /k/target/bin/windres From 1347c04163c952cf6f68fe33e4a82cd766a38542 Mon Sep 17 00:00:00 2001 From: "U-C4\\Administrator" Date: Sat, 24 Nov 2007 18:00:48 -0600 Subject: [PATCH 051/285] Remove old install.sh --- misc/install.sh | 120 ------------------------------------------------ 1 file changed, 120 deletions(-) delete mode 100755 misc/install.sh diff --git a/misc/install.sh b/misc/install.sh deleted file mode 100755 index 006a7cf604..0000000000 --- a/misc/install.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash -e - -# Programs returning != 0 will not cause script to exit -set +e - -# Case insensitive string comparison -shopt -s nocaseglob -#shopt -s nocasematch - -ensure_program_installed() { - echo -n "Checking for $1..." - result=`type -p $1` - if ! [[ -n $result ]] ; then - echo "not found!" - echo "Install $1 and try again." - exit 1 - fi - echo "found!" -} - -check_ret() { - RET=$? - if [[ $RET -ne 0 ]] ; then - echo $1 failed - exit 5 - fi -} - -ensure_program_installed uname -ensure_program_installed git -ensure_program_installed wget -ensure_program_installed gcc -ensure_program_installed make - -GCC_VERSION=`gcc --version` -if [[ $GCC_VERSION == *3.3.* ]] ; then - echo "You have a known buggy version of gcc (3.3)" - echo "Install gcc 3.4 or higher and try again." - exit 1 -fi - -# OS -OS= -uname_s=`uname -s` -case $uname_s in - CYGWIN_NT-5.2-WOW64) OS=windows-nt;; - *CYGWIN_NT*) OS=windows-nt;; - *CYGWIN*) OS=windows-nt;; - *darwin*) OS=macosx;; - *Darwin*) OS=macosx;; - *linux*) OS=linux;; - *Linux*) OS=linux;; -esac - -# Architecture -ARCH= -uname_m=`uname -m` -case $uname_m in - i386) ARCH=x86;; - i686) ARCH=x86;; - *86) ARCH=x86;; - "Power Macintosh") ARCH=ppc;; -esac - -WORD= -C_WORD=factor-word-size -# Word size -echo "#include " > $C_WORD.c -echo "int main() { printf(\"%d\", 8*sizeof(long)); return 0; }" >> $C_WORD.c -gcc -o $C_WORD $C_WORD.c -WORD=$(./$C_WORD) -check_ret $C_WORD -rm -f $C_WORD* - -case $OS in - windows-nt) FACTOR_BINARY=factor-nt;; - macosx) FACTOR_BINARY=./Factor.app/Contents/MacOS/factor;; - *) FACTOR_BINARY=factor;; -esac - -MAKE_TARGET=$OS-$ARCH-$WORD -BOOT_IMAGE=boot.$ARCH.$WORD.image - -echo OS=$OS -echo ARCH=$ARCH -echo WORD=$WORD -echo FACTOR_BINARY=$FACTOR_BINARY -echo MAKE_TARGET=$MAKE_TARGET -echo BOOT_IMAGE=$BOOT_IMAGE - -if ! [[ -n $OS && -n $ARCH && -n $WORD ]] ; then - echo "OS, ARCH, or WORD is empty. Please report this" - exit 4 -fi - -echo "Downloading the git repository from factorcode.org..." -git clone git://factorcode.org/git/factor.git -check_ret git - -cd factor -check_ret cd - -make $MAKE_TARGET -check_ret make - -echo "Deleting old images..." -rm $BOOT_IMAGE > /dev/null 2>&1 -rm $BOOT_IMAGE.* > /dev/null 2>&1 -wget http://factorcode.org/images/latest/$BOOT_IMAGE -check_ret wget - -if [[ $OS == windows-nt ]] ; then - wget http://factorcode.org/dlls/freetype6.dll - check_ret - wget http://factorcode.org/dlls/zlib1.dll - check_ret -fi - - -./$FACTOR_BINARY -i=$BOOT_IMAGE From be1e2961ef34f6b6c2f098af50748c49e82ba0fe Mon Sep 17 00:00:00 2001 From: "U-C4\\Administrator" Date: Sat, 24 Nov 2007 18:02:34 -0600 Subject: [PATCH 052/285] Update Makefile for win64 --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 77a6fb6409..4c6eb2f4e6 100644 --- a/Makefile +++ b/Makefile @@ -62,6 +62,7 @@ default: @echo "solaris-x86-64" @echo "windows-ce-arm" @echo "windows-nt-x86-32" + @echo "windows-nt-x86-64" @echo "" @echo "Additional modifiers:" @echo "" @@ -113,6 +114,9 @@ solaris-x86-64: windows-nt-x86-32: $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.32 +windows-nt-x86-64: + $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.nt.x86.64 + windows-ce-arm: $(MAKE) $(EXECUTABLE) CONFIG=vm/Config.windows.ce.arm @@ -138,7 +142,7 @@ clean: rm -f vm/*.o vm/resources.o: - windres vm/factor.rs vm/resources.o + $(WINDRES) vm/factor.rs vm/resources.o .c.o: $(CC) -c $(CFLAGS) -o $@ $< From dc76d551e0f8f4b5758789260cb2183fbf854df8 Mon Sep 17 00:00:00 2001 From: "U-C4\\Administrator" Date: Sat, 24 Nov 2007 18:03:01 -0600 Subject: [PATCH 053/285] Don't install factor if a factor/ already exists --- misc/factor.sh | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/misc/factor.sh b/misc/factor.sh index 3f8152518c..9db0a29fcb 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -26,7 +26,7 @@ check_ret() { RET=$? if [[ $RET -ne 0 ]] ; then echo $1 failed - exit 5 + exit 2 fi } @@ -35,7 +35,7 @@ check_gcc_version() { if [[ $GCC_VERSION == *3.3.* ]] ; then echo "You have a known buggy version of gcc (3.3)" echo "Install gcc 3.4 or higher and try again." - exit 1 + exit 3 fi } @@ -49,6 +49,13 @@ check_installed_programs() { check_gcc_version } +check_factor_exists() { + if [[ -d "factor" ]] ; then + echo "A directory called 'factor' already exists." + echo "Rename or delete it and try again." + exit 4 + fi +} find_os() { uname_s=`uname -s` @@ -66,10 +73,10 @@ find_os() { find_architecture() { uname_m=`uname -m` case $uname_m in - i386) ARCH=x86;; - i686) ARCH=x86;; - *86) ARCH=x86;; - "Power Macintosh") ARCH=ppc;; + i386) ARCH=x86;; + i686) ARCH=x86;; + *86) ARCH=x86;; + "Power Macintosh") ARCH=ppc;; esac } @@ -107,7 +114,7 @@ echo_build_info() { set_build_info() { if ! [[ -n $OS && -n $ARCH && -n $WORD ]] ; then echo "OS, ARCH, or WORD is empty. Please report this" - exit 4 + exit 5 fi MAKE_TARGET=$OS-$ARCH-$WORD BOOT_IMAGE=boot.$ARCH.$WORD.image @@ -122,8 +129,6 @@ find_build_info() { echo_build_info } - - git_clone() { echo "Downloading the git repository from factorcode.org..." git clone git://factorcode.org/git/factor.git @@ -177,6 +182,7 @@ usage() { case "$1" in install) + check_factor_exists check_installed_programs find_build_info git_clone From b8ab6a8cb188549aae66ee6743de66b30947dae7 Mon Sep 17 00:00:00 2001 From: "U-C4\\Administrator" Date: Sat, 24 Nov 2007 18:07:05 -0600 Subject: [PATCH 054/285] Comment out the AllocConsole() code for windows Add WINDRES variable to NT 32-bit backend --- vm/Config.windows.nt | 2 +- vm/Config.windows.nt.x86.32 | 1 + vm/os-windows-nt.c | 10 +++++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/vm/Config.windows.nt b/vm/Config.windows.nt index 8c67b11c19..c712c7d053 100644 --- a/vm/Config.windows.nt +++ b/vm/Config.windows.nt @@ -4,5 +4,5 @@ DLL_SUFFIX=-nt PLAF_DLL_OBJS += vm/os-windows-nt.o PLAF_EXE_OBJS += vm/resources.o PLAF_EXE_OBJS += vm/main-windows-nt.o -CFLAGS += -mwindows +#CFLAGS += -mwindows include vm/Config.windows diff --git a/vm/Config.windows.nt.x86.32 b/vm/Config.windows.nt.x86.32 index a8d4931b4d..9a020a7bc1 100644 --- a/vm/Config.windows.nt.x86.32 +++ b/vm/Config.windows.nt.x86.32 @@ -1,2 +1,3 @@ +WINDRES=windres include vm/Config.windows.nt include vm/Config.x86.32 diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index afd1e0ed3b..fc7fc61e0d 100755 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -91,14 +91,14 @@ void c_to_factor_toplevel(CELL quot) void open_console(void) { + /* + // Do this: http://www.cygwin.com/ml/cygwin/2007-11/msg00432.html if(!console_open) { - if(!AttachConsole(ATTACH_PARENT_PROCESS)) + if(AttachConsole(ATTACH_PARENT_PROCESS) || AllocConsole()) { - if(AllocConsole()) - console_open = true; - } - else console_open = true; + } } + */ } From 096b9fe4b73466e857334de08475e6bcb1e12165 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 18:17:25 -0600 Subject: [PATCH 055/285] Clean up C code a bit --- vm/os-windows-nt.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index fc7fc61e0d..be9dde1fa8 100755 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -93,12 +93,12 @@ void open_console(void) { /* // Do this: http://www.cygwin.com/ml/cygwin/2007-11/msg00432.html - if(!console_open) + if(console_open) + return; + + if(AttachConsole(ATTACH_PARENT_PROCESS) || AllocConsole()) { - if(AttachConsole(ATTACH_PARENT_PROCESS) || AllocConsole()) - { - console_open = true; - } + console_open = true; } */ } From 026c4186f1beaa82ded1eaf16d91786c29adf6a0 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 19:37:21 -0500 Subject: [PATCH 056/285] Clean up io.unix.launcher command parser --- extra/io/unix/launcher/launcher-tests.factor | 16 +++++++++++++++- extra/io/unix/launcher/launcher.factor | 19 +++++++++---------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/extra/io/unix/launcher/launcher-tests.factor b/extra/io/unix/launcher/launcher-tests.factor index d07ab24da5..88f467385a 100755 --- a/extra/io/unix/launcher/launcher-tests.factor +++ b/extra/io/unix/launcher/launcher-tests.factor @@ -16,4 +16,18 @@ USING: io.unix.launcher tools.test ; [ { "abc def" "hey" } ] [ "'abc def' \"hey\"" tokenize-command ] unit-test [ "'abc def' \"hey" tokenize-command ] unit-test-fails [ "'abc def" tokenize-command ] unit-test-fails -[ { "abc def" "h\"ey" } ] [ "'abc def' \"h\"ey\" " tokenize-command ] unit-test +[ { "abc def" "h\"ey" } ] [ "'abc def' \"h\\\"ey\" " tokenize-command ] unit-test + +[ + { + "Hello world.app/Contents/MacOS/hello-ui" + "-i=boot.macosx-ppc.image" + "-include= math compiler ui" + "-deploy-vocab=hello-ui" + "-output-image=Hello world.app/Contents/Resources/hello-ui.image" + "-no-stack-traces" + "-no-user-init" + } +] [ + "\"Hello world.app/Contents/MacOS/hello-ui\" -i=boot.macosx-ppc.image \"-include= math compiler ui\" -deploy-vocab=hello-ui \"-output-image=Hello world.app/Contents/Resources/hello-ui.image\" -no-stack-traces -no-user-init" tokenize-command +] unit-test diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor index ef45a0705e..322bef7e7f 100755 --- a/extra/io/unix/launcher/launcher.factor +++ b/extra/io/unix/launcher/launcher.factor @@ -16,19 +16,18 @@ USE: unix ! "foo bar" -- quotation LAZY: 'escaped-char' "\\" token any-char-parser &> ; -LAZY: 'chars' 'escaped-char' any-char-parser <|> <*> ; +LAZY: 'quoted-char' ( delimiter -- parser' ) + 'escaped-char' + swap [ member? not ] curry satisfy + <|> ; inline -LAZY: 'quoted-1' 'chars' "\"" "\"" surrounded-by ; +LAZY: 'quoted' ( delimiter -- parser ) + dup 'quoted-char' <*> swap dup surrounded-by ; -LAZY: 'quoted-2' 'chars' "'" "'" surrounded-by ; +LAZY: 'unquoted' ( -- parser ) " " 'quoted-char' <+> ; -LAZY: 'non-space-char' - 'escaped-char' [ CHAR: \s = not ] satisfy <|> ; - -LAZY: 'unquoted' 'non-space-char' <+> ; - -LAZY: 'argument' - 'quoted-1' 'quoted-2' 'unquoted' <|> <|> +LAZY: 'argument' ( -- parser ) + "\"" 'quoted' "'" 'quoted' 'unquoted' <|> <|> [ >string ] <@ ; MEMO: 'arguments' ( -- parser ) From 81226bfd36b7149ddb0a34b185b612774c3d0a9d Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 19:40:43 -0500 Subject: [PATCH 057/285] Clean up some uglyness in tools.deploy --- extra/tools/deploy/deploy.factor | 12 ++++-------- extra/tools/deploy/macosx/macosx.factor | 10 +++++++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/extra/tools/deploy/deploy.factor b/extra/tools/deploy/deploy.factor index 7c0dabc458..dafe44dfad 100755 --- a/extra/tools/deploy/deploy.factor +++ b/extra/tools/deploy/deploy.factor @@ -26,12 +26,8 @@ IN: tools.deploy [ (copy-lines) ] [ stream-close ] [ ] cleanup ; : stage2 ( vm flags -- ) - [ - "\"" % swap % "\" -i=" % - boot-image-name % - [ " " % % ] each - ] "" make - dup print + >r "-i=" boot-image-name append 2array r> append dup . + dup duplex-stream-out stream-close copy-lines ; @@ -48,11 +44,11 @@ IN: tools.deploy : deploy-command-line ( vm image vocab config -- vm flags ) [ - "\"-include=" swap profile-string "\"" 3append , + "-include=" swap profile-string append , "-deploy-vocab=" swap append , - "\"-output-image=" swap "\"" 3append , + "-output-image=" swap append , "-no-stack-traces" , diff --git a/extra/tools/deploy/macosx/macosx.factor b/extra/tools/deploy/macosx/macosx.factor index a5319563be..7624fbeb9c 100755 --- a/extra/tools/deploy/macosx/macosx.factor +++ b/extra/tools/deploy/macosx/macosx.factor @@ -2,8 +2,9 @@ ! See http://factorcode.org/license.txt for BSD license. USING: io io.files io.launcher kernel namespaces sequences system tools.deploy tools.deploy.config assocs hashtables -prettyprint unix io.unix.backend cocoa cocoa.plists -cocoa.application cocoa.classes ; +prettyprint io.unix.backend cocoa cocoa.plists +cocoa.application cocoa.classes qualified ; +QUALIFIED: unix IN: tools.deploy.macosx : touch ( path -- ) @@ -19,10 +20,13 @@ IN: tools.deploy.macosx bundle-dir over path+ -rot >r "Contents" path+ r> path+ copy-directory ; +: chmod ( path perms -- ) + unix:chmod io-error ; + : copy-vm ( executable bundle-name -- vm ) "Contents/MacOS/" path+ swap path+ vm swap [ copy-file ] keep - [ 755 chmod io-error ] keep ; + [ OCT: 755 chmod ] keep ; : copy-fonts ( name -- ) "fonts/" resource-path From f26a6569374d7e9250e8718a08f500932ffc96d0 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 18:51:24 -0600 Subject: [PATCH 058/285] Do a make clean on update Changed spaces to tabs --- misc/factor.sh | 246 +++++++++++++++++++++++++------------------------ 1 file changed, 126 insertions(+), 120 deletions(-) diff --git a/misc/factor.sh b/misc/factor.sh index 9db0a29fcb..eb231cd565 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -12,41 +12,41 @@ ARCH= WORD= ensure_program_installed() { - echo -n "Checking for $1..." - result=`type -p $1` - if ! [[ -n $result ]] ; then - echo "not found!" - echo "Install $1 and try again." - exit 1 - fi - echo "found!" + echo -n "Checking for $1..." + result=`type -p $1` + if ! [[ -n $result ]] ; then + echo "not found!" + echo "Install $1 and try again." + exit 1 + fi + echo "found!" } check_ret() { - RET=$? - if [[ $RET -ne 0 ]] ; then - echo $1 failed - exit 2 - fi + RET=$? + if [[ $RET -ne 0 ]] ; then + echo $1 failed + exit 2 + fi } check_gcc_version() { - GCC_VERSION=`gcc --version` - if [[ $GCC_VERSION == *3.3.* ]] ; then - echo "You have a known buggy version of gcc (3.3)" - echo "Install gcc 3.4 or higher and try again." - exit 3 - fi + GCC_VERSION=`gcc --version` + if [[ $GCC_VERSION == *3.3.* ]] ; then + echo "You have a known buggy version of gcc (3.3)" + echo "Install gcc 3.4 or higher and try again." + exit 3 + fi } check_installed_programs() { - ensure_program_installed chmod - ensure_program_installed uname - ensure_program_installed git - ensure_program_installed wget - ensure_program_installed gcc - ensure_program_installed make - check_gcc_version + ensure_program_installed chmod + ensure_program_installed uname + ensure_program_installed git + ensure_program_installed wget + ensure_program_installed gcc + ensure_program_installed make + check_gcc_version } check_factor_exists() { @@ -58,152 +58,158 @@ check_factor_exists() { } find_os() { - uname_s=`uname -s` - case $uname_s in - CYGWIN_NT-5.2-WOW64) OS=windows-nt;; - *CYGWIN_NT*) OS=windows-nt;; - *CYGWIN*) OS=windows-nt;; - *darwin*) OS=macosx;; - *Darwin*) OS=macosx;; - *linux*) OS=linux;; - *Linux*) OS=linux;; - esac + uname_s=`uname -s` + case $uname_s in + CYGWIN_NT-5.2-WOW64) OS=windows-nt;; + *CYGWIN_NT*) OS=windows-nt;; + *CYGWIN*) OS=windows-nt;; + *darwin*) OS=macosx;; + *Darwin*) OS=macosx;; + *linux*) OS=linux;; + *Linux*) OS=linux;; + esac } find_architecture() { - uname_m=`uname -m` - case $uname_m in - i386) ARCH=x86;; - i686) ARCH=x86;; - *86) ARCH=x86;; - "Power Macintosh") ARCH=ppc;; - esac + uname_m=`uname -m` + case $uname_m in + i386) ARCH=x86;; + i686) ARCH=x86;; + *86) ARCH=x86;; + "Power Macintosh") ARCH=ppc;; + esac } write_test_program() { - echo "#include " > $C_WORD.c - echo "int main(){printf(\"%d\", 8*sizeof(void*)); return 0; }" >> $C_WORD.c + echo "#include " > $C_WORD.c + echo "int main(){printf(\"%d\", 8*sizeof(void*)); return 0; }" >> $C_WORD.c } find_word_size() { - C_WORD=factor-word-size - write_test_program - gcc -o $C_WORD $C_WORD.c - WORD=$(./$C_WORD) - check_ret $C_WORD - rm -f $C_WORD* + C_WORD=factor-word-size + write_test_program + gcc -o $C_WORD $C_WORD.c + WORD=$(./$C_WORD) + check_ret $C_WORD + rm -f $C_WORD* } set_factor_binary() { - case $OS in - windows-nt) FACTOR_BINARY=factor-nt;; - macosx) FACTOR_BINARY=./Factor.app/Contents/MacOS/factor;; - *) FACTOR_BINARY=factor;; - esac + case $OS in + windows-nt) FACTOR_BINARY=factor-nt;; + macosx) FACTOR_BINARY=./Factor.app/Contents/MacOS/factor;; + *) FACTOR_BINARY=factor;; + esac } echo_build_info() { - echo OS=$OS - echo ARCH=$ARCH - echo WORD=$WORD - echo FACTOR_BINARY=$FACTOR_BINARY - echo MAKE_TARGET=$MAKE_TARGET - echo BOOT_IMAGE=$BOOT_IMAGE + echo OS=$OS + echo ARCH=$ARCH + echo WORD=$WORD + echo FACTOR_BINARY=$FACTOR_BINARY + echo MAKE_TARGET=$MAKE_TARGET + echo BOOT_IMAGE=$BOOT_IMAGE } set_build_info() { - if ! [[ -n $OS && -n $ARCH && -n $WORD ]] ; then - echo "OS, ARCH, or WORD is empty. Please report this" - exit 5 - fi - MAKE_TARGET=$OS-$ARCH-$WORD - BOOT_IMAGE=boot.$ARCH.$WORD.image + if ! [[ -n $OS && -n $ARCH && -n $WORD ]] ; then + echo "OS, ARCH, or WORD is empty. Please report this" + exit 5 + fi + MAKE_TARGET=$OS-$ARCH-$WORD + BOOT_IMAGE=boot.$ARCH.$WORD.image } find_build_info() { - find_os - find_architecture - find_word_size - set_factor_binary - set_build_info - echo_build_info + find_os + find_architecture + find_word_size + set_factor_binary + set_build_info + echo_build_info } git_clone() { - echo "Downloading the git repository from factorcode.org..." - git clone git://factorcode.org/git/factor.git - check_ret git + echo "Downloading the git repository from factorcode.org..." + git clone git://factorcode.org/git/factor.git + check_ret git } git_pull_factorcode() { - git pull git://factorcode.org/git/factor.git - check_ret git + git pull git://factorcode.org/git/factor.git + check_ret git } cd_factor() { - cd factor - check_ret cd + cd factor + check_ret cd +} + +make_clean() { + make clean + check_ret make } make_factor() { - make $MAKE_TARGET - check_ret make + make $MAKE_TARGET -j5 + check_ret make } delete_boot_images() { - echo "Deleting old images..." - rm $BOOT_IMAGE > /dev/null 2>&1 - rm $BOOT_IMAGE.* > /dev/null 2>&1 + echo "Deleting old images..." + rm $BOOT_IMAGE > /dev/null 2>&1 + rm $BOOT_IMAGE.* > /dev/null 2>&1 } get_boot_image() { - wget http://factorcode.org/images/latest/$BOOT_IMAGE - check_ret wget + wget http://factorcode.org/images/latest/$BOOT_IMAGE + check_ret wget } maybe_download_dlls() { - if [[ $OS == windows-nt ]] ; then - wget http://factorcode.org/dlls/freetype6.dll - check_ret - wget http://factorcode.org/dlls/zlib1.dll - check_ret - chmod 777 *.dll - check_ret - fi + if [[ $OS == windows-nt ]] ; then + wget http://factorcode.org/dlls/freetype6.dll + check_ret + wget http://factorcode.org/dlls/zlib1.dll + check_ret + chmod 777 *.dll + check_ret + fi } bootstrap() { - ./$FACTOR_BINARY -i=$BOOT_IMAGE + ./$FACTOR_BINARY -i=$BOOT_IMAGE } usage() { - echo "usage: $0 install|update" + echo "usage: $0 install|update" } case "$1" in - install) + install) check_factor_exists - check_installed_programs - find_build_info - git_clone - cd_factor - make_factor - get_boot_image - maybe_download_dlls - bootstrap - ;; + check_installed_programs + find_build_info + git_clone + cd_factor + make_factor + get_boot_image + maybe_download_dlls + bootstrap + ;; - update) - check_installed_programs - find_build_info - git_pull_factorcode - make_factor - delete_boot_images - get_boot_image - bootstrap - ;; + update) + check_installed_programs + find_build_info + git_pull_factorcode + make_clean + make_factor + delete_boot_images + get_boot_image + bootstrap + ;; - *) - usage - ;; + *) + usage + ;; esac From 74053080ca0df58d791708fe675cb0627e474821 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Sat, 24 Nov 2007 16:55:48 -0800 Subject: [PATCH 059/285] Initial import of knucleotide benchmark --- .../knucleotide/knucleotide-input.txt | 1671 +++++++++++++++++ .../benchmark/knucleotide/knucleotide.factor | 74 + 2 files changed, 1745 insertions(+) create mode 100644 extra/benchmark/knucleotide/knucleotide-input.txt create mode 100644 extra/benchmark/knucleotide/knucleotide.factor diff --git a/extra/benchmark/knucleotide/knucleotide-input.txt b/extra/benchmark/knucleotide/knucleotide-input.txt new file mode 100644 index 0000000000..fb23263397 --- /dev/null +++ b/extra/benchmark/knucleotide/knucleotide-input.txt @@ -0,0 +1,1671 @@ +>ONE Homo sapiens alu +GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA +TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT +AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG +GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG +CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT +GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA +GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA +TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG +AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA +GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT +AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC +AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG +GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC +CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG +AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT +TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA +TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT +GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG +TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT +CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG +CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG +TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA +CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG +AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG +GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC +TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA +TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA +GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT +GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC +ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT +TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC +CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG +CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG +GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC +CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT +GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC +GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA +GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA +GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA +GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG +AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT +CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA +GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA +AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC +GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT +ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG +GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC +GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC +GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG +TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA +AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG +GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT +CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC +TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG +ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC +GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA +ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA +CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA +CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA +ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG +CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG +AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC +CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG +AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC +CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG +CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG +CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG +CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC +ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA +AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC +TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC +ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG +CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG +AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT +AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA +TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC +CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA +TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG +CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT +GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG +GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG +CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG +GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG +GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT +AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT +GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT +CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG +GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC +TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT +CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG +ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG +CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG +AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA +CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG +CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC +ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC +GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC +GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG +GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT +TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG +CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA +GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG +CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC +GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG +CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA +CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG +CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA +ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC +CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT +GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA +AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG +ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC +TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA +GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC +GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG +TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC +AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA +ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA +GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC +AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG +TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC +CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT +GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC +CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA +GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT +TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC +ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC +TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG +GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG +TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG +GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC +GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT +ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC +GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC +GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC +CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA +ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG +AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC +TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT +CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG +TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG +CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC +GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT +GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC +CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC +TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG +CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG +AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG +AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG +AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT +GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA +TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC +AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA +AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG +CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC +TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG +GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT +CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG +CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG +GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA +AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA +GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC +TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC +CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA +GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG +CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG +AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG +ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC +ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC +AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC +GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG +GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT +CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC +GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC +CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA +GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA +GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG +GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT +CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA +AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG +CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC +CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG +GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG +GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT +TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA +ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG +CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA +ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA +GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG +TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC +GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA +GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT +GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT +GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG +TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT +TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC +TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC +GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT +CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC +TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA +GATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGG +GCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCT +GAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT +ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAG +GCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTG +CACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCA +CGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTT +CGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCC +GGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGC +TTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGG +GCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCC +AGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTG +GCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCG +CGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAG +GCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAG +ACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAG +GCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGA +AACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATC +CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAG +TGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAA +AAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCG +GATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTA +CTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGG +AGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCG +CGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCG +GTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGT +CAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAA +AATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGG +AGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTC +CAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCT +GTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA +CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCG +TGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAA +CCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGAC +AGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCAC +TTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAA +CATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGC +CTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGA +GGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCC +GTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGA +GGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCC +CGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGC +TACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGC +CGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGC +CGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCA +CCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAA +AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCT +GAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCA +CTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGC +TCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGA +GTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTA +GCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAAT +CGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCC +TGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAAT +CCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGC +CTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTG +GCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGG +GAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGC +GAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG +GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGG +TGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTA +ATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTG +CAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTC +AAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGG +GCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCT +CTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTC +GGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGA +TCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGC +GCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGA +GGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATAC +AAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGC +AGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCA +CTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACG +CCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCG +AGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGG +GCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTT +GAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGC +GACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAG +CACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGC +CAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCG +CGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGC +GGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGAC +TCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGC +CGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAA +CCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCC +AGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTG +AGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA +GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA +TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT +AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG +GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG +CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT +GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA +GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA +TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG +AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA +GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT +AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC +AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG +GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC +CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG +AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT +TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA +TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT +GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG +TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT +CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG +CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG +TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA +CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG +AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG +GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC +TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA +TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA +GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT +GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC +ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT +TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC +CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG +CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG +GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC +CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT +GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC +GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA +GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA +GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA +GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG +AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT +CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA +GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA +AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC +GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT +ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG +GAGGCTGAGGCAGGAGAATC +>TWO IUB ambiguity codes +cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg +tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa +NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt +cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga +gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa +HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca +tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt +tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt +acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct +tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt +gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa +accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt +RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt +tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag +cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg +ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat +actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg +YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa +KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata +aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa +aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg +gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc +tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK +tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt +ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg +ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa +BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt +aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc +tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc +cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac +aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga +tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga +aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD +gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg +ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV +taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa +ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat +gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg +gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa +tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt +tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt +taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca +cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag +aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt +cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt +ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW +attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag +ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa +attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc +tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta +aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata +cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc +gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg +attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca +BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga +DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat +tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM +tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR +tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg +taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc +aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc +DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa +VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt +agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat +gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt +tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt +catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt +tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR +aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat +aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac +acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS +tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga +aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM +acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt +RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt +RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta +tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac +gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt +YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc +ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt +ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat +gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta +KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD +aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg +gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH +taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact +VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV +NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa +MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag +cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata +ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg +tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN +aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc +actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg +tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga +gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa +BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca +aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata +aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat +YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt +aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW +cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata +tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata +tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt +MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac +taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta +tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS +RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc +agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata +NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa +gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata +aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt +ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW +cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt +tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa +RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt +tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD +gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc +tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta +ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM +tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc +ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc +BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt +gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga +acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag +gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc +taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat +acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta +tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt +catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa +tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB +atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR +ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta +ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta +cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK +SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW +VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc +BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct +NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt +tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa +ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa +cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa +VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR +atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac +aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc +tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac +RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag +gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc +tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact +attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc +atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga +cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt +NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR +ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat +cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg +aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac +agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR +tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga +ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg +ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa +tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag +taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg +tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN +YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt +ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa +tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat +ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg +attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt +atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW +YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta +gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV +MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta +tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt +ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa +aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa +BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM +tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK +StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV +cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN +atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg +atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg +ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct +gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM +tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD +BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc +agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga +HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR +tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt +aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa +catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB +aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat +tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt +cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag +DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat +gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta +tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM +atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc +KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt +tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata +tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK +taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt +NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa +HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa +ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg +tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK +cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga +ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca +HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg +gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS +BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg +gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat +KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact +cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat +tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD +taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM +gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt +aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat +acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta +RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc +attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac +KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS +KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD +gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB +aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct +aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga +ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY +tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga +aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta +tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY +MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc +cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta +caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt +ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc +acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat +tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc +gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa +atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga +aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat +NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt +taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa +aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat +ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca +DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata +tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat +aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa +ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM +ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca +RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa +aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac +aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt +aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK +tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat +atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR +BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc +gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct +cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN +RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat +taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt +aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt +gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct +gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa +aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta +gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg +ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat +MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct +SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY +aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt +VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat +HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc +agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt +gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg +agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg +tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag +gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga +VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg +tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV +MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt +actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa +WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa +tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD +KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct +BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac +attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB +VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD +aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca +tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat +tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK +tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt +VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta +tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat +ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa +tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg +WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta +tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc +tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct +MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat +tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac +atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg +aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt +aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa +aatYggtaRtatNtHcaatcaHtagVtgtattataNggaMtcttHtNagctaaaggtaga +YctMattNaMVNtcKtactBKcaHHcBttaSagaKacataYgctaKaYgttYcgacWVtt +WtSagcaacatcccHaccKtcttaacgaKttcacKtNtacHtatatRtaaatacactaBt +ttgaHaRttggttWtatYagcatYDatcggagagcWBataagRtacctataRKgtBgatg +aDatataSttagBaHtaatNtaDWcWtgtaattacagKttcNtMagtattaNgtctcgtc +ctcttBaHaKcKccgtRcaaYagSattaagtKataDatatatagtcDtaacaWHcaKttD +gaaRcgtgYttgtcatatNtatttttatggccHtgDtYHtWgttatYaacaattcaWtat +NgctcaaaSttRgctaatcaaatNatcgtttaBtNNVtgttataagcaaagattBacgtD +atttNatttaaaDcBgtaSKgacgtagataatttcHMVNttgttBtDtgtaWKaaRMcKM +tHtaVtagataWctccNNaSWtVaHatctcMgggDgtNHtDaDttatatVWttgttattt +aacctttcacaaggaSaDcggttttttatatVtctgVtaacaStDVaKactaMtttaSNa +gtgaaattaNacttSKctattcctctaSagKcaVttaagNaVcttaVaaRNaHaaHttat +gtHttgtgatMccaggtaDcgaccgtWgtWMtttaHcRtattgScctatttKtaaccaag +tYagaHgtWcHaatgccKNRtttagtMYSgaDatctgtgaWDtccMNcgHgcaaacNDaa +aRaStDWtcaaaaHKtaNBctagBtgtattaactaattttVctagaatggcWSatMaccc +ttHttaSgSgtgMRcatRVKtatctgaaaccDNatYgaaVHNgatMgHRtacttaaaRta +tStRtDtatDttYatattHggaBcttHgcgattgaKcKtttcRataMtcgaVttWacatN +catacctRataDDatVaWNcggttgaHtgtMacVtttaBHtgagVttMaataattatgtt +cttagtttgtgcDtSatttgBtcaacHattaaBagVWcgcaSYttMgcttacYKtVtatc +aYaKctgBatgcgggcYcaaaaacgNtctagKBtattatctttKtaVttatagtaYtRag +NtaYataaVtgaatatcHgcaaRataHtacacatgtaNtgtcgYatWMatttgaactacR +ctaWtWtatacaatctBatatgYtaagtatgtgtatSttactVatcttYtaBcKgRaSgg +RaaaaatgcagtaaaWgtaRgcgataatcBaataccgtatttttccatcNHtatWYgatH +SaaaDHttgctgtccHtggggcctaataatttttctatattYWtcattBtgBRcVttaVM +RSgctaatMagtYtttaaaaatBRtcBttcaaVtaacagctccSaaSttKNtHtKYcagc +agaaaccccRtttttaaDcDtaStatccaagcgctHtatcttaDRYgatDHtWcaaaBcW +gKWHttHataagHacgMNKttMKHccaYcatMVaacgttaKgYcaVaaBtacgcaacttt +MctaaHaatgtBatgagaSatgtatgSRgHgWaVWgataaatatttccKagVgataattW +aHNcYggaaatgctHtKtaDtctaaagtMaatVDVactWtSaaWaaMtaHtaSKtcBRaN +cttStggtBttacNagcatagRgtKtgcgaacaacBcgKaatgataagatgaaaattgta +ctgcgggtccHHWHaaNacaBttNKtKtcaaBatatgctaHNgtKcDWgtttatNgVDHg +accaacWctKaaggHttgaRgYaatHcaBacaatgagcaaattactgtaVaaYaDtagat +tgagNKggtggtgKtWKaatacagDRtatRaMRtgattDggtcaaYRtatttNtagaDtc +acaaSDctDtataatcgtactaHttatacaatYaacaaHttHatHtgcgatRRttNgcat +SVtacWWgaaggagtatVMaVaaattScDDKNcaYBYaDatHgtctatBagcaacaagaa +tgagaaRcataaKNaRtBDatcaaacgcattttttaaBtcSgtacaRggatgtMNaattg +gatatWtgagtattaaaVctgcaYMtatgatttttYgaHtgtcttaagWBttHttgtctt +attDtcgtatWtataataSgctaHagcDVcNtaatcaagtaBDaWaDgtttagYctaNcc +DtaKtaHcttaataacccaRKtacaVaatNgcWRaMgaattatgaBaaagattVYaHMDc +aDHtcRcgYtcttaaaWaaaVKgatacRtttRRKYgaatacaWVacVcRtatMacaBtac +tggMataaattttHggNagSctacHgtBagcgtcgtgattNtttgatSaaggMttctttc +ttNtYNagBtaaacaaatttMgaccttacataattgYtcgacBtVMctgStgMDtagtaR +ctHtatgttcatatVRNWataDKatWcgaaaaagttaaaagcacgHNacgtaatctttMR +tgacttttDacctataaacgaaatatgattagaactccSYtaBctttaataacWgaaaYa +tagatgWttcatKtNgatttttcaagHtaYgaaRaDaagtaggagcttatVtagtctttc +attaaaatcgKtattaRttacagVaDatgcatVgattgggtctttHVtagKaaRBtaHta +aggccccaaaaKatggtttaMWgtBtaaacttcactttKHtcgatctccctaYaBacMgt +cttBaBaNgcgaaacaatctagtHccHtKttcRtRVttccVctttcatacYagMVtMcag +aMaaacaataBctgYtaatRaaagattaaccatVRatHtaRagcgcaBcgDttStttttc +VtttaDtKgcaaWaaaaatSccMcVatgtKgtaKgcgatatgtagtSaaaDttatacaaa +catYaRRcVRHctKtcgacKttaaVctaDaatgttMggRcWaacttttHaDaKaDaBctg +taggcgtttaHBccatccattcNHtDaYtaataMttacggctNVaacDattgatatttta +cVttSaattacaaRtataNDgacVtgaacataVRttttaDtcaaacataYDBtttaatBa +DtttYDaDaMccMttNBttatatgagaaMgaNtattHccNataattcaHagtgaaggDga +tgtatatatgYatgaStcataaBStWacgtcccataRMaaDattggttaaattcMKtctM +acaBSactcggaatDDgatDgcWctaacaccgggaVcacWKVacggtaNatatacctMta +tgatagtgcaKagggVaDtgtaacttggagtcKatatcgMcttRaMagcattaBRaStct +YSggaHYtacaactMBaagDcaBDRaaacMYacaHaattagcattaaaHgcgctaaggSc +cKtgaaKtNaBtatDDcKBSaVtgatVYaagVtctSgMctacgttaacWaaattctSgtD +actaaStaaattgcagBBRVctaatatacctNttMcRggctttMttagacRaHcaBaacV +KgaataHttttMgYgattcYaNRgttMgcVaaacaVVcDHaatttgKtMYgtatBtVVct +WgVtatHtacaaHttcacgatagcagtaaNattBatatatttcVgaDagcggttMaagtc +ScHagaaatgcYNggcgtttttMtStggtRatctacttaaatVVtBacttHNttttaRca +aatcacagHgagagtMgatcSWaNRacagDtatactaaDKaSRtgattctccatSaaRtt +aaYctacacNtaRtaactggatgaccYtacactttaattaattgattYgttcagDtNKtt +agDttaaaaaaaBtttaaNaYWKMBaaaacVcBMtatWtgBatatgaacVtattMtYatM +NYDKNcKgDttDaVtaaaatgggatttctgtaaatWtctcWgtVVagtcgRgacttcccc +taDcacagcRcagagtgtWSatgtacatgttaaSttgtaaHcgatgggMagtgaacttat +RtttaVcaccaWaMgtactaatSSaHtcMgaaYtatcgaaggYgggcgtgaNDtgttMNg +aNDMtaattcgVttttaacatgVatgtWVMatatcaKgaaattcaBcctccWcttgaaWH +tWgHtcgNWgaRgctcBgSgaattgcaaHtgattgtgNagtDttHHgBttaaWcaaWagc +aSaHHtaaaVctRaaMagtaDaatHtDMtcVaWMtagSagcttHSattaacaaagtRacM +tRtctgttagcMtcaBatVKtKtKacgagaSNatSactgtatatcBctgagVtYactgta +aattaaaggcYgDHgtaacatSRDatMMccHatKgttaacgactKtgKagtcttcaaHRV +tccttKgtSataatttacaactggatDNgaacttcaRtVaagDcaWatcBctctHYatHa +DaaatttagYatSatccaWtttagaaatVaacBatHcatcgtacaatatcgcNYRcaata +YaRaYtgattVttgaatgaVaactcRcaNStgtgtattMtgaggtNttBaDRcgaaaagc +tNgBcWaWgtSaDcVtgVaatMKBtttcgtttctaaHctaaagYactgMtatBDtcStga +ccgtSDattYaataHctgggaYYttcggttaWaatctggtRagWMaDagtaacBccacta +cgHWMKaatgatWatcctgHcaBaSctVtcMtgtDttacctaVgatYcWaDRaaaaRtag +atcgaMagtggaRaWctctgMgcWttaagKBRtaaDaaWtctgtaagYMttactaHtaat +cttcataacggcacBtSgcgttNHtgtHccatgttttaaagtatcgaKtMttVcataYBB +aKtaMVaVgtattNDSataHcagtWMtaggtaSaaKgttgBtVtttgttatcatKcgHac +acRtctHatNVagSBgatgHtgaRaSgttRcctaacaaattDNttgacctaaYtBgaaaa +tagttattactcttttgatgtNNtVtgtatMgtcttRttcatttgatgacacttcHSaaa +ccaWWDtWagtaRDDVNacVaRatgttBccttaatHtgtaaacStcVNtcacaSRttcYa +gacagaMMttttgMcNttBcgWBtactgVtaRttctccaaYHBtaaagaBattaYacgat +ttacatctgtaaMKaRYtttttactaaVatWgctBtttDVttctggcDaHaggDaagtcg +aWcaagtagtWttHtgKtVataStccaMcWcaagataagatcactctHatgtcYgaKcat +cagatactaagNSStHcctRRNtattgtccttagttagMVgtatagactaactctVcaat +MctgtttgtgttgccttatWgtaBVtttctggMcaaKgDWtcgtaaYStgSactatttHg +atctgKagtagBtVacRaagRtMctatgggcaaaKaaaatacttcHctaRtgtDcttDat +taggaaatttcYHaRaaBttaatggcacKtgctHVcaDcaaaVDaaaVcgMttgtNagcg +taDWgtcgttaatDgKgagcSatatcSHtagtagttggtgtHaWtaHKtatagctgtVga +ttaBVaatgaataagtaatVatSttaHctttKtttgtagttaccttaatcgtagtcctgB +cgactatttVcMacHaaaggaatgDatggKtaHtgStatattaaSagctWcctccRtata +BaDYcgttgcNaagaggatRaaaYtaWgNtSMcaatttactaacatttaaWttHtatBat +tgtcgacaatNgattgcNgtMaaaKaBDattHacttggtRtttaYaacgVactBtaBaKt +gBttatgVttgtVttcaatcWcNctDBaaBgaDHacBttattNtgtDtatttVSaaacag +gatgcRatSgtaSaNtgBatagttcHBgcBBaaattaHgtDattatDaKaatBaaYaaMa +ataaataKtttYtagtBgMatNcatgtttgaNagtgttgtgKaNaSagtttgaSMaYBca +aaacDStagttVacaaaaactaaWttBaagtctgtgcgtMgtaattctcctacctcaNtt +taaccaaaaVtBcacataacaccccBcWMtatVtggaatgaWtcaaWaaaaaaaaWtDta +atatRcctDWtcctaccMtVVatKttaWaaKaaatataaagScHBagaggBaSMtaWaVt +atattactSaaaKNaactatNatccttgaYctattcaaaVgatttYHcRagattttaSat +aggttattcVtaaagaKgtattattKtRttNcggcRgtgtgtWYtaacHgKatKgatYta +cYagDtWcHBDctctgRaYKaYagcactKcacSaRtBttttBHKcMtNtcBatttatttt +tgSatVgaaagaWtcDtagDatatgMacaacRgatatatgtttgtKtNRaatatNatgYc +aHtgHataacKtgagtagtaacYttaNccaaatHcacaacaVDtagtaYtccagcattNt +acKtBtactaaagaBatVtKaaHBctgStgtBgtatgaSNtgDataaccctgtagcaBgt +gatcttaDataStgaMaccaSBBgWagtacKcgattgaDgNNaaaacacagtSatBacKD +gcgtataBKcatacactaSaatYtYcDaactHttcatRtttaatcaattataRtttgtaa +gMcgNttcatcBtYBagtNWNMtSHcattcRctttttRWgaKacKttgggagBcgttcgc +MaWHtaatactgtctctatttataVgtttaBScttttaBMaNaatMacactYtBMggtHa +cMagtaRtctgcatttaHtcaaaatttgagKtgNtactBacaHtcgtatttctMaSRagc +agttaatgtNtaaattgagagWcKtaNttagVtacgatttgaatttcgRtgtWcVatcgt +taaDVctgtttBWgaccagaaagtcSgtVtatagaBccttttcctaaattgHtatcggRa +ttttcaaggcYSKaagWaWtRactaaaacccBatMtttBaatYtaagaactSttcgaaSc +aatagtattgaccaagtgttttctaacatgtttNVaatcaaagagaaaNattaaRtttta +VaaaccgcaggNMtatattVctcaagaggaacgBgtttaacaagttcKcYaatatactaa +ccBaaaSggttcNtattctagttRtBacgScVctcaatttaatYtaaaaaaatgSaatga +tagaMBRatgRcMcgttgaWHtcaVYgaatYtaatctttYttatRaWtctgBtDcgatNa +tcKaBaDgatgtaNatWKctccgatattaacattNaaacDatgBgttctgtDtaaaMggt +gaBaSHataacgccSctaBtttaRBtcNHcDatcDcctagagtcRtaBgWttDRVHagat +tYatgtatcWtaHtttYcattWtaaagtctNgtStggRNcgcggagSSaaagaaaatYcH +DtcgctttaatgYcKBVSgtattRaYBaDaaatBgtatgaHtaaRaRgcaSWNtagatHa +acttNctBtcaccatctMcatattccaSatttgcgaDagDgtatYtaaaVDtaagtttWV +aagtagYatRttaagDcNgacKBcScagHtattatcDaDactaaaaaYgHttBcgaDttg +gataaaKSRcBMaBcgaBSttcWtgNBatRaccgattcatttataacggHVtaattcaca +agagVttaaRaatVVRKcgWtVgacctgDgYaaHaWtctttcacMagggatVgactagMa +aataKaaNWagKatagNaaWtaaaatttgaattttatttgctaaVgaHatBatcaaBWcB +gttcMatcgBaaNgttcgSNaggSaRtttgHtRtattaNttcDcatSaVttttcgaaaaa +ttgHatctaRaggSaNatMDaaatDcacgattttagaHgHaWtYgattaatHNSttatMS +gggNtcKtYatRggtttgtMWVtttaYtagcagBagHaYagttatatggtBacYcattaR +SataBatMtttaaatctHcaaaSaaaagttNSaaWcWRccRtKaagtBWtcaaattSttM +tattggaaaccttaacgttBtWatttatatWcDaatagattcctScacctaagggRaaYt +aNaatgVtBcttaaBaacaMVaaattatStYgRcctgtactatcMcVKatttcgSgatRH +MaaaHtagtaaHtVgcaaataatatcgKKtgccaatBNgaaWcVttgagttaKatagttc +aggKDatDtattgaKaVcaKtaataDataataHSaHcattagttaatRVYcNaHtaRcaa +ggtNHcgtcaaccaBaaagYtHWaaaRcKgaYaaDttgcWYtataRgaatatgtYtgcKt +aNttWacatYHctRaDtYtattcBttttatcSataYaYgttWaRagcacHMgtttHtYtt +YaatcggtatStttcgtRSattaaDaKMaatatactaNBaWgctacacYtgaYVgtgHta +aaRaaRgHtagtWattataaaSDaaWtgMattatcgaaaagtaYRSaWtSgNtBgagcRY +aMDtactaacttaWgtatctagacaagNtattHggataatYttYatcataDcgHgttBtt +ctttVttgccgaaWtaaaacgKgtatctaaaaaNtccDtaDatBMaMggaatNKtatBaa +atVtccRaHtaSacataHattgtttKVYattcataVaattWtcgtgMttcttKtgtctaa +cVtatctatatBRataactcgKatStatattcatHHRttKtccaacgtgggtgRgtgaMt +attattggctatcgtgacMtRcBDtcttgtactaatRHttttaagatcgVMDStattatY +BtttDttgtBtNttgRcMtYtgBacHaWaBaatDKctaagtgaaactaatgRaaKgatcc +aagNaaaatattaggWNtaagtatacttttKcgtcggSYtcttgRctataYcttatataa +agtatattaatttataVaacacaDHatctatttttKYVatHRactttaBHccaWagtact +BtcacgaVgcgttRtttttttSVgtSagtBaaattctgaHgactcttgMcattttagVta +agaattHctHtcaDaaNtaacRggWatagttcgtSttgaDatcNgNagctagDgatcNtt +KgttgtaDtctttRaaYStRatDtgMggactSttaDtagSaVtBDttgtDgccatcacaM +attaaaMtNacaVcgSWcVaaDatcaHaatgaattaMtatccVtctBtaattgtWattat +BRcWcaatgNNtactWYtDaKttaaatcactcagtRaaRgatggtKgcgccaaHgaggat +StattYcaNMtcaBttacttatgagDaNtaMgaaWtgtttcttctaHtMNgttatctaWW +atMtBtaaatagDVatgtBYtatcggcttaagacMRtaHScgatatYgRDtcattatSDa +HggaaataNgaWSRRaaaBaatagBattaDctttgHWNttacaataaaaaaatacggttt +gHgVtaHtWMttNtBtctagtMcgKMgHgYtataHaNagWtcaacYattaataYRgtaWK +gaBctataaccgatttaHaNBRaRaMtccggtNgacMtctcatttgcaattcWgMactta +caaDaaNtactWatVtttagccttMaatcagVaagtctVaaDaBtattaattaYtNaYtg +gattaKtaKctYaMtattYgatattataatKtVgDcttatatNBtcgttgtStttttMag +aggttaHYSttcKgtcKtDNtataagttataagSgttatDtRttattgttttSNggRtca +aKMNatgaatattgtBWtaMacctgggYgaSgaagYataagattacgagaatBtggtRcV +HtgYggaDgaYaKagWagctatagacgaaHgtWaNgacttHRatVaWacKYtgRVNgVcS +gRWctacatcKSactctgWYtBggtataagcttNRttVtgRcaWaaatDMatYattaact +ttcgaagRatSctgccttgcRKaccHtttSNVagtagHagBagttagaccaRtataBcca +taatSHatRtcHagacBWatagcaMtacaRtgtgaaBatctKRtScttccaNaatcNgta +atatWtcaMgactctBtWtaaNactHaaaaRctcgcatggctMcaaNtcagaaaaacaca +gtggggWttRttagtaagaVctVMtcgaatcttcMaaaHcaHBttcgattatgtcaDagc +YRtBtYcgacMgtDcagcgaNgttaataatagcagKYYtcgtaBtYctMaRtaRtDagaa +aacacatgYaBttgattattcgaaNttBctSataaMataWRgaHtttccgtDgaYtatgg +tDgHKgMtatttVtMtVagttaRatMattRagataaccctKctMtSttgaHagtcStcta +tttccSagatgttccacgaggYNttHRacgattcDatatDcataaaatBBttatcgaHtN +HaaatatDNaggctgaNcaaggagttBttMgRagVatBcRtaWgatgBtSgaKtcgHttt +gaatcaaDaHttcSBgHcagtVaaSttDcagccgttNBtgttHagYtattctttRWaaVt +SttcatatKaaRaaaNacaVtVctMtSDtDtRHRcgtaatgctcttaaatSacacaatcg +HattcaWcttaaaatHaaatcNctWttaNMcMtaKctVtcctaagYgatgatcYaaaRac +tctaRDaYagtaacgtDgaggaaatctcaaacatcaScttcKttNtaccatNtaNataca +tttHaaDHgcaDatMWaaBttcRggctMaagctVYcacgatcaDttatYtaatcKatWat +caatVYtNagatttgattgaYttttYgacttVtcKaRagaaaHVgDtaMatKYagagttN +atWttaccNtYtcDWgSatgaRgtMatgKtcgacaagWtacttaagtcgKtgatccttNc +ttatagMatHVggtagcgHctatagccctYttggtaattKNaacgaaYatatVctaataM +aaaYtgVtcKaYtaataacagaatHcacVagatYWHttagaaSMaatWtYtgtaaagNaa +acaVgaWtcacNWgataNttcaSagctMDaRttgNactaccgataMaaatgtttattDtc +aagacgctDHYYatggttcaagccNctccttcMctttagacBtaaWtaWVHggaaaaNat +ttaDtDtgctaaHHtMtatNtMtagtcatttgcaaaRatacagRHtatDNtgtDgaatVg +tVNtcaaatYBMaaaagcaKgtgatgatMgWWMaHttttMgMagatDtataaattaacca +actMtacataaattgRataatacgBtKtaataattRgtatDagDtcRDacctatRcagag +cSHatNtcaScNtttggacNtaaggaccgtgKNttgttNcttgaaRgYgRtNtcagttBc +ttttcHtKtgcttYaaNgYagtaaatgaatggWaMattBHtatctatSgtcYtgcHtaat +tHgaaMtHcagaaSatggtatgccaHBtYtcNattWtgtNgctttaggtttgtWatNtgH +tgcDttactttttttgcNtactKtWRaVcttcatagtgSNKaNccgaataaBttataata +YtSagctttaaatSttggctaaKSaatRccgWHgagDttaaatcatgagMtcgagtVtaD +ggaBtatttgDacataaacgtagYRagBWtgDStKDgatgaagttcattatttaKWcata +aatWRgatataRgttRacaaNKttNtKagaaYaStaactScattattaacgatttaaatg +DtaattagatHgaYataaactatggggatVHtgccgtNgatNYcaStRtagaccacWcaM +tatRagHgVactYtWHtcttcatgatWgagaKggagtatgaWtDtVtNaNtcgYYgtaaa +ctttaDtBactagtaDctatagtaatatttatatataacgHaaaRagKattSagttYtSt +>THREE Homo sapiens frequency +agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct +cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt +tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat +tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc +gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc +tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg +tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat +atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag +cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa +ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt +ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat +atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc +gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact +tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag +gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg +atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag +tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac +ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag +tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta +aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt +gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa +ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc +agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt +agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat +acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc +cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct +cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct +cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa +aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt +tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt +atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct +cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga +tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat +catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc +tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg +caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc +tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc +aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag +aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat +ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac +gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag +ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt +cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta +gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca +ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt +cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg +taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg +gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc +taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt +ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt +aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt +gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta +acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct +ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta +tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt +tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg +tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa +ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac +aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga +tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca +gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt +gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc +cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg +actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa +tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg +ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt +ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta +agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc +gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa +tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt +atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca +cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa +tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca +gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg +gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat +aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg +gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat +cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa +taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg +tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt +ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac +aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc +gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag +aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc +tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa +tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata +aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta +ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc +ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc +caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct +gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg +cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc +ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta +tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg +atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc +ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc +acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc +taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga +ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga +aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat +cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc +tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact +gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa +aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag +cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc +cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa +gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg +cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg +gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca +agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac +aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt +aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg +cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt +agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg +cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa +agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga +gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta +aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata +agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc +cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc +agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca +ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga +tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag +gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat +gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt +ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg +gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc +atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc +tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata +ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg +tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag +cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg +ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat +aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg +gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat +ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag +atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac +aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct +gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga +atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt +aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt +tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg +ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta +gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac +cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct +ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga +ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg +ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat +cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga +tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt +tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc +cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt +gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct +ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt +ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa +tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc +agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta +ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc +cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct +agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc +tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc +gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga +ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa +ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca +agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata +attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact +ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat +agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat +aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata +gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta +gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg +ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac +gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata +ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat +taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta +aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata +tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata +ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga +agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt +ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt +agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg +gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa +tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg +gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct +cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc +ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta +cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt +gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc +gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc +tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt +cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca +aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac +ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac +gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag +aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga +gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct +aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta +gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat +agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat +caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta +gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta +aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt +tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt +tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc +ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg +ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg +gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa +ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa +aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa +tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat +acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac +atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga +gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac +tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc +cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa +gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg +acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga +acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga +attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg +tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt +cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag +aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac +ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac +tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat +gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga +gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc +acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta +gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac +gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc +ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt +taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg +agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa +gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag +ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc +accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag +tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact +taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga +catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat +tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga +ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg +aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa +atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa +tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt +ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact +tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt +aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat +agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc +acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc +aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct +ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat +gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat +taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata +taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga +tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat +gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg +ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa +atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat +tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat +cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt +aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac +taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag +caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata +ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct +tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac +tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg +gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta +gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat +gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg +ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa +tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa +taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac +gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt +ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga +gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca +tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc +ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt +tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc +cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat +ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg +caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg +cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat +gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat +cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg +taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat +tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata +taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc +tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac +tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt +tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt +ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt +aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg +atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga +actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta +gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga +ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga +gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct +tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc +aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta +atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt +catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc +taaagataactctagtaaggccaactcccttcaatgctgttgccagttataatccaagag +ctgtccttttctgaaccatagcggcttctgaagcgaactagaagcaaagttggttctagc +cagacagccacataccctgtacgggtgtattactaaaactggtccggtattagttcacca +agggaggaattaggcaaaggatctaggtatgcaagtcggagtattacatccctaccctga +atccatcaataggttcctctgtactggccttcgcaatgagtattcaaggttgtacagccg +tataataataagatagtgactatgaacgggaagtaacccgctcaccttccccaaaacatt +gttatatctaagtattaaagtctgccgtagtgttaatactcgaaaataaacaactggcaa +attacaccgcacttaagccgcttttgatttatatttttccaatgcgcttttaaaaataat +tcagtcctacatactaattaagacccttaaacggagatatcacaagttaagttttaacca +tctcgactaggtggaactatagatacccaactcaatttatcattacctgtaatgttccta +gaaggattgcatttcatgtcaagacggtggagtttcacagcgaaacttcagtgtgaacag +attctgagaaatcacctaaacctattagtcagagcacccggttagaaccagttgtcaaaa +aatagagcggttgcatgagacagaagtaacgatgagatccgttgtaacgttgagacatct +ggcctatcgtcaatacagtcctcccttaaaaatatttttaaatactaggcaaacccaaca +taggttagtcctatgtgatacgccacatggtatatcattttgtaacgttacctagggata +atcaggaagtggaattacgcaaaagtagacagtgaaatgcttagggttatagtctagtcc +aaagataaaggataaagcacgtcagagaactatattagccgaatgggaatcattgttagg +agactgtggatcatgtctaaaaagcaacgcagaaacagtcatcgaaaaaatctcgttttt +gtttgaatctaaaagagctttgatgaccgatagtacctgtatactagttactgtattacg +tgtctaatgatttcggattggggtccccagaatcagacgtcattgtagacgattcaagtt +taccaatttaatttcccagctctccttggagaactatcgccaataattgcagtcactttc +cttttctgaaacgataaagccgtcagagttctctgcaacgttggacttacctgaggttct +aacccactttcggttctaatagtagttaacgacacaacgaataacctttactgtggggct +ttcacgatattttttcgcttattattaatggttacgtcataagctggtgtccaaattaag +gttaccggcttcgcagagtagttgtatccaagtataacttccctaatcataagatcgagg +tagaaaattaatgctgtctctaaccgaacagatatgtcccactatgtggtatggacgttg +ctaattacttctgaagggaaattggtcattatggatacgtgtctaccatcaggtcggacg +cagatatggttctgtcttcagttgatccaccgttctttataggataataactgacgatta +aagattatggtaaatagattaagccaattctcttcttgtcagtgaagcatccttaactga +cttgctctgcagcccctcatacatttagctattcaaagtaccggctcgtttcaaactctc +ccacctttggaagaggttgtcaacttgataagtatatcatttacagcattttttcggacg +tacctctaatgtttcattgcagaaaattagttttttctatcgcacattttgcaagtaacg +ttagagacacaattatctgcgaatgaactgctagatctgacgaccgggagcctcgcaaat +atcaaaaaagactgacatatatcaaggagtcgttgacaagtgctggtaagtcaattggtt +tatctgtcccggcgtttcgatcttaagctgaccatgcacggcagagtaatgtcactctcg +ttcttacaagtctgtctccaagggtcggcaaaaaagacccctccattctcgagcccactc +acgatatgtagggacgacaacttgtgcggcttatgaattgtctggactgcgggcgagggt +ccatatctccgaagttagaagggacatacctttagatgataagatcaattcttattgacg +aaattcatccacaacggggaacaacttcaccctagacttacgtctgaaaagacacctagc +gtcttataaaaggtcagtgccccgtttcgtaaggctggaattacctacgcaaacttaaac +ctcgcgcccttccttacgtatcgacaagatagaggctatcgcgaatgtactacggaggca +tgaatcatatactagaaccaagtgcctgtgatattaacaagatgatccgacgcgagcacc +gtaattctaggcataaaactccagcaatttgggggccgaaaacaaatgacgttagctaat +taattatatgacatgatcaaaggaggtcaatcacgcatcgagttcgacgtatattcattg +aacttcgtgcgtttgaaagaaacttttatgaaggcaaaattgatcctgtctcctatttca +tgcgtacctcctagttgataattccccgagcagtggttaggacacttttgtcggtatcaa +gttccggtctcaaaacgtaaaattctgtaatctgtatggatggtctgtgaattagttaat +ttttatgaagtcgtcgagacgcagttcctattgatttattctaaacggagatgtgcttcg +tgggactcggaagtagatctgtgtttatgattattgctactttagatgctgactgttaac +tccgtgttgtttttcaaccgtatatcacaaccgaattggatagaacctatagtttcaagt +tctgccacaaggtatcatatttacagttagtgctggttgcttctttcaaacgtggtgagt +ttgtgctatcacgtcaacggtagagctcagtggaccgagtgcgcgttcaaccctgttcca +gagagggtgtgatagcacatataccacgctcgtcgaggcgttcatgatagtttgcaagag +ccggtgttaaacacatattattattgttatccaactaatcggacctatgcataaagcatt +gtctaaacagaataattgcctatatacggtagttttagtgatttatatcttagtatcagt +tagagcttcgaactcttcaggttcctcatatttaacgttcttcgaaagcgaaaacttcta +caaacgaatgtaagcggttttccaagtagtacctataaatcacagaaagatctgtctcag +tatagttgaaatggtattcagctagtgacgtgtaccaattatcatagttcactcaagcaa +gacgctcattaacgaatatagacaagacactatatcatataataaaaaagaacatggtgc +tcgaacatagttgaattcaccatattgaaggggaatgctgacatgtaattcgctactaga +cgatcaattccctacttgtcaaagttgaactggtacgttcttggaattaaatatgattgc +gctggaccaaattgcgacttcttgagtttcagggcaaacgattgagccggaggatgtccg +tctcttacctttcttgcttatgataaacgacggtccctgtacatcactgggaattctcag +caaaaataattgggtaaatcgagactcgatgtattcggccacaaaggtgttagacgttaa +agattattcaacggggcgataataggatcataaccggtatgcaagcgcattgaaagagcc +atgagatccttatccgataaacgctgcacggtatgtgcagccttattgtcgatcacgaat +ttataaatgtagtctgggctgtaagttgaagacctaagttataatgaagtgcaataccaa +atcgattcatagtggattatcagactcaagatatctcctgataaattacagttgttaaga +tacggataaaatgagatttaagattagcagcctctaatctgtttcaatcccgttggaatg +tggtatgcgatcaaggttaagttaaaatcaagcctgtcttcagtcttgattcttgttctg +ccatcgcatgcggtctacgtgagttaatatgtagcttacgttctagcttgtgctaatctg +agtatagattcgtagaggaatattatcaagcttccacgcctcaacgtacgtgtattggtc +acacaagacactaaaagtggaagtagcgtaaactatagtctagttgttaaatgctcagtt +cttgttatattcgatatactcttggctaatttatgtctgagtatataaaattaatgatat +taacttgcatttcacggatcccttagaaaaagattttgaccgagcgcattataaacggtt +acaccgaatcaatagaagcatacccaatagctttctttgaatttattgcctgcgcaactt +ggctgactctctagatccgaataattctatatggtcgtgacgaaactagttcattactgt +ttaaaatgccaacatgtcttttgggccgataatggctctttgcaaaattactcaatgata +cgattgatcaaagcggtagttgctagtggtagcatgtaagtctatcaaatgtctgattat +ccgaaaatcttccaaaagagtccacgtaccatatctatctcatagcgacgcgaggggaac +cttatctaactatcattccatttaccgggtgactctcgatgcaggatccgattgggataa +attgcccagaaatggctcattcctgactaagggtaaggccgttctcagcaagggaacccc +gcgaatctaggcttataccatctagattgttaactacttgcctgtagttctacagccata +ctggacagttgtttctaaatgatcgggattcatgctagcactcctctgaatgcaccgcgt +aagtttaactattacgtccgtgggcagataaggatggaggctgtatgtatcttaactgtt +acctaatatggctggtaattatcaaagtaaggaccttaatgccatagcgctagcaatcgc +tttgtatactgaccatgtgccaacctctcttaatctgtaaaatataatgtcttagctaac +tgtggacgatcatgtctctgcctagagcttcgctgtatcaattcctatagccagcgtact +agtgacacaacaacaccgtgtgagaaaagatattagtccttacgtctgtctctctacagc +ttattgatgaggattgaacatggacatatagctccccctcaaaagcagatgctacctctt +tattccattctcgaacatttgccgaacttaatttcgacaaacctgaggtcacgtcttaat +ttatcggtaacgtcacgtccctttgagactggataaatatattaccaggggccaacgagc +aattgttggaggcgcttctataatacaaggtgtcttgtcaaagaaagacggcgtgcgtct +cgtgcaactcacttaaccaatattaatgtgaaacccccctctctcacatcttatgcggtg +tactgccctggtacatttcctgtacaggactccaacagtgtagattcctaagatagctgt +tggagttgcctcacgccagatcgaaaaactgaataaactagtgagctgagctgcagaaat +accgcttaattacttatgactagttcaaagggacctacgtgatgtcagacattgcaagga +agaaattaggtttgtgcgtcattttggctggactagcactccttacttcccctactattc +aaatgtcgtaaacagcatgagacaggatcgtgctgacatttaaggtctattgggaacgag +gctacctttggtcgcgcgctcgcgttctccgaatgaccgaaatgcatgagcacagtatgc +aattgcttatagatctaaggtctggtcgttgaaaccaagcacgtaggcctgggaaatcag +ttcttcctcagcaactacacaaaagcgtccaagcattagtacttgtagtaaatgtccgaa +cctatgcgctcatttgaaagtcaaaaaatatttttaagcagtaggcacctaacccgattc +ctctacttagtagctttctttgattctcagaattgactgcaatatcactgcacaattctg +tgccattactagacttctctgtattaacgtctcatcttactaacactcgcctaggacaca +tctgagagtgaagtatttcaatacatttactgaaatcttcagttctaaaatccccgaata +aggctcttatcggtttggccaacacaagaaaaaaacttcttgcaccactcaccttcatac +gcaggagcctggggaacttagtaataactatttcggcagacaaagcttataacaagttgc +cggcgcgtataatatttaaaagaccccttgagctgctcaattaaaacgctcacctggtat +aggctattagatagtgccgtcttagtaaggggcgggaattatcggataaactgatatttt +gataaaataaccgacttgttcacgacataagtcactaaggagattttatctttctccaaa +gtatatcttccttggataatttcaaagcgctgcaatttaagttctgttactagtttatgc +tgctgggaggtgaccggaaggcgtagtaatctagaggcaaattataagaagttcatcata +tcattttcgactacaaaaacaaggtgttgtatgccggcgcattgtgtaaactggacgagt +accctagatggaaaattatacgttaagccaagatttcgatgtaatgataattacctacac +atttttgctatccataggaacaagagctgttctataggctcgtggcatacgaacatttgc +tgccgctatgaatattggaagctcttcaactacagactctattcttaattgccgtcgaaa +atgggccgaatcggctattattaatactcggtttttccgaggggattgttgtcgacagtc +gtaattattattaatattgatgttggtgaggtcatttaaatacaaccttgcagacaatga +ataagggatccaatctctcatactccttttacaattgctcatgcccctatgcaaacctta +tgccgccacacctccgcaactctctcttctgaactgtaagtagcttcattactggtttga +gactatactgaagctgatgacattctaaaatggctattttcgaatgtgattcataatgtt +tatcgtttgggatggcagaatcacgttatttttgatatagcccgggtattctattgtata +gaacgtatgctacaagtcattccccgaagaagactagaagtaaacaacatgcgaccatcg +ttaagccacgcaaggctgtagctttatttcccgataacctatcttccataaatagcggac +agcaggatactgacgctcaacatcagtggttatggtctaatttttaacttttaataaggt +aacttcagcaggcatacacagtaactctttaatttataatcaaattagaagtctgacact +tcttatatttttctatcatccaacgcgatcgcccattagcttattgtgttactaataacg +tatctaaaccaatccttttcaagctactgcctatattgtcaatatatacaaacaacagga +tagtaggctgcttaaaaaatattgtcaaccgtgtacgctttacaatacccggaaatcaca +aactttgtagacaacgagtgaaatttatacactacgaagggccagcgtacaagacccatg +aattaggcgatatgtttattctgacatattggtttatccttaatctgtcgctgtaaaatg +aagccgcccccatccctgcgaattttttttcgaagattcacgactgaaatataaatacgt +ttggctatatttatgttggagggaggcaatagcctttactgttaaccgaagatttagcca +gtgagtgtgacactaaaacactggaataaatgcaggcgttcttctgggtaaaaggtttag +tcaatctcgcctataagttcatatagctctggatataattatctggcccatgcatttatc +atggcgcttggtgccctgtgtgaagccggcctctcatattgaaggtccgaagtattccat +gtacattaagatcactctctcattcatgcatcttggcttaacaaatctggttgtccaagc +tttccaggcacgtatggtacaaattcggatcgaatacttataaaaatgatatgttaaact +gtctaaaacgctcatctacaaagtaaagtgcactaaccaatagagtctcaagaccgtgta +atgctggtgcactgaatgtgtaatacggttagaagggattagttatgttacaaatccatt +gaaaacttaagaagcattgcgtgctcggagggtgcatcttttatcaagagactaacatta +ttttcaacgacgtacatgctttacaatagggtacttatcaaacgccgagaaacgcgccta +tagtgatgttatgattatgacccgatatccattggaccgaattttatgtaggttcccagc +gtactcgcgtaatatctcggtattgccataatgtaatacttgtcggtctctcccagatga +aaaagcgttacagagtatttcaatgaaaaacagcgcgcaacgtcaatacctttaggggta +acggccgctgatttcatatagatatacgataagttggtatagctctactaggtggcatcc +acaatcgttgcatttactatagctggttacaatcataatctataccgttccttacatact +accatagcgggatagcgtttttttgccgttgattgggtttaagaggatgtcagtctcatt +atatccgattcggtgggagagccgttgttttcaaatcgcacactttgtgacataatgtac +aagataacaaaactgatataagatataaactgtcaatatcaccttgacacttgaatcaaa +gtaaattaactcgcaaatataatttgactaattgggtgcagatttctcaattaataaaaa +aatggcaccggatgggcttacaagccccttatcattcacttgtatcatgatttccaagaa +caatagaatttgctagcaagtatgaacagagattcgaattgcatccacagtacgccggag +cgtttattttaatgtggatatgacgatgtactgttggcggcatttgctagtaaccggtcc +ttatttacgtagcgcacacgtaagcatgtctgggagaaatatggtggtacaatctcagag +aaagattacagtttggtttaaataggacttatcgggtcggaagtggaacttaataagcag +tacacaattgggcaacagacgtcttgcctattacaataggattacaatgcgttagatttc +agacacgttcgtgtttggctattcgtcaattccctaaatagttagacgatcaactattat +caaagtgattctttgttcatcctccattcatgtaacagatggcacactacgcataacgcc +gaggaattttaacgagatttaagagagcagttcgggcacaacccacttgactttataaca +gctcggcagcataaacggtaatatgtgacaaatttccaaacgttataagaacgtatgtgt +acttagaaaactaagtggttcatgttcaacagatgtgacgcagcaagcctaacttatcta +ttggttttgctataaaagaacaaagttacacagaatcctaagggcttgtttcacacttat +gcctagtgcttcaccatcttaaaatagcgaaaccggcacgaatcaaaccttaaaacaatg +cgcagatattggtgatggtgactccgggtatgataatggtaactgttgaccagcgcccac +ctcatcgaagtatagaaagtggttaggataaggatgagaccgaacttatttccggccata +actttagattttctacctagtacacaacatcagggcggacacgaaaccgccatcacatca +tataccaggtttaatttgcttaatgggggaagtgtcaacgaaccttcgaactttagcagg +catatggccattatatatggccccagagcagaatgctacagcagacaaaatttggattta +tgtagtttaatacctatcaaacttggtgtgaccatacttgtctaacgacagtgcacaaag +tgtaagttacaattattactactcagcagcttctgcaatgataaaatcttatcatacacg +tcacatatgataatatctacttagggggaacgggctccacaacctacatagtactcaata +cttacactattcgacaggcacaccaaacctgtacagtcccaaaagattgagtcaactttg +cagtactgcagatcacagtaatagcttagttagcgagtcaaaattagttttctacgagac +tgcacgaccgtgcaaatttccgatgtgttggctacaaatagcaacgtatgaatttgtttg +aagccacgtaaactgtacaaccttagagataagtctcaggctactaaaaacacgttgtgg +cactaacaggatcatggttgattcttacttattcggctgaccggcccaataagtaacctt +caactagaacagaataatcgggagtagtttaattcagtcaaggtgcaggtctcattgtaa +ctaacaagctctgtgtaaccaagttaaaatcgttttcttagcggattccctacttatgga +tttgagctcgtccacaatattcgatacaagaagtttgtggtccgtaacaacgaaatttta +attacgctgtgcagcctcatccaaggaattaatagaaggttgatggtaggctccgaacgc +tccatgattataatcaagtggactgtgcagtaaacgaggaaggtatcctgacgtcgtggt +gttcgtttttgttatttgtgccctatacgagtagataaaccatgaacagcacagtgtgaa +cccatggttgattttaggctaccttatttttaatttccgttacacagaaacgaattccac +aactaacatgccattaatttttcgatatcttataaaagatggtcgaaattcattcattta +ttttttttcggttctcgaaagtcaactaagctgtcgcgttttgtttctctttagaggtaa +aagtggctttgatctcctacgtttggatactagtcaaccattactccatttgatccgtga +gtatcacctgtctaacatccagcattatgactcctcggcgaagaaaagacacacttctta +gagtcgatgtgtattagctagggacacagttgtttaatacgatagtgagcccagggaggg +cagtgcgtcccccagtagatttattcagctagtgtaagtataagatatctcacccacgag +gttcaagtgatatgcagtcttagaataatacttatcctgaatttcgatattatgggtact +tcaataatccgctagcgctactttatgtctcgttggacagcaggacacatggcagtctta +aacactaaagacatcacctgaatgaatgtaatgggattacaagaatcaatgaggtattat +atacgacgtaggaaactctggatatatacagtaatctagttacgccatcgcacttcattc +ctctggaaacttagaagacatcagctgtacgtggaggaaccagacccccgtatgtagcca +aatagaaccaaagttgcttatacaaacacacccaatgacaatggaccgctggagttcgta +aactcggaacgtagtactgcacaaacccagcatttagcaataggagctacgtatgcaact +cccacgtggtaataccttcaagctatcaatatataggtgcctagctaatcgcattcgcaa +gcagtattcaagcttgtaaaccagtataataattacagaggctctatgaaacccaacttt +ccagctaaaagtcccaattaaatggttatttcgtacttttaaagtcgcccgttctgttat +tacgcgaattgattctactccaaaattaaacacaaattatcaaccgtttcatttatattt +gtcaatgcagctgtttaaaataaggctctactaaattataattaagacacttattaccag +atttctctagttaagtttgaaccagctcgactaccgcgaaagatacattcccttctctat +ttttcagttcatctatgggtcagagaagcattgaatttattctattcaccctcgtcgttc +acagcgaatcgtcagtgtgatcagtgtatgagaaatatcctaaaccgtttagtcagacca +cacgcttagaacaagtggtctaaaaagactgccctggaaggagtaagaagtatacagctg +atccggtgtatccttcagtcatctgccctatactaattacacgacgcaaggaaaaatagg +tttattttctaggcaaacccttcataggtgactccgatgtgttacgaatcatgcttgaga +atgtgctatcgttaccgacggataataacgatctccaatgaaccaaatgtagaatgtcta +ttgattacccttttactattcgacttagagataggagatagaacctcagtgtactttttt +agccgaatgggaatctttgggaggtgaatggccataaggtcgtaaatccaaccctcttaa +agtcttccatattatatcgttgttcgtggaatcgataacagatttgttgacccatagtaa +atgtatactagtttatgttgtaagtgtagattgttttccgattgccgtccaaactttatg +tcgtaattgtagaccagtaaagttgaccaaggtaagtgcccagcgatcctgcgagatcga +tcgccaatttttccagtcactgtaagtgtaggtttagataaagccgtatgagttatatca +taagggcctcggaaagcagcttcgaaccaaagttcccttataatagtagtttaactataa +aagtatatactggtctgtcgccctttcacgatttgttttaccggtttatgaagcgttacg +tcattagagcggctccaatttaaggttaacggcttccatgtgtagttgtatacaaggata +acttaaagtatctgttcagcgagctagttaagttatcctcgatagaacacaactcagagg +tcccaagatcgggtttgcaacttgctaatttattctcaaggcaaattgggaattatcgat +acctgtataccataaggtcgctcgatgtgatgcttatgtcttctggtgatcctaccttag +ttagtgctgattaacggaacattaatgtttatcgttttgagatttagccaattctctgat +tctaactcaagatgccttatctgacgtgctatgcagcccctaagtattttacattgtaat +aggacacgctcctttaaaactcgccaaaaggtcgttgtggttctctactggttaactata +taatttacagctttgttgagctagttcctctttggtttaagtcctcaatattagttggtt +cgagcgataagttggctagttaccttagtcactatattagatccgaatgttatgcttcat +ctgaagaccgccaccctccaaaatttcttttaagactcacttattgcaaggtgtaggtga +attcggctcgtttctcaagtggtgtatctgtacacgagtttccatattttcatcaacagc +caccgcacacttatgtcactctaggtattaaaagtcgctctacaaggggacgcaattaag +aaacagacatgctagtcaaaaataaacatagcgaggcaccactaattcggccgcttatca +atgggatgctctgcgcgagacgcgccagagctcagtagttagttcggacatacatttact +tcagatgatcaattagttttctacaaatgcttactctaccccgaaaaaagtcaccagact +cttacgtctctttagtatccttccgtcttatataaggtcagtcccccgtttcggtaccct +ggaatttactaagaataatgaaacagcccccaaggacgtacgtttacaaatgatagacca +gatcgcctagcttattccgacgcatgttgcatagaattgaaccaacggaatgtgagagta +actagatgagccgaccacagcacccgtttgcgtcgcagaatacgcctgatagttcggcca +cgaaatcatatgtcctttgagtattaagtatttgtaatgatcaatcgagctcaagcaagc +ttacacttcctcggatattcagggaacttagtgcctttgaaagatacgttgatcaacgaa +aaattgataatggctcatatggaatgcctacctcatagtgctgaattaacacagcactgc +ggacctaacttttcgaggtttcaagttcacgtctcaaaacctaataggctggaatatgta +gggatcctcggtgaatttgtgattgggtttgttgtagtactgaccaagtgaatattcttt +ttttctaaaagcagatctgctgccgggcactacgaaggagatctctgtgtatcattattg +cttcttgacatgatgactcttaaatcactgtgggtgtgcaaaacgatagcacaacccaat +tcgatagtacatattgttgatacttcgcactaaaccgttcatatttaaaggttgtgctcc +ttccttcgttaaatactggtgacttggtcctatctactattagctagacctctggggaac +cacgcccccgtaaaacctgtgcaagagagggggtcatacatcttagacatcgcgcctcca +ccagggaagcattgggtgattgaccaggtgtgtaacaaatatgattattcttatactaat +attagcaaagatgcataatgatttgtattaaatgtataattgaattgataagggtctttt +agtcagtgatagagtagtataaggtagacattagaactcttaaccggacgcagatttttc +ggtcttagtaagccaattagtcgacaaaacaaggtaagagcggttactagtagtacctat +aatgcactgaatcttcggtcgaagtatagttctaatgctatgcagattgtgacggcgaca +aatgttcagacttatatcatgaaacaagctcttgtaagtattgacaaatgaaaagattga +atatttttaaatacaaaatgcgcctacttattaggggaattaaccagattgaaggccaat +cctcacatgtaatgagataatagacgataaatgaaattcttgtaatagttgaactgctac +gtgatgggtattatatatgattgagatcctccaattgccgacgtcttgtcttgatgccca +aaagattgtcaacgaggagctccctcgcgtacctgtcgtccgtatcataaacgacgcgac +atgtacagcactccgaagtataagcaataataatgcgggtaatccagactagatcttttc +ggactcaatgcggtttcacggtaaacatgattaataccggagagtagtcgagcttatcag +cgatgcaagcgaattcattgtgccaggagatacgttgcagataaaaccggcaacgtatgt +caacaagttttggcgatctcgttgtttgtattcgacgaggcgcgggaacttcaagaacta +tcgtatattcaagtccattaccttttagtttcagactggtggagctgactaaagttatat +catcattttgtacactggtttagttaacgataatttcagatttaacatgaccagacgata +atcgctgtatatccagttggaatgtggtttgccagaaaggttaacttataatcaagcctc +tcttcagtcttgattcgtcgtatcccatccattgcgctatacctcagtgtatttggagct +gtagttataccgtgtgctaagatcagtagacatgacgagagcaatattatctaccttaca +agcatcaacggacgtctagtcggaacaaaagactctaaaactcgaacttcaggttaatat +actatagttctgtattcagcagttattcttatattcgatattatcttgcctattggatgt +ctgactttagtatattaatcatagtatctgccatgtaaaggtgccagtactaaatctgtt +tcacagtgcgaattataaacggttacaaccattaaagacaacaagaccctatagctttat +ttgaattttgtcaatgcgcaacttggagctcgcgatacatcccaattagtctatagggtc +gggacgattctacggcatttctggttataatgacaacatggattgtggcccgagaatcgc +tctttcattaattaagcaatcattacagtcttataagcgctacttccgagtggtagcagg +taactcgatataaggtcgcatgagccgaatagcttaaaaaacaggccaccgaacattgat +agagaataccgaccacagcgcaacctttgattactttcattaaattgtacggctcactcg +acatcaagcttaagattgcgataatgtgaactcaaatggatcagtactgaagaaccgtaa +cccacttcgcagaaagcgtacccagagaagatacgctgttacaatatacagggtgaaatt +attgcctgttcttcgtaaccatttcgccaaacttggttagaaatgatagccattcatgat +agaaataagctgaatgataccagtatctttaactatgtagtcagggggaagataacgatg +gtccatgtatgtttctgatatgtgacagtattggccgcgtaatttgctaacgaagctact +taatgcctttgagcttcatatagatttctttaatcaaaatcggcaaaaagatagtatgag +ctataatatatgctagtagagaactctggaccatcatctatatgaatactgattcgagcg +tgcaattactttagcctgcgtactactgactctacaaaacactctgagataagtttgtag +tcagtaagtcgctctctataaaccttttggatgaccattgtacagccacttatagatccc +aataaatagcacaggagacagagtttttcaatgctcgatcatttgccgatagtattttcg +tctaacctcagggcacctattatttgatacctaacctaacggccctttcacaatggagaa +atatatgacatcgggacaaacacaaatggtgggtggccaggagatatgacatggtggcgt +ctctaagaaacacggactccctctaggcaaactcacgtaaccaattttaatgtcaaacaa +aacgctcgaaaagattttgccgtgtaatgacctggtacattgactggtcaggaatacatc +actgtagttgccgtagtgtcctgttggtgttccatcaagacacatcgtataacgcaattt +acgacggacatcagatcaagttatacagattatttaagtatcacgtgtgcattgggacat +aagggatctcacacatgccttggaacatttttgctttgtgccgctttttcgctgcactac +caatccttacttaccagtatattcaaaggtcgttaacagaatgagaaaggttagggctct +aagttatcgtcgattgggatagacgagacatttgcgagcgccctccacggatacgaatct +cccatatcaatgtgaactggatgctatgcagtttagttcttacgtctcctagtggtaaaa +atcaaagtagcactcgcatagcagttattcagaacctaatacacaaaaccgtcaaacatt +ttctaattctaggtatgggccgatcataggagctaaggtgaaactcataaatgttttgtt +agatctagcatcctaaaaagatgcatatactgagtagctggcgtgcattctctcaattgt +atcctttttaactgaactagtcggtcccatttcgtgactgagatctattaaccgataaga +ttaataacactcgcattcgtatcagctcagagtgaagtttttcaataatttgactgatat +attaacttctaaaataaccctttaagcctcggatccgtttcccaatcacatcaaaaattc +ttattccaactatctacggattaacaacgtgcatggggatcgtagtaagaacttgttccg +atcactttgagtatatcaagttgacggcccggttattattgaatagaaacattcacctgc +taaattaaataccgcacatcggatacccgatttcagagggccgtcttactaagggcaggc +tttgttcggtttaactgagatgttcattattttacagtatgcttcaactaatatgtaacg +aaggacagtggatctgtctccatagtagatcttcagtcgtgaatttcataccgctcctat +ttaagttcgcgttcgagttgttgatcatggcacgtgaaagcaacccctagtattctagac +gaaaattttttctagttcatctgataatttgccaattcaaaaacaaccgctggtttcccg +gcgcattctctaaaatggaagtcgaacctagagccattatttgtcggtaacccatgagtt +ccttcttttcagaagttaatacactgtggtcctatacagaggaaaaacagcggttatata +cgatcgtggcataacaacattggatcaagatagcaatttggctacctattctaattctca +ctagattcggtattccactacaatatcggcagattaggattggatgaataatcggtgttt +aagtccggttgcgtctccaatctcctaatttttattaatattgatcttggtgacctattg +taaataaaaacttcaagactttgaataacggtgaaaagatagaagactcatttgaaaatg +gatcatccacagatccaaacattagcaagacactaatccccaactagctattctgatcgc +gatcgtgctgcagtactcctgtcacaatagtctgttcatgatctaattctttttgggctt +tgttcgatggtgattcagaatctttatccggtcgcttccctgtagctactttgtggggat +attgcccggggattatagggttgagatcgtttcctaaaagtatttaaaccaagtagactt +caactaaactacatcagaacatcgtgaagacaccatacgcggtacctttatttaccgata +acatttcttcaagaaataccggtaagcagcataatgaccctaaacagctcggggtatcgt +cgtagttttaaattttatttaggttactgctcaaggaataaaaactaactatttaattta +taataatattacaaggctcacactgattagatttgtctataagacttcgcgatcccccat +taccggattgtcttaagaataaactagataaaccatgcattttctagataaggcctttag +tctaattagatacaaaaaacacgatagttgcatccttaatttattgtgtcaaacctggaa +ccttttaattacccgcaaatcactttatgtcgagactacctctgaaatttattatctacc +taccgcatgaggacttgaaccatcttgtaggagttatgtttattagctaagattcgttta +tcctgtagcggtccatgtatattcaacaagcaaaaagcactcagaattgtttttagttga +gtcaagactgatatataaataagtttccctagttttttcgtggtgggacgatattgaatt +gaatcttaaccgaagagtttcccactctgtcgcacaataatacacgccaatatttccagc +cctgcttatgccttaatcggttactcaatctcccattgaagttcattttgatctgcatag +aagtttcgggcccagccttttttctgccaccttcctccaagctctgtagacgcactctaa +gattgatgctcacatgtattaattctacattaacataaatatataagtcatgcatcttcg +agtaaaatatctggttctccaacatgtcctggcacgtatcgttataatgcccatacatgt +agtattaaaatgattgggttaactggatattaagatcatcgaaattgtaaagtcaaatta +acaatactgtctcaagaccgtgtattcctcgtgctcggaagggctattacgcttacttcc +gttttggtatcttaatatgactttcaaaaattaagttgcagtgagtcctacctgcgtgca +tcggttagcaagagtataaaagttgtttaaacgaactacttgctttacaataccggtcgt +atatatcgccgtgaatccagaagattgtcttctttggattatcaaccgagatcctgtgga +ccgatgttttgggaccttcacagaggactccaggtagagctcgcttttgcattaatctaa +gaattgtacctctctaaaagatctaaaacagtgaatgtgtatttcatggaaaaacacaga +gaaacgtaaattactttaggccgaaaggcacatgagttattatacatatacgagatggtg +gtatacatcgaattcggggcatacactatagttgcattgtatttagctgctttaaataat +atgatattaccttccttacataagacattaccggcataccctggttttcaacttgtgggg +ctttttgacgatcgcactctcatttgatccgagtagggcggtgacccctgcttttcaaat +acaaaaatttcgctatgaaggtaatagattacttttcgctgttatgatagaaacggtaaa +tttaaaattgaaacttctagaaaagtaaagtaacgagaaatgattttgtgaataatgcgg +tcatgattgcgcaagtaagaaaaaaaggcaaaaggatgcgcggaatagaaacttatcagt +cacgggtatcttgatttcattcttcttgtcaattgccgacataggatgaaatcagattcc +aatgcaatacacagtaacccccacccttgattgtaatgtcgatttgaagttgtacgcgtc +gacgaagtggatagtatacgggccttttgtacggtgcgatcaactatgaatctcggcgag +ttagatggtcgtacaatctcacacatagaggtcacttgcctgtaatgacgaattttcggc +taggtactcgaactttattagaagtaaaaatgtgggcaaaagaaggattccattttacaa +gacgattacaatgagttacatgtctctcaacgtagtctttccctagtagtctttgaacta +tttaggtactccagaaaattttagcaaagggtttctgtgtgaatccgccattcatgttta +tgatggaacaataagaataacgccctcgtatgttatcgacagtgaagtcagcagttcggc +caaaaacatattcaatttagtacagatccccagaagttaagctaagtgctctaaaatggc +ctaaacggttatcaaagtaggtctaattactatactaacgggtgcatcgtaataactgct +gtcgatgcaacactatatgatagtgtcgttttgctatatatgtacaatgtgacaaagaag +ccttagcgattcttgcaaacttaggacttcggattctcaatcttaaatgtccgaaaacgc +aaagattcaaaaatttaatctatgagcagatatgcctgatggtgactacgcgtatgttaa +ggctaaatgttgacaaccgcacacataatcgaactattgatagtcgggagcataaccagg +tgaacgtactttgttcacgacatttattgacatgttctaaatacgtctcaaaatcacggc +gcactagaaaacgcaatcaaatcattgtcctggtttaagggccgtaatgccggtagtgtc +aaacttcatgagaactttagctggcttttggccagtatttagggaccaagagcactagcc +ttaagctgaatattttgccatttatctactgttataactttaaaacttggtggcaccaga +cttgtcgatacacacgcatcaatctgtaacgtaaaaggtttactaagaacaagcgtagga +attgagtttatattatatttaaactaaaagatgatattagcttctgagggcgatagggct +ccaaatcataaagaggaatatattattacacgattagaaacccacaacatacctcgaatc +gcccaaaagtttgacgaaacttggcagtactccacatctcagtaatacagttgggagagt +ctcaaatgttgttttattactcaatgaaccaccctcataatttcactgctgttccattaa +atttgcaaacgatcatttgctttgaagaaacgtaaaatcgacaaaattacagataagtag +atgcataataaaaaaaactgctcgctataacacgatcatcgtgcattcttacttaggagc +atcacccgcacaataacgtaccttaaactacaacactattagaccgagtactgtaattca +cgaaagctcaagctcgcattgtaaagaacttgctctctcgtaaaatgtgataatagtttg +cggagaggattcaattattttccattgcacctactccactagattcgataaaagaaggtg +gtcctcccttaaaaagaaatgttaagtaacatcggaaccataagcaaagcatgtaagtga +accgtcatccttccctaagaaacataaaggtttttaataatgtcgactgtgaactataac +tgcatcctttcctgacctactccggttccttgttgttatttctgaacgagaccagtagat +aaacaatgtaaaccacagtgggtaccaatggtgcatgtgacgctaccgttgttttaagtg +cccgtacaaacataagaagtcataatcttacttgaaattaattttgccttttattttttt +tcaggctcgaaattaatgatttgttttttttgaccttctagttacgctaatatgcggtcg +cctgtggtttctattgagtcctataacgggatgggatctaatacgtttggttactagtaa +acaaggtataaatttgataccggagtatcaactgtataacatcaagctttatgactcata +cgcgaagtaatgacacaaggctttcaggagatcgcgagtacagagccactaaggggtgta +ttacgatagtgacaccaccgagcgcactcactccccaagtagatttatgatcctacgcta +agtattagatatataaccaaagaggttctagtcagtgcaactcttagaataataattagc +cggttttgcctttttaggcctaatgcaatattcagctagcccttatgtatctcgcgttcc +acagcaccactcatggcacgcgtttaaactaatcaaatataatctatgaatgttatgcca +gtacttgaataaatcaggttttttataagtccttgcatactctcgttatatactgttaga +gtcttaccccatagaaattctttcatctgcaaacttagaagaattctcagctacggggag +cataaagtccccaggatgttgacaaatacaacaaatgtggcttatacaaacactccatat +gaaaatcgaaccctcgtggtagttttagccgaaccttgtacggataaatccctccatttt +ccaatagcagatacctatcctactacctcgtggtattaaattaaagcttgaaatatagag +ctgcatagcttatccaattcccaagcacgagtctaccgtcgtaaccacgatttgatttac +agacgctagagcaaacccatctttaaacatataagtaaaaattaaagggtgagtgcgtac +gtgtttactagcaacttcgcttattaagacaattgtttataagccataattaaaaacata +tgttcaacaggttcattgatatttgtaattgcacaggtttttaataaggatctacgtaag +tataatgaacaaactttttaccagagttatattctgtactttgaaaatgctcctctaccg +ccttagagactttcaattagattttttgcagttaatctatgcgtaagtgaaccatgcaag +ggatgcgattcaaccgcctcgtgctaaccctatcgtctgtctcataactgtaggtctaat +ataattttcagttttcgaacacataaccctttgaaaatctgctatttaatgtctcacctg +catgcactatcttctatactgctcagaacggctatacgtcactatgctccaagtgacgat +ttaaacgaagcaaggaataataggtttattttagtgcaaaacaattaagtgcggactacg +tgctctttacaataagccttgtgattgggctataggttaagtcccatattaacgatctcc +aatgtacaaaatcgacaatcgctttgcattacccggttactagtcgaattacagatagct +gttagatactcactctaattttggacaacaatcccaatcttggggtcgtctatcgcctga +agctcgtaaatccttccatcttaaacgattacatattatagacttgttcggggtagagat +atcacagttgtgcaaacattgtaaatcgatactagtttatgttggtagtctagttgcttt +taccattccccgaaaaacttgatctactatttcgacaacagtaaacttgaactaggtaag +tgaaaacagagaatgcctcatagtgccactatttgtccactatatgtaagtgtagcttta +cataatccactatgactgagatcattacggcctaggaaagcagcgtagaaaaaaagggcc +cggatattacgactgtaactataaaactagttactggtagcgcgccatgtatagatttgt +tttaccggttgtggttgcgttaacgaatttcagccgcgaaaattgatccgttaaccagtc +catctcgacttctataaaacgataaagtaaagttgatgttcagcctccttcttatggttg +catcgagagtacactactcagtgggaaatagatcggggttcctacttcagattgtattat +ctaggcaattgccgattgtgccatacctggataaaataagctacctacatgtgatgctta +tctattatcgtcatactaccttagggtgtcctgttgaacgctacattaatctttagccgt +ttgagatgttccaatggataggagtctaacgcatgatgaagtttaggaaggcagagcatc +ccactaagtatgtgacagtgtatttcgaaacgagacgttataaatagaaaaaaggtcctt +ctggttctattctgctgaactattgaatggaaagattggttgacctacgtactatttgct +tgaagtcatcaatttgacggggtgagagacatatggtgcatactttacggactctatatt +ttagatcagaagcttagcagtcttctctacaccccctcacgacataattgcttttaagaa +tctatgtttgattcctctacgggaattcggatccgttcgcatgtgcggtttatctaaacc +aggggacatatgttcagctaaagcatacgaacactttgctaactagacgtatgtatagta +gctataaatcccgacgatatttacaaaaagaaatgagactcaaatatatacatagcgacc +ctacacttattcgcaccctgatctaggcgatcctagcacccacacccgaaagtgagcact +agtgtcttccgtattaaatttactgcagttgagattttagttgtctactaaggattactc +taacccgtaataaggatcaagactcggtactagctttactatcattccctatgtgttttc +ctaactcacaagggtacgtaccagcctatgtaattacaataatgataaagacacaaagga +agtaactttacaaatgagtctccagttacactagcttagtccctcccatcttgctttgaa +gtctaaatacgcaatctctgaggatatacagcagaagaacactcataacgttggagtcca +agaattagactcatagggcccccaacatttaatatgtactgtgagtttgaaggtgttcta +ttgttaattcctgctcttgatacatgacacgtactccgtgtttaaggcttcggactgact +ttctttcataagttgagcaacgaaaatttcagaatcgataagttggattcactaactaat +acggctgattgaaaactccactccggacctatatggtcgacctttatacgtaaccgatat +aaaacttataggctggtatatcgagccttcctagcgcaatttcggatggggtttcttcta +ctactcaacaacggaatagtctttgtttagtaaaccagagctcaggacgcccaatacgta +ggagagcgctgtggagcatgtgtcattatggactggagcactcttaaatcactctgcgtg +tgctaaacgatagatcataacatgtcctgagtaaattttcttgatacgtcgcaatatacc +gttattagttaaacgttctcatccgtcatgcgtgaaatacggctgtcgtgctcagatata +ctattagcgactcatctcgcctaacacgcacacgtataaactcggaatgactgccgctct +tacatattagaaatacagactacaccacggaagcattgggtcattctcaaccgctgtata +aaagatgattagtcttataataagattaccaaagaggcagaatcatgggtagtaaatcta +ttattcaagtgattaccgtcgtgtaggcagggagtgaggacgagatggtactcaggacaa +atattaaccggacgaagtggtttacgtcgtactttcactattagtagtaaatacaaggta +acaccggggaatagtactaaatataatgatatctatcttcgggagaacgagtcgtctatt +gctttgaacattctcaaggcgtaaaatgtgctgacttatagcatgatacaaccgattgtt +acttttgtctattcaaaagattgaatagttttttatacaaaagccgcatacttatgacgg +ctagtatacagtttcatcccctagcatcaatgctatggacagtattgaacttataggaaa +ttcttctaatagggcaaatccgtcgtgatgcctattttttttcagtcacatcctcaaatg +gcactagtattgtcgggatcccattaacaggctcaaccacgagctcacgcgaggacatgt +agtccgtatctttaacgaagcgacagcgacagaactcccatggataaccaattataaggc +ccgtaatcctctagacatcgtttaccaataaatccgctttctccgtaatcatgttgaata +ccccagagtagtccagatgataaccgatgaaacacaagtctttctcaatgcacttacggt +gaacttattaccgccaacgtagctcatcaaggttgcgacatctagttgtgtgtttgcgac +gagcccagcgaacttcatcaactttcgtatattcaacgccttgtaattttactttaagac +gcctggtgatgtagattcttagataatcagtttgttatcggctgtactttaccataattt +cacaggtttcaggtcaagaagattatagctgtatatacagttccatgctcggtgcacaga +aacgtgatcggataataatcaatcgcttatgtcgtctttaggcgtatccaatacatgccc +cgataccgcagtgtatttcgacatgtaggtataccgtcgcatttgagctcgagtcaggac +gtcagctagattagattccttaatagaatataccgacctctagtccgaactaaactatag +ataacgccaacttcaggttaattgtctagtcgtctgtttgcagatgggattcttagatga +gtgagtatcggccatattggttcgagcactttagtttttgatgcataggatatgcaatgt +atagctgaaagtactttatctgtttcaaactcacattgattaaaccggtaaacctttaaa +gactacaagaaaatattcagtgagggcaattttgtcaatcacaatcttccagctagagat +acttcacaatttgtcttgaggctacgcaacattagacggattttcgcgttttattgaaat +aatcgaggggcccaagagtatccatagttcattttgtaagatttctttacaggcttatta +cagcttcttcagactcctacatgcttacgagttatatgctagcatgtgaacaatagatta +atatacaggaaaacgtacattgagagagatgaccctacacagcgcaaccgttgagtactt +tcattaaagggtaacgctctcgagacagcatccttaagatggccttattgtcaaatcatt +tgcagaagtacgcaagatccctaaccaacgtagaagaatccctacaaacacatgagacgc +ggtgaaaatagacagggtgttagtattcaatcttcggagtatcaatttcgccaatcttgg +tgagaaagcataccctttcttcagagaaagaagatcaatcataacactatctttaacgag +gtacgcacgcgcatcattacctgcctccatggatctttaggatagcggaaagtattggca +gcgtattgtgatttcgttcctactttatcaatttcacattcatatacatgtcttttatca +aaatcgccaataagataggatgagctatattagatgctagtagagttcgcgccaacatca +tcgataggaatactcaggacagcgtgataggacttttcaatccctaatactctctataat +tataactctctcttaagtttggaggcagtaacgcgctctatataatcagtttgctgcacc +attcttcagcctctgatacatacaaataaattccacagcagtaagagggtttaattgaga +catcttgggaacttaggattttactctaacatcaccgaaacgattattggataccgtacc +taaacgaactttctcaaggcagtaatataggacatccgcaataacacaaatgctgcctcc +ccaggagttatgtcttcctggaggctatatcttacacccactcactataggcaaactaaa +gtttaaatgttgattgtctaaaaaaaagatagataagagttggccggcgtagcacatgcg +aaagtgaatcgtaagctataattctctggacttgaagttctgtcctgttcctctgcaaga +aacaaacttcctttaaagctatttacgacgcacatctcagcaagttataaacatgttgga +agtttctagtcggaattcccaaagaacggatctatctaatgcattcctacatttttcctg +tctgccgatggtgccatcctattcaaagaatttcttaaaagtagattaaatgggactttt +aacaatgagtaaccttacgcctctaagggttcctcgagtgccatacaccagtcaggtccg +agccacatacacggagaacattctaacatagcattctcaactcgatcatttgcaggttac +ttctttcctatcctagtgctaaaaatcatacttgcaatcccatagcacggattaagaacc +taagaaacaattcagtaaaacatgttcgaattcttggtatgggaacatcattgcagctat +ggtctaacgcattaatgtttgggtacatcttccatcatataaacaggaagagtctgacga +cagggagtgcttgcgatcatgtctatcattgtgaaatcaaattgtagctcacatgtcgtc +tatgagagcgtgtatccgataagatttagaaaaatagaagtcgtataagatctcactgaa +cttttgaatgaatgtgaagcatatatgatctgctttaataaaactttatccataggatac +gtttccaaatcaattcaataattattagtcaaaatagataaggatgaacaacctgaaggc +cgatcggacgtagaaagtggtcccatcactttgagttgatattgttgaaccacacgttat +tatggttttcaaacagtctcaggatattgtatatacagataatccgataccagttgtctg +acgcccctcttacgtaccccaccctttgtgacgtttaaagcagttgttcagtattttaaa +ctaggcggcaactaatttggaaagaagcacagtggatatgtctaaattcttgttattcag +gcctgaatttaatacaccgcatagttaacttcgcggtagagttgttcatcatgcctcctc +taagctaccacttctatgatacaccaatagttgttctacggaatctgataattggccaag +tcataaacttccgctgcgttcaacccccttgctcgaatatccaactcgaaaagacagcct +tttggtgtccggaacaaatcagttacttcttttctgatgttaattctctgtggtcagata +cagaccaaaaactccgcggatttaccatcctccaagaacaaatttgcatcaacatagcat +tttggctacatattctaagtctcaatagtttaggttttcaactacattatcccaacatta +ggattggaggaataatagctgggtaagtccccttgcgtctacaatcgactattttttatg +aatatgcttctgccgcacctatggttattaaaaaagtcatgactttgaagaaccctgaaa +agatagatgaatcaggtgtaatggcagcagccaaagagcatataattagcaacactctaa +gaacattatagatatgatgatagcgatcgtcatgatgttatccggtcacaatagtagctt +catcagctaattcgttttgccagtggtgacttgcgctggaagaatcgttatacggtccct +tccctcttgatacggtgggggcttattcaaccgcgtggattgggttgtcatacttgcatt +aaacgatgtaaaccatctagtagtcaactatactaaatcacaaaatagtgatcaatacat +acccgcttcatggttttaaccatttaattgattaaagatattccgctaagaaccattatc +tacctaaactgatcgccgtatcctagtagtttgaaatttgatgtaccgtaatgatcaacg +aagtaaaacgttatattgtatgtagaataataggtcttggagctaaatgatgtgattggt +agtgaagacttacccttacaactttaccggtttctcggaagaatatactagagaatcaat +gcatgggctacataagcactttagtctaatgagataaaaaatacacgagtcttccatcat +gaattttttgtcgaaaaactcgaacctggtaatttaaaccatatatctttatgtcgtcaa +taactctcatatgttttatataacttcccaatcacgacttgtaactgcttgttcgactga +gctgtttgagctatgaggccgggatccggttgagctacatctatttgctacaagaaaaat +gaaagcacatttgttgggagttctggctacactcatagagaaataagtggcccgagtggg +tgcggcctgcctccatattcaagtgtatcttaaaccaagtggttccaacgctcgcgctaa +agaattaaagcctttatttcctccacggagtagcccgtaatccggttcgaaagagaccat +tgaagttaattttcatatccagtgaagtttaggcacaagcatgtgttctgccacatgcct +caaagcgctcttcaaccaagatatgattcatcctaacttcgatgaatgcgtctgtaacat +aaatatagaaggaatgattcggcgagttaattttcgccttctccaacatggcatccctac +gttcgttataaggaccatacatgtaggttttaaaggtttgcggttaatcgatatttacat +catagaaattctatagtcaaatttacaagactctagatactcactcgttgcagccggcta +ggaagcgctttgtaccttacttcccttttcgttgcgtaatatgaatttcatatagtaagt +tcaaggcactcatacctccgtgaagagggtagatagactattaaagttgtttaatagtac +gtattgatggaaatgacccgtaggagatttaccactcaatccacaagattcgctgctgtg +cattatcaaaacagtgcatgtcgaaacatgggttgggtccttcaaacacgaatccaggta +gagatacctttgcaattttt diff --git a/extra/benchmark/knucleotide/knucleotide.factor b/extra/benchmark/knucleotide/knucleotide.factor new file mode 100644 index 0000000000..327439015d --- /dev/null +++ b/extra/benchmark/knucleotide/knucleotide.factor @@ -0,0 +1,74 @@ +USING: kernel io io.files splitting strings + hashtables sequences assocs math namespaces prettyprint + math.parser combinators arrays sorting ; + +IN: benchmark.knucleotide + + +: float>string ( float places -- string ) + swap >float number>string + "." split1 rot + over length over < + [ CHAR: 0 pad-right ] + [ head ] if "." swap 3append +; + +: discard-lines ( -- ) + readln + [ ">THREE" head? [ discard-lines ] unless ] when* +; + +: read-input ( -- input ) + discard-lines + ">" read-until drop + CHAR: \n swap remove >upper +; + +: tally ( x exemplar -- b ) + clone tuck + [ + [ [ 1+ ] [ 1 ] if* ] change-at + ] curry each +; + +: small-groups ( x n -- b ) + swap + [ length swap - 1+ ] 2keep + [ >r over + r> subseq ] 2curry map +; + +: handle-table ( inputs n -- ) + small-groups + [ length ] keep + H{ } tally >alist + sort-values reverse + [ + dup first write bl + second 100 * over / 3 float>string print + ] each + drop +; + +: handle-n ( inputs x -- ) + tuck length + small-groups H{ } tally + at [ 0 ] unless* + number>string 8 CHAR: \s pad-right write +; + +: process-input ( input -- ) + dup 1 handle-table nl + dup 2 handle-table nl + { "GGT" "GGTA" "GGTATT" "GGTATTTTAATT" "GGTATTTTAATTTATAGT" } + [ [ dupd handle-n ] keep print ] each + drop +; + +: knucleotide ( -- ) + "extra/benchmark/knucleotide/knucleotide-input.txt" resource-path + + [ read-input ] with-stream + process-input +; + +MAIN: knucleotide From af2cb6d2e1aefda73f5d427bfa6782e1d195bdbf Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 19:15:45 -0600 Subject: [PATCH 060/285] Don't open all UI windows at 0,0 in Windows --- extra/ui/windows/windows.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/ui/windows/windows.factor b/extra/ui/windows/windows.factor index 290e4ef311..5fa078de89 100755 --- a/extra/ui/windows/windows.factor +++ b/extra/ui/windows/windows.factor @@ -381,7 +381,7 @@ M: windows-ui-backend (close-window) >r class-name-ptr get-global f r> >r >r >r ex-style r> r> WS_CLIPSIBLINGS WS_CLIPCHILDREN bitor style bitor - 0 0 r> + CW_USEDEFAULT dup r> get-RECT-dimensions f f f GetModuleHandle f CreateWindowEx dup win32-error=0/f ; From 72fe4e2d70a498ff1c1069fda3d008251b7cfb9e Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 20:19:39 -0500 Subject: [PATCH 061/285] clean up io.unix.launcher parser, and parser-combinators --- extra/io/unix/launcher/launcher-tests.factor | 4 ++-- extra/io/unix/launcher/launcher.factor | 10 +++++----- extra/parser-combinators/parser-combinators.factor | 11 +++++++---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/extra/io/unix/launcher/launcher-tests.factor b/extra/io/unix/launcher/launcher-tests.factor index 88f467385a..fec97baa5a 100755 --- a/extra/io/unix/launcher/launcher-tests.factor +++ b/extra/io/unix/launcher/launcher-tests.factor @@ -1,8 +1,8 @@ IN: temporary USING: io.unix.launcher tools.test ; -[ { } ] [ "" tokenize-command ] unit-test -[ { } ] [ " " tokenize-command ] unit-test +[ "" tokenize-command ] unit-test-fails +[ " " tokenize-command ] unit-test-fails [ { "a" } ] [ "a" tokenize-command ] unit-test [ { "abc" } ] [ "abc" tokenize-command ] unit-test [ { "abc" } ] [ "abc " tokenize-command ] unit-test diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor index 322bef7e7f..4cf8f8b8d4 100755 --- a/extra/io/unix/launcher/launcher.factor +++ b/extra/io/unix/launcher/launcher.factor @@ -22,19 +22,19 @@ LAZY: 'quoted-char' ( delimiter -- parser' ) <|> ; inline LAZY: 'quoted' ( delimiter -- parser ) - dup 'quoted-char' <*> swap dup surrounded-by ; + dup 'quoted-char' swap dup surrounded-by ; -LAZY: 'unquoted' ( -- parser ) " " 'quoted-char' <+> ; +LAZY: 'unquoted' ( -- parser ) " '\"" 'quoted-char' ; LAZY: 'argument' ( -- parser ) "\"" 'quoted' "'" 'quoted' 'unquoted' <|> <|> [ >string ] <@ ; -MEMO: 'arguments' ( -- parser ) - 'argument' " " token <+> list-of ; +: 'arguments' ( -- parser ) + 'argument' " " token nonempty-list-of ; : tokenize-command ( command -- arguments ) - 'arguments' parse-1 ; + 'arguments' just parse-1 ; : get-arguments ( -- seq ) +command+ get [ tokenize-command ] [ +arguments+ get ] if* ; diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index 6301f778f5..5741c801f7 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -246,18 +246,21 @@ LAZY: <(+)> ( parser -- parser ) #! Implementation by Matthew Willis. dup <(*)> <&:> ; -LAZY: pack ( close body open -- parser ) +: pack ( close body open -- parser ) #! Parse a construct enclosed by two symbols, #! given a parser for the opening symbol, the #! closing symbol, and the body. <& &> ; -LAZY: list-of ( items separator -- parser ) +: nonempty-list-of ( items separator -- parser ) + [ over &> <*> <&:> ] keep tuck pack ; + +: list-of ( items separator -- parser ) #! Given a parser for the separator and for the #! items themselves, return a parser that parses #! lists of those items. The parse tree is an #! array of the parsed items. - dup -rot over &> <*> <&:> &> { } succeed <|> ; + nonempty-list-of { } succeed <|> ; LAZY: surrounded-by ( parser start end -- parser' ) - [ token ] 2apply swapd pack ; \ No newline at end of file + [ token ] 2apply swapd pack ; \ No newline at end of file From 30541ec78a93ab6f87f472818738af0e9f422b7f Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 20:27:09 -0500 Subject: [PATCH 062/285] Make parser constructor MEMO: again --- extra/io/unix/launcher/launcher.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/io/unix/launcher/launcher.factor b/extra/io/unix/launcher/launcher.factor index 4cf8f8b8d4..74bced16c4 100755 --- a/extra/io/unix/launcher/launcher.factor +++ b/extra/io/unix/launcher/launcher.factor @@ -30,7 +30,7 @@ LAZY: 'argument' ( -- parser ) "\"" 'quoted' "'" 'quoted' 'unquoted' <|> <|> [ >string ] <@ ; -: 'arguments' ( -- parser ) +MEMO: 'arguments' ( -- parser ) 'argument' " " token nonempty-list-of ; : tokenize-command ( command -- arguments ) From fa630952f32cf5fb98bf936bdd7cdfa3a8e57f35 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 20:48:29 -0600 Subject: [PATCH 063/285] Add notepad++ support to factor --- extra/editors/notepadpp/authors.txt | 1 + extra/editors/notepadpp/notepadpp.factor | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 extra/editors/notepadpp/authors.txt create mode 100644 extra/editors/notepadpp/notepadpp.factor diff --git a/extra/editors/notepadpp/authors.txt b/extra/editors/notepadpp/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/editors/notepadpp/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/editors/notepadpp/notepadpp.factor b/extra/editors/notepadpp/notepadpp.factor new file mode 100644 index 0000000000..080910731d --- /dev/null +++ b/extra/editors/notepadpp/notepadpp.factor @@ -0,0 +1,13 @@ +USING: editors io.launcher math.parser namespaces ; +IN: notepadpp + +: notepadpp ( file line -- ) + [ + \ notepadpp get-global % " -n" % # " " % % + ] "" make run-detached ; + +! Put in your .factor-boot-rc +! "c:\\Program Files\\notepad++\\notepad++.exe" \ notepadpp set-global +! "k:\\Program Files (x86)\\notepad++\\notepad++.exe" \ notepadpp set-global + +[ notepadpp ] edit-hook set-global From c0b8c4d4a95c1e07ef4ee16414701bae2f1eeaa1 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 21:00:21 -0600 Subject: [PATCH 064/285] Add missing summary files for editors --- extra/editors/editpadpro/summary.txt | 1 + extra/editors/emacs/summary.txt | 1 + extra/editors/gvim/summary.txt | 1 + extra/editors/notepadpp/summary.txt | 1 + extra/editors/scite/summary.txt | 1 + extra/editors/textmate/summary.txt | 1 + extra/editors/vim/summary.txt | 1 + 7 files changed, 7 insertions(+) create mode 100644 extra/editors/editpadpro/summary.txt create mode 100644 extra/editors/emacs/summary.txt create mode 100644 extra/editors/gvim/summary.txt create mode 100644 extra/editors/notepadpp/summary.txt create mode 100644 extra/editors/scite/summary.txt create mode 100644 extra/editors/textmate/summary.txt create mode 100644 extra/editors/vim/summary.txt diff --git a/extra/editors/editpadpro/summary.txt b/extra/editors/editpadpro/summary.txt new file mode 100644 index 0000000000..9be02c58b7 --- /dev/null +++ b/extra/editors/editpadpro/summary.txt @@ -0,0 +1 @@ +EditPadPro editor integration diff --git a/extra/editors/emacs/summary.txt b/extra/editors/emacs/summary.txt new file mode 100644 index 0000000000..cc15946aab --- /dev/null +++ b/extra/editors/emacs/summary.txt @@ -0,0 +1 @@ +Emacs editor integration diff --git a/extra/editors/gvim/summary.txt b/extra/editors/gvim/summary.txt new file mode 100644 index 0000000000..4096b820fc --- /dev/null +++ b/extra/editors/gvim/summary.txt @@ -0,0 +1 @@ +gVim editor integration diff --git a/extra/editors/notepadpp/summary.txt b/extra/editors/notepadpp/summary.txt new file mode 100644 index 0000000000..8988904216 --- /dev/null +++ b/extra/editors/notepadpp/summary.txt @@ -0,0 +1 @@ +Notepad++ editor integration diff --git a/extra/editors/scite/summary.txt b/extra/editors/scite/summary.txt new file mode 100644 index 0000000000..1088ee7f5a --- /dev/null +++ b/extra/editors/scite/summary.txt @@ -0,0 +1 @@ +SciTE editor integration diff --git a/extra/editors/textmate/summary.txt b/extra/editors/textmate/summary.txt new file mode 100644 index 0000000000..6c573c4829 --- /dev/null +++ b/extra/editors/textmate/summary.txt @@ -0,0 +1 @@ +Textmate editor integration diff --git a/extra/editors/vim/summary.txt b/extra/editors/vim/summary.txt new file mode 100644 index 0000000000..559053219f --- /dev/null +++ b/extra/editors/vim/summary.txt @@ -0,0 +1 @@ +Vim editor integration From c34c6bf206ecdae17f7ad35ac58cb55ac1f204f8 Mon Sep 17 00:00:00 2001 From: Debian User Date: Sat, 24 Nov 2007 21:03:32 -0600 Subject: [PATCH 065/285] Support NO_UI if libraries aren't found on Linux --- misc/factor.sh | 85 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 27 deletions(-) diff --git a/misc/factor.sh b/misc/factor.sh index eb231cd565..af0511ee50 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -10,6 +10,7 @@ shopt -s nocaseglob OS= ARCH= WORD= +NO_UI=0 ensure_program_installed() { echo -n "Checking for $1..." @@ -49,6 +50,34 @@ check_installed_programs() { check_gcc_version } +check_library_exists() { + GCC_TEST=factor-library-test.c + GCC_OUT=factor-library-test.out + echo "Checking for library $1" + echo "int main(){return 0;}" > $GCC_TEST + gcc $GCC_TEST -o $GCC_OUT -l $1 + if [[ $? -ne 0 ]] ; then + echo "Warning: library $1 not found." + echo "***Factor will compile NO_UI=1" + NO_UI=1 + fi + rm -f GCC_TEST + rm -f GCC_OUT +} + +check_X11_libraries() { + check_library_exists freetype + check_library_exists GLU + check_library_exists GL + check_library_exists X11 +} + +check_libraries() { + case $OS in + linux) check_X11_libraries;; + esac +} + check_factor_exists() { if [[ -d "factor" ]] ; then echo "A directory called 'factor' already exists." @@ -151,7 +180,7 @@ make_clean() { } make_factor() { - make $MAKE_TARGET -j5 + make NO_UI=$NO_UI $MAKE_TARGET -j5 check_ret make } @@ -185,31 +214,33 @@ usage() { echo "usage: $0 install|update" } +install() { + check_factor_exists + check_installed_programs + find_build_info + check_libraries + git_clone + cd_factor + make_factor + get_boot_image + maybe_download_dlls + bootstrap +} + +update() { + check_installed_programs + find_build_info + check_libraries + git_pull_factorcode + make_clean + make_factor + delete_boot_images + get_boot_image + bootstrap +} + case "$1" in - install) - check_factor_exists - check_installed_programs - find_build_info - git_clone - cd_factor - make_factor - get_boot_image - maybe_download_dlls - bootstrap - ;; - - update) - check_installed_programs - find_build_info - git_pull_factorcode - make_clean - make_factor - delete_boot_images - get_boot_image - bootstrap - ;; - - *) - usage - ;; + install) install ;; + update) update ;; + *) usage ;; esac From 4b92d10d64ee0ae304735e51e8f2fb717eea2980 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 22:09:40 -0500 Subject: [PATCH 066/285] Fix race condition with opening windows which affected get-workspace --- extra/ui/cocoa/cocoa.factor | 2 +- extra/ui/tools/workspace/workspace.factor | 9 ++++---- extra/ui/ui.factor | 25 +++++++++++------------ extra/ui/windows/windows.factor | 8 +++++--- extra/ui/x11/x11.factor | 2 +- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/extra/ui/cocoa/cocoa.factor b/extra/ui/cocoa/cocoa.factor index 6607a22f50..7492ad19b7 100755 --- a/extra/ui/cocoa/cocoa.factor +++ b/extra/ui/cocoa/cocoa.factor @@ -19,7 +19,7 @@ SYMBOL: stop-after-last-window? : event-loop ( -- ) event-loop? [ [ - [ NSApp do-events ui-step ] ui-try + [ NSApp do-events ui-step 10 sleep ] ui-try ] with-autorelease-pool event-loop ] when ; diff --git a/extra/ui/tools/workspace/workspace.factor b/extra/ui/tools/workspace/workspace.factor index 79857fa2e6..b8c41e17cc 100755 --- a/extra/ui/tools/workspace/workspace.factor +++ b/extra/ui/tools/workspace/workspace.factor @@ -2,11 +2,10 @@ ! See http://factorcode.org/license.txt for BSD license. USING: classes continuations help help.topics kernel models sequences ui ui.backend ui.tools.debugger ui.gadgets -ui.gadgets.books ui.gadgets.buttons -ui.gadgets.labelled ui.gadgets.panes ui.gadgets.scrollers -ui.gadgets.tracks ui.gadgets.worlds ui.gadgets.presentations -ui.gadgets.status-bar ui.commands ui.gestures assocs arrays -namespaces ; +ui.gadgets.books ui.gadgets.buttons ui.gadgets.labelled +ui.gadgets.panes ui.gadgets.scrollers ui.gadgets.tracks +ui.gadgets.worlds ui.gadgets.presentations ui.gadgets.status-bar +ui.commands ui.gestures assocs arrays namespaces ; IN: ui.tools.workspace TUPLE: workspace book listener popup ; diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index 98549a16f7..bafd6c40c5 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -65,18 +65,6 @@ M: world ungraft* dup world-handle (close-window) reset-world ; -: open-world-window ( world -- ) - dup pref-dim over set-gadget-dim dup relayout graft ; - -: open-window ( gadget title -- ) - >r [ 1 track, ] { 0 1 } make-track r> - f open-world-window ; - -HOOK: close-window ui-backend ( gadget -- ) - -M: object close-window - find-world [ ungraft ] when* ; - : find-window ( quot -- world ) windows get values [ gadget-child swap call ] curry* find-last nip ; inline @@ -148,9 +136,20 @@ SYMBOL: ui-hook notify-queued layout-queued redraw-worlds - 10 sleep ] assert-depth ; +: open-world-window ( world -- ) + dup pref-dim over set-gadget-dim dup relayout graft ui-step ; + +: open-window ( gadget title -- ) + >r [ 1 track, ] { 0 1 } make-track r> + f open-world-window ; + +HOOK: close-window ui-backend ( gadget -- ) + +M: object close-window + find-world [ ungraft ] when* ; + : start-ui ( -- ) init-timers restore-windows? [ diff --git a/extra/ui/windows/windows.factor b/extra/ui/windows/windows.factor index 290e4ef311..7c7e0298fe 100755 --- a/extra/ui/windows/windows.factor +++ b/extra/ui/windows/windows.factor @@ -94,8 +94,7 @@ SYMBOL: mouse-captured 3drop window draw-world ; : handle-wm-size ( hWnd uMsg wParam lParam -- ) - [ lo-word ] keep hi-word make-RECT get-RECT-dimensions 2array - 2nip + [ lo-word ] keep hi-word make-RECT get-RECT-dimensions 2array 2nip dup { 0 0 } = [ 2drop ] [ swap window set-gadget-dim ui-step ] if ; : wm-keydown-codes ( -- key ) @@ -348,7 +347,10 @@ M: windows-ui-backend (close-window) : event-loop ( msg -- ) { { [ windows get empty? ] [ drop ] } - { [ dup peek-message? ] [ >r [ ui-step ] ui-try r> event-loop ] } + { [ dup peek-message? ] [ + >r [ ui-step 10 sleep ] ui-try + r> event-loop + ] } { [ dup MSG-message WM_QUIT = ] [ drop ] } { [ t ] [ dup TranslateMessage drop diff --git a/extra/ui/x11/x11.factor b/extra/ui/x11/x11.factor index 857b13a973..2b1a5ba331 100755 --- a/extra/ui/x11/x11.factor +++ b/extra/ui/x11/x11.factor @@ -178,7 +178,7 @@ M: world client-event next-event dup None XFilterEvent zero? [ drop wait-event ] unless ] [ - ui-step wait-event + ui-step 10 sleep wait-event ] if ; : do-events ( -- ) From de2cc4b9de4c0187efd2b44a5bad8e98fb12ea6a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 21:41:58 -0600 Subject: [PATCH 067/285] Make a special case for macosx-ppc, which doesn't follow the factor naming scheme --- misc/factor.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/misc/factor.sh b/misc/factor.sh index af0511ee50..76944b0bd6 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -145,8 +145,13 @@ set_build_info() { echo "OS, ARCH, or WORD is empty. Please report this" exit 5 fi + MAKE_TARGET=$OS-$ARCH-$WORD BOOT_IMAGE=boot.$ARCH.$WORD.image + if [[ $OS == macosx && $ARCH=ppc ]] ; then + MAKE_TARGET=$OS-$ARCH + BOOT_IMAGE=boot.macosx-ppc.image + fi } find_build_info() { From 39fc7f864f4f587ed157c4effa3432f693b28d05 Mon Sep 17 00:00:00 2001 From: erg Date: Sat, 24 Nov 2007 21:49:38 -0600 Subject: [PATCH 068/285] Set default to NO_UI= instead of NO_UI=0 --- misc/factor.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/factor.sh b/misc/factor.sh index af0511ee50..977a6b79f7 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -10,7 +10,7 @@ shopt -s nocaseglob OS= ARCH= WORD= -NO_UI=0 +NO_UI= ensure_program_installed() { echo -n "Checking for $1..." From ed1b0e1c52e426db941ec2b786a01e87bced7aef Mon Sep 17 00:00:00 2001 From: erg Date: Sat, 24 Nov 2007 21:55:18 -0600 Subject: [PATCH 069/285] Clean up after gcc --- misc/factor.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/factor.sh b/misc/factor.sh index 977a6b79f7..f736365384 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -61,8 +61,8 @@ check_library_exists() { echo "***Factor will compile NO_UI=1" NO_UI=1 fi - rm -f GCC_TEST - rm -f GCC_OUT + rm -f $GCC_TEST + rm -f $GCC_OUT } check_X11_libraries() { From 0d286a0b17408936817d71effed57c9aa2765d63 Mon Sep 17 00:00:00 2001 From: erg Date: Sat, 24 Nov 2007 22:06:45 -0600 Subject: [PATCH 070/285] Fix stack effect --- extra/pack/pack.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/pack/pack.factor b/extra/pack/pack.factor index fd39f83a98..c9d05c19d7 100644 --- a/extra/pack/pack.factor +++ b/extra/pack/pack.factor @@ -24,7 +24,7 @@ M: integer b, ( m n -- ) >endian % ; ! for doing native, platform-dependent sized values M: string b, ( n string -- ) heap-size b, ; -: read-native ( string -- ) heap-size read endian> ; +: read-native ( string -- n ) heap-size read endian> ; ! Portable : s8, ( n -- ) 1 b, ; From 9320a69451aca2ad6ddd27ef95a7fbf81cee11e9 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 22:29:22 -0600 Subject: [PATCH 071/285] Fix unit test, change quotation? to callable? --- extra/lint/lint.factor | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/extra/lint/lint.factor b/extra/lint/lint.factor index bd2be801fd..75f6abb9ae 100644 --- a/extra/lint/lint.factor +++ b/extra/lint/lint.factor @@ -13,7 +13,7 @@ SYMBOL: def-hash-keys 2dup at -rot >r >r ?push r> r> set-at ; : add-word-def ( word quot -- ) - dup quotation? [ + dup callable? [ def-hash get-global set-hash-vector ] [ 2drop @@ -33,6 +33,7 @@ SYMBOL: def-hash-keys { [ drop drop drop ] 3drop } { [ 0 = ] zero? } { [ pop drop ] pop* } + { [ [ ] if ] when } } [ first2 swap add-word-def ] each ; : accessor-words ( -- seq ) @@ -108,13 +109,13 @@ M: object lint ( obj -- seq ) : subseq/member? ( subseq/member seq -- ? ) { [ 2dup start ] [ 2dup member? ] } || 2nip ; -M: quotation lint ( quot -- seq ) +M: callable lint ( quot -- seq ) def-hash-keys get [ swap subseq/member? ] curry* subset ; M: word lint ( word -- seq ) - word-def dup quotation? [ lint ] [ drop f ] if ; + word-def dup callable? [ lint ] [ drop f ] if ; : word-path. ( word -- ) [ word-vocabulary ":" ] keep unparse 3append write nl ; From 53f8dca0bf6e4979e09dd3778157829e2e6396d6 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Sat, 24 Nov 2007 16:55:48 -0800 Subject: [PATCH 072/285] Initial import of knucleotide benchmark --- .../knucleotide/knucleotide-input.txt | 1671 +++++++++++++++++ .../benchmark/knucleotide/knucleotide.factor | 74 + 2 files changed, 1745 insertions(+) create mode 100644 extra/benchmark/knucleotide/knucleotide-input.txt create mode 100644 extra/benchmark/knucleotide/knucleotide.factor diff --git a/extra/benchmark/knucleotide/knucleotide-input.txt b/extra/benchmark/knucleotide/knucleotide-input.txt new file mode 100644 index 0000000000..fb23263397 --- /dev/null +++ b/extra/benchmark/knucleotide/knucleotide-input.txt @@ -0,0 +1,1671 @@ +>ONE Homo sapiens alu +GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA +TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT +AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG +GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG +CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT +GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA +GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA +TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG +AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA +GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT +AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC +AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG +GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC +CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG +AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT +TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA +TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT +GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG +TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT +CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG +CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG +TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA +CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG +AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG +GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC +TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA +TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA +GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT +GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC +ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT +TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC +CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG +CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG +GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC +CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT +GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC +GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA +GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA +GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA +GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG +AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT +CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA +GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA +AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC +GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT +ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG +GAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATC +GCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGC +GGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGG +TCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAA +AAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAG +GAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACT +CCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCC +TGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAG +ACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGC +GTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGA +ACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGA +CAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCA +CTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCA +ACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCG +CCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGG +AGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTC +CGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCG +AGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACC +CCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAG +CTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAG +CCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGG +CCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATC +ACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAA +AAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGC +TGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCC +ACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGG +CTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGG +AGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATT +AGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAA +TCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGC +CTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAA +TCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAG +CCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGT +GGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCG +GGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAG +CGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTG +GGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATG +GTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGT +AATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTT +GCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCT +CAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCG +GGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTC +TCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACT +CGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAG +ATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGG +CGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTG +AGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATA +CAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGG +CAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGC +ACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCAC +GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTC +GAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCG +GGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCT +TGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGG +CGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCA +GCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGG +CCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGC +GCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGG +CGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGA +CTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGG +CCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAA +ACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCC +CAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGT +GAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAA +AGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGG +ATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTAC +TAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGA +GGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGC +GCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGG +TGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTC +AGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAA +ATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGA +GAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC +AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTG +TAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGAC +CAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGT +GGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAAC +CCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACA +GAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACT +TTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAAC +ATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCC +TGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAG +GTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCG +TCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAG +GCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCC +GTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCT +ACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCC +GAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCC +GGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCAC +CTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAA +ATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTG +AGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCAC +TGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCT +CACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAG +TTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAG +CCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATC +GCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCT +GGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATC +CCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCC +TGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGG +CGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG +AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCG +AGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGG +AGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGT +GAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAA +TCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGC +AGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCA +AAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGG +CGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTC +TACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCG +GGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGAT +CGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCG +CGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAG +GTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACA +AAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCA +GGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCAC +TCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGC +CTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGA +GACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGG +CGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTG +AACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCG +ACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGC +ACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCC +AACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGC +GCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCG +GAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACT +CCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCC +GAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAAC +CCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA +GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGA +GCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAG +GCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGAT +CACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTA +AAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGG +CTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGC +CACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTG +GCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAG +GAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAAT +TAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGA +ATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAG +CCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTA +ATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCA +GCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGG +TGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCC +GGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGA +GCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTT +GGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACAT +GGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTG +TAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGT +TGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTC +TCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGC +GGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGT +CTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTAC +TCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGA +GATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGG +GCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCT +GAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT +ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAG +GCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTG +CACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCA +CGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTT +CGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCC +GGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGC +TTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGG +GCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCC +AGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTG +GCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCG +CGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAG +GCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAG +ACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAG +GCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGA +AACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATC +CCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAG +TGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAA +AAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCG +GATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTA +CTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGG +AGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCG +CGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCG +GTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGT +CAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAA +AATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGG +AGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTC +CAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCT +GTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA +CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCG +TGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAA +CCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGAC +AGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCAC +TTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAA +CATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGC +CTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGA +GGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCC +GTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGA +GGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCC +CGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGC +TACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGC +CGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGC +CGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCA +CCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAA +AATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCT +GAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCA +CTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGC +TCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGA +GTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTA +GCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAAT +CGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCC +TGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAAT +CCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGC +CTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTG +GCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGG +GAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGC +GAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG +GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGG +TGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTA +ATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTG +CAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTC +AAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGG +GCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCT +CTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTC +GGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGA +TCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGC +GCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGA +GGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATAC +AAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGC +AGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCA +CTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACG +CCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCG +AGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGG +GCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTT +GAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGC +GACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAG +CACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGC +CAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCG +CGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGC +GGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGAC +TCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGC +CGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAA +CCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCC +AGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTG +AGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA +GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGA +TCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACT +AAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAG +GCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCG +CCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGT +GGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCA +GGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAA +TTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAG +AATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCA +GCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGT +AATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACC +AGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTG +GTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACC +CGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAG +AGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTT +TGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACA +TGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCT +GTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGG +TTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGT +CTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGG +CGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCG +TCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTA +CTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCG +AGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCG +GGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC +TGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAA +TACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGA +GGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACT +GCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTC +ACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGT +TCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGC +CGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCG +CTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTG +GGCGACAGAGCGAGACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCC +CAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCT +GGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGC +GCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGA +GGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGA +GACTCCGTCTCAAAAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGA +GGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTG +AAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAAT +CCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCA +GTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAA +AAAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGC +GGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCT +ACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGG +GAGGCTGAGGCAGGAGAATC +>TWO IUB ambiguity codes +cttBtatcatatgctaKggNcataaaSatgtaaaDcDRtBggDtctttataattcBgtcg +tactDtDagcctatttSVHtHttKtgtHMaSattgWaHKHttttagacatWatgtRgaaa +NtactMcSMtYtcMgRtacttctWBacgaaatatagScDtttgaagacacatagtVgYgt +cattHWtMMWcStgttaggKtSgaYaaccWStcgBttgcgaMttBYatcWtgacaYcaga +gtaBDtRacttttcWatMttDBcatWtatcttactaBgaYtcttgttttttttYaaScYa +HgtgttNtSatcMtcVaaaStccRcctDaataataStcYtRDSaMtDttgttSagtRRca +tttHatSttMtWgtcgtatSSagactYaaattcaMtWatttaSgYttaRgKaRtccactt +tattRggaMcDaWaWagttttgacatgttctacaaaRaatataataaMttcgDacgaSSt +acaStYRctVaNMtMgtaggcKatcttttattaaaaagVWaHKYagtttttatttaacct +tacgtVtcVaattVMBcttaMtttaStgacttagattWWacVtgWYagWVRctDattBYt +gtttaagaagattattgacVatMaacattVctgtBSgaVtgWWggaKHaatKWcBScSWa +accRVacacaaactaccScattRatatKVtactatatttHttaagtttSKtRtacaaagt +RDttcaaaaWgcacatWaDgtDKacgaacaattacaRNWaatHtttStgttattaaMtgt +tgDcgtMgcatBtgcttcgcgaDWgagctgcgaggggVtaaScNatttacttaatgacag +cccccacatYScaMgtaggtYaNgttctgaMaacNaMRaacaaacaKctacatagYWctg +ttWaaataaaataRattagHacacaagcgKatacBttRttaagtatttccgatctHSaat +actcNttMaagtattMtgRtgaMgcataatHcMtaBSaRattagttgatHtMttaaKagg +YtaaBataSaVatactWtataVWgKgttaaaacagtgcgRatatacatVtHRtVYataSa +KtWaStVcNKHKttactatccctcatgWHatWaRcttactaggatctataDtDHBttata +aaaHgtacVtagaYttYaKcctattcttcttaataNDaaggaaaDYgcggctaaWSctBa +aNtgctggMBaKctaMVKagBaactaWaDaMaccYVtNtaHtVWtKgRtcaaNtYaNacg +gtttNattgVtttctgtBaWgtaattcaagtcaVWtactNggattctttaYtaaagccgc +tcttagHVggaYtgtNcDaVagctctctKgacgtatagYcctRYHDtgBattDaaDgccK +tcHaaStttMcctagtattgcRgWBaVatHaaaataYtgtttagMDMRtaataaggatMt +ttctWgtNtgtgaaaaMaatatRtttMtDgHHtgtcattttcWattRSHcVagaagtacg +ggtaKVattKYagactNaatgtttgKMMgYNtcccgSKttctaStatatNVataYHgtNa +BKRgNacaactgatttcctttaNcgatttctctataScaHtataRagtcRVttacDSDtt +aRtSatacHgtSKacYagttMHtWataggatgactNtatSaNctataVtttRNKtgRacc +tttYtatgttactttttcctttaaacatacaHactMacacggtWataMtBVacRaSaatc +cgtaBVttccagccBcttaRKtgtgcctttttRtgtcagcRttKtaaacKtaaatctcac +aattgcaNtSBaaccgggttattaaBcKatDagttactcttcattVtttHaaggctKKga +tacatcBggScagtVcacattttgaHaDSgHatRMaHWggtatatRgccDttcgtatcga +aacaHtaagttaRatgaVacttagattVKtaaYttaaatcaNatccRttRRaMScNaaaD +gttVHWgtcHaaHgacVaWtgttScactaagSgttatcttagggDtaccagWattWtRtg +ttHWHacgattBtgVcaYatcggttgagKcWtKKcaVtgaYgWctgYggVctgtHgaNcV +taBtWaaYatcDRaaRtSctgaHaYRttagatMatgcatttNattaDttaattgttctaa +ccctcccctagaWBtttHtBccttagaVaatMcBHagaVcWcagBVttcBtaYMccagat +gaaaaHctctaacgttagNWRtcggattNatcRaNHttcagtKttttgWatWttcSaNgg +gaWtactKKMaacatKatacNattgctWtatctaVgagctatgtRaHtYcWcttagccaa +tYttWttaWSSttaHcaaaaagVacVgtaVaRMgattaVcDactttcHHggHRtgNcctt +tYatcatKgctcctctatVcaaaaKaaaagtatatctgMtWtaaaacaStttMtcgactt +taSatcgDataaactaaacaagtaaVctaggaSccaatMVtaaSKNVattttgHccatca +cBVctgcaVatVttRtactgtVcaattHgtaaattaaattttYtatattaaRSgYtgBag +aHSBDgtagcacRHtYcBgtcacttacactaYcgctWtattgSHtSatcataaatataHt +cgtYaaMNgBaatttaRgaMaatatttBtttaaaHHKaatctgatWatYaacttMctctt +ttVctagctDaaagtaVaKaKRtaacBgtatccaaccactHHaagaagaaggaNaaatBW +attccgStaMSaMatBttgcatgRSacgttVVtaaDMtcSgVatWcaSatcttttVatag +ttactttacgatcaccNtaDVgSRcgVcgtgaacgaNtaNatatagtHtMgtHcMtagaa +attBgtataRaaaacaYKgtRccYtatgaagtaataKgtaaMttgaaRVatgcagaKStc +tHNaaatctBBtcttaYaBWHgtVtgacagcaRcataWctcaBcYacYgatDgtDHccta +aagacYRcaggattHaYgtKtaatgcVcaataMYacccatatcacgWDBtgaatcBaata +cKcttRaRtgatgaBDacggtaattaaYtataStgVHDtDctgactcaaatKtacaatgc +gYatBtRaDatHaactgtttatatDttttaaaKVccYcaaccNcBcgHaaVcattHctcg +attaaatBtatgcaaaaatYMctSactHatacgaWacattacMBgHttcgaatVaaaaca +BatatVtctgaaaaWtctRacgBMaatSgRgtgtcgactatcRtattaScctaStagKga +DcWgtYtDDWKRgRtHatRtggtcgaHgggcgtattaMgtcagccaBggWVcWctVaaat +tcgNaatcKWagcNaHtgaaaSaaagctcYctttRVtaaaatNtataaccKtaRgtttaM +tgtKaBtRtNaggaSattHatatWactcagtgtactaKctatttgRYYatKatgtccgtR +tttttatttaatatVgKtttgtatgtNtataRatWYNgtRtHggtaaKaYtKSDcatcKg +taaYatcSRctaVtSMWtVtRWHatttagataDtVggacagVcgKWagBgatBtaaagNc +aRtagcataBggactaacacRctKgttaatcctHgDgttKHHagttgttaatgHBtatHc +DaagtVaBaRccctVgtgDtacRHSctaagagcggWYaBtSaKtHBtaaactYacgNKBa +VYgtaacttagtVttcttaatgtBtatMtMtttaattaatBWccatRtttcatagVgMMt +agctStKctaMactacDNYgKYHgaWcgaHgagattacVgtttgtRaSttaWaVgataat +gtgtYtaStattattMtNgWtgttKaccaatagNYttattcgtatHcWtctaaaNVYKKt +tWtggcDtcgaagtNcagatacgcattaagaccWctgcagcttggNSgaNcHggatgtVt +catNtRaaBNcHVagagaaBtaaSggDaatWaatRccaVgggStctDaacataKttKatt +tggacYtattcSatcttagcaatgaVBMcttDattctYaaRgatgcattttNgVHtKcYR +aatRKctgtaaacRatVSagctgtWacBtKVatctgttttKcgtctaaDcaagtatcSat +aWVgcKKataWaYttcccSaatgaaaacccWgcRctWatNcWtBRttYaattataaNgac +acaatagtttVNtataNaYtaatRaVWKtBatKagtaatataDaNaaaaataMtaagaaS +tccBcaatNgaataWtHaNactgtcDtRcYaaVaaaaaDgtttRatctatgHtgttKtga +aNSgatactttcgagWaaatctKaaDaRttgtggKKagcDgataaattgSaacWaVtaNM +acKtcaDaaatttctRaaVcagNacaScRBatatctRatcctaNatWgRtcDcSaWSgtt +RtKaRtMtKaatgttBHcYaaBtgatSgaSWaScMgatNtctcctatttctYtatMatMt +RRtSaattaMtagaaaaStcgVgRttSVaScagtgDtttatcatcatacRcatatDctta +tcatVRtttataaHtattcYtcaaaatactttgVctagtaaYttagatagtSYacKaaac +gaaKtaaatagataatSatatgaaatSgKtaatVtttatcctgKHaatHattagaaccgt +YaaHactRcggSBNgtgctaaBagBttgtRttaaattYtVRaaaattgtaatVatttctc +ttcatgBcVgtgKgaHaaatattYatagWacNctgaaMcgaattStagWaSgtaaKagtt +ttaagaDgatKcctgtaHtcatggKttVDatcaaggtYcgccagNgtgcVttttagagat +gctaccacggggtNttttaSHaNtatNcctcatSaaVgtactgBHtagcaYggYVKNgta +KBcRttgaWatgaatVtagtcgattYgatgtaatttacDacSctgctaaaStttaWMagD +aaatcaVYctccgggcgaVtaaWtStaKMgDtttcaaMtVgBaatccagNaaatcYRMBg +gttWtaaScKttMWtYataRaDBMaDataatHBcacDaaKDactaMgagttDattaHatH +taYatDtattDcRNStgaatattSDttggtattaaNSYacttcDMgYgBatWtaMagact +VWttctttgYMaYaacRgHWaattgRtaagcattctMKVStatactacHVtatgatcBtV +NataaBttYtSttacKgggWgYDtgaVtYgatDaacattYgatggtRDaVDttNactaSa +MtgNttaacaaSaBStcDctaccacagacgcaHatMataWKYtaYattMcaMtgSttDag +cHacgatcaHttYaKHggagttccgatYcaatgatRaVRcaagatcagtatggScctata +ttaNtagcgacgtgKaaWaactSgagtMYtcttccaKtStaacggMtaagNttattatcg +tctaRcactctctDtaacWYtgaYaSaagaWtNtatttRacatgNaatgttattgWDDcN +aHcctgaaHacSgaataaRaataMHttatMtgaSDSKatatHHaNtacagtccaYatWtc +actaactatKDacSaStcggataHgYatagKtaatKagStaNgtatactatggRHacttg +tattatgtDVagDVaRctacMYattDgtttYgtctatggtKaRSttRccRtaaccttaga +gRatagSaaMaacgcaNtatgaaatcaRaagataatagatactcHaaYKBctccaagaRa +BaStNagataggcgaatgaMtagaatgtcaKttaaatgtaWcaBttaatRcggtgNcaca +aKtttScRtWtgcatagtttWYaagBttDKgcctttatMggNttattBtctagVtacata +aaYttacacaaRttcYtWttgHcaYYtaMgBaBatctNgcDtNttacgacDcgataaSat +YaSttWtcctatKaatgcagHaVaacgctgcatDtgttaSataaaaYSNttatagtaNYt +aDaaaNtggggacttaBggcHgcgtNtaaMcctggtVtaKcgNacNtatVaSWctWtgaW +cggNaBagctctgaYataMgaagatBSttctatacttgtgtKtaattttRagtDtacata +tatatgatNHVgBMtKtaKaNttDHaagatactHaccHtcatttaaagttVaMcNgHata +tKtaNtgYMccttatcaaNagctggacStttcNtggcaVtattactHaSttatgNMVatt +MMDtMactattattgWMSgtHBttStStgatatRaDaagattttctatMtaaaaaggtac +taaVttaSacNaatactgMttgacHaHRttgMacaaaatagttaatatWKRgacDgaRta +tatttattatcYttaWtgtBRtWatgHaaattHataagtVaDtWaVaWtgStcgtMSgaS +RgMKtaaataVacataatgtaSaatttagtcgaaHtaKaatgcacatcggRaggSKctDc +agtcSttcccStYtccRtctctYtcaaKcgagtaMttttcRaYDttgttatctaatcata +NctctgctatcaMatactataggDaHaaSttMtaDtcNatataattctMcStaaBYtaNa +gatgtaatHagagSttgWHVcttatKaYgDctcttggtgttMcRaVgSgggtagacaata +aDtaattSaDaNaHaBctattgNtaccaaRgaVtKNtaaYggHtaKKgHcatctWtctDt +ttctttggSDtNtaStagttataaacaattgcaBaBWggHgcaaaBtYgctaatgaaatW +cDcttHtcMtWWattBHatcatcaaatctKMagtDNatttWaBtHaaaNgMttaaStagt +tctctaatDtcRVaYttgttMtRtgtcaSaaYVgSWDRtaatagctcagDgcWWaaaBaa +RaBctgVgggNgDWStNaNBKcBctaaKtttDcttBaaggBttgaccatgaaaNgttttt +tttatctatgttataccaaDRaaSagtaVtDtcaWatBtacattaWacttaSgtattggD +gKaaatScaattacgWcagKHaaccaYcRcaRttaDttRtttHgaHVggcttBaRgtccc +tDatKaVtKtcRgYtaKttacgtatBtStaagcaattaagaRgBagSaattccSWYttta +ttVaataNctgHgttaaNBgcVYgtRtcccagWNaaaacaDNaBcaaaaRVtcWMgBagM +tttattacgDacttBtactatcattggaaatVccggttRttcatagttVYcatYaSHaHc +ttaaagcNWaHataaaRWtctVtRYtagHtaaaYMataHYtNBctNtKaatattStgaMc +BtRgctaKtgcScSttDgYatcVtggaaKtaagatWccHccgKYctaNNctacaWctttt +gcRtgtVcgaKttcMRHgctaHtVaataaDtatgKDcttatBtDttggNtacttttMtga +acRattaaNagaactcaaaBBVtcDtcgaStaDctgaaaSgttMaDtcgttcaccaaaag +gWtcKcgSMtcDtatgtttStaaBtatagDcatYatWtaaaBacaKgcaDatgRggaaYc +taRtccagattDaWtttggacBaVcHtHtaacDacYgtaatataMagaatgHMatcttat +acgtatttttatattacHactgttataMgStYaattYaccaattgagtcaaattaYtgta +tcatgMcaDcgggtcttDtKgcatgWRtataatatRacacNRBttcHtBgcRttgtgcgt +catacMtttBctatctBaatcattMttMYgattaaVYatgDaatVagtattDacaacDMa +tcMtHcccataagatgBggaccattVWtRtSacatgctcaaggggYtttDtaaNgNtaaB +atggaatgtctRtaBgBtcNYatatNRtagaacMgagSaSDDSaDcctRagtVWSHtVSR +ggaacaBVaccgtttaStagaacaMtactccagtttVctaaRaaHttNcttagcaattta +ttaatRtaaaatctaacDaBttggSagagctacHtaaRWgattcaaBtctRtSHaNtgta +cattVcaHaNaagtataccacaWtaRtaaVKgMYaWgttaKggKMtKcgWatcaDatYtK +SttgtacgaccNctSaattcDcatcttcaaaDKttacHtggttHggRRaRcaWacaMtBW +VHSHgaaMcKattgtaRWttScNattBBatYtaNRgcggaagacHSaattRtttcYgacc +BRccMacccKgatgaacttcgDgHcaaaaaRtatatDtatYVtttttHgSHaSaatagct +NYtaHYaVYttattNtttgaaaYtaKttWtctaNtgagaaaNctNDctaaHgttagDcRt +tatagccBaacgcaRBtRctRtggtaMYYttWtgataatcgaataattattataVaaaaa +ttacNRVYcaaMacNatRttcKatMctgaagactaattataaYgcKcaSYaatMNctcaa +cgtgatttttBacNtgatDccaattattKWWcattttatatatgatBcDtaaaagttgaa +VtaHtaHHtBtataRBgtgDtaataMttRtDgDcttattNtggtctatctaaBcatctaR +atgNacWtaatgaagtcMNaacNgHttatactaWgcNtaStaRgttaaHacccgaYStac +aaaatWggaYaWgaattattcMaactcBKaaaRVNcaNRDcYcgaBctKaacaaaaaSgc +tccYBBHYaVagaatagaaaacagYtctVccaMtcgtttVatcaatttDRtgWctagtac +RttMctgtDctttcKtWttttataaatgVttgBKtgtKWDaWagMtaaagaaattDVtag +gttacatcatttatgtcgMHaVcttaBtVRtcgtaYgBRHatttHgaBcKaYWaatcNSc +tagtaaaaatttacaatcactSWacgtaatgKttWattagttttNaggtctcaagtcact +attcttctaagKggaataMgtttcataagataaaaatagattatDgcBVHWgaBKttDgc +atRHaagcaYcRaattattatgtMatatattgHDtcaDtcaaaHctStattaatHaccga +cNattgatatattttgtgtDtRatagSacaMtcRtcattcccgacacSattgttKaWatt +NHcaacttccgtttSRtgtctgDcgctcaaMagVtBctBMcMcWtgtaacgactctcttR +ggRKSttgYtYatDccagttDgaKccacgVatWcataVaaagaataMgtgataaKYaaat +cHDaacgataYctRtcYatcgcaMgtNttaBttttgatttaRtStgcaacaaaataccVg +aaDgtVgDcStctatatttattaaaaRKDatagaaagaKaaYYcaYSgKStctccSttac +agtcNactttDVttagaaagMHttRaNcSaRaMgBttattggtttaRMggatggcKDgWR +tNaataataWKKacttcKWaaagNaBttaBatMHtccattaacttccccYtcBcYRtaga +ttaagctaaYBDttaNtgaaaccHcaRMtKtaaHMcNBttaNaNcVcgVttWNtDaBatg +ataaVtcWKcttRggWatcattgaRagHgaattNtatttctctattaattaatgaDaaMa +tacgttgggcHaYVaaNaDDttHtcaaHtcVVDgBVagcMacgtgttaaBRNtatRtcag +taagaggtttaagacaVaaggttaWatctccgtVtaDtcDatttccVatgtacNtttccg +tHttatKgScBatgtVgHtYcWagcaKtaMYaaHgtaattaSaHcgcagtWNaatNccNN +YcacgVaagaRacttctcattcccRtgtgtaattagcSttaaStWaMtctNNcSMacatt +ataaactaDgtatWgtagtttaagaaaattgtagtNagtcaataaatttgatMMYactaa +tatcggBWDtVcYttcDHtVttatacYaRgaMaacaStaatcRttttVtagaDtcacWat +ttWtgaaaagaaagNRacDtttStVatBaDNtaactatatcBSMcccaSttccggaMatg +attaaWatKMaBaBatttgataNctgttKtVaagtcagScgaaaDggaWgtgttttKtWt +atttHaatgtagttcactaaKMagttSYBtKtaYgaactcagagRtatagtVtatcaaaW +YagcgNtaDagtacNSaaYDgatBgtcgataacYDtaaactacagWDcYKaagtttatta +gcatcgagttKcatDaattgattatDtcagRtWSKtcgNtMaaaaacaMttKcaWcaaSV +MaaaccagMVtaMaDtMaHaBgaacataBBVtaatVYaNSWcSgNtDNaaKacacBttta +tKtgtttcaaHaMctcagtaacgtcgYtactDcgcctaNgagagcYgatattttaaattt +ccattttacatttDaaRctattttWctttacgtDatYtttcagacgcaaVttagtaaKaa +aRtgVtccataBggacttatttgtttaWNtgttVWtaWNVDaattgtatttBaagcBtaa +BttaaVatcHcaVgacattccNggtcgacKttaaaRtagRtctWagaYggtgMtataatM +tgaaRttattttgWcttNtDRRgMDKacagaaaaggaaaRStcccagtYccVattaNaaK +StNWtgacaVtagaagcttSaaDtcacaacgDYacWDYtgtttKatcVtgcMaDaSKStV +cgtagaaWaKaagtttcHaHgMgMtctataagBtKaaaKKcactggagRRttaagaBaaN +atVVcgRcKSttDaactagtSttSattgttgaaRYatggttVttaataaHttccaagDtg +atNWtaagHtgcYtaactRgcaatgMgtgtRaatRaNaacHKtagactactggaatttcg +ccataacgMctRgatgttaccctaHgtgWaYcactcacYaattcttaBtgacttaaacct +gYgaWatgBttcttVttcgttWttMcNYgtaaaatctYgMgaaattacNgaHgaacDVVM +tttggtHtctaaRgtacagacgHtVtaBMNBgattagcttaRcttacaHcRctgttcaaD +BggttKaacatgKtttYataVaNattccgMcgcgtagtRaVVaattaKaatggttRgaMc +agtatcWBttNtHagctaatctagaaNaaacaYBctatcgcVctBtgcaaagDgttVtga +HtactSNYtaaNccatgtgDacgaVtDcgKaRtacDcttgctaagggcagMDagggtBWR +tttSgccttttttaacgtcHctaVtVDtagatcaNMaVtcVacatHctDWNaataRgcgt +aVHaggtaaaaSgtttMtattDgBtctgatSgtRagagYtctSaKWaataMgattRKtaa +catttYcgtaacacattRWtBtcggtaaatMtaaacBatttctKagtcDtttgcBtKYYB +aKttctVttgttaDtgattttcttccacttgSaaacggaaaNDaattcYNNaWcgaaYat +tttMgcBtcatRtgtaaagatgaWtgaccaYBHgaatagataVVtHtttVgYBtMctaMt +cctgaDcYttgtccaaaRNtacagcMctKaaaggatttacatgtttaaWSaYaKttBtag +DacactagctMtttNaKtctttcNcSattNacttggaacaatDagtattRtgSHaataat +gccVgacccgatactatccctgtRctttgagaSgatcatatcgDcagWaaHSgctYYWta +tHttggttctttatVattatcgactaagtgtagcatVgtgHMtttgtttcgttaKattcM +atttgtttWcaaStNatgtHcaaaDtaagBaKBtRgaBgDtSagtatMtaacYaatYtVc +KatgtgcaacVaaaatactKcRgtaYtgtNgBBNcKtcttaccttKgaRaYcaNKtactt +tgagSBtgtRagaNgcaaaNcacagtVtttHWatgttaNatBgtttaatNgVtctgaata +tcaRtattcttttttttRaaKcRStctcggDgKagattaMaaaKtcaHacttaataataK +taRgDtKVBttttcgtKaggHHcatgttagHggttNctcgtatKKagVagRaaaggaaBt +NatttVKcRttaHctaHtcaaatgtaggHccaBataNaNaggttgcWaatctgatYcaaa +HaatWtaVgaaBttagtaagaKKtaaaKtRHatMaDBtBctagcatWtatttgWttVaaa +ScMNattRactttgtYtttaaaagtaagtMtaMaSttMBtatgaBtttaKtgaatgagYg +tNNacMtcNRacMMHcttWtgtRtctttaacaacattattcYaMagBaacYttMatcttK +cRMtgMNccattaRttNatHaHNaSaaHMacacaVaatacaKaSttHatattMtVatWga +ttttttaYctttKttHgScWaacgHtttcaVaaMgaacagNatcgttaacaaaaagtaca +HBNaattgttKtcttVttaaBtctgctacgBgcWtttcaggacacatMgacatcccagcg +gMgaVKaBattgacttaatgacacacaaaaaatRKaaBctacgtRaDcgtagcVBaacDS +BHaaaaSacatatacagacRNatcttNaaVtaaaataHattagtaaaaSWccgtatWatg +gDttaactattgcccatcttHaSgYataBttBaactattBtcHtgatcaataSttaBtat +KSHYttWggtcYtttBttaataccRgVatStaHaKagaatNtagRMNgtcttYaaSaact +cagDSgagaaYtMttDtMRVgWKWtgMaKtKaDttttgactatacataatcNtatNaHat +tVagacgYgatatatttttgtStWaaatctWaMgagaRttRatacgStgattcttaagaD +taWccaaatRcagcagaaNKagtaaDggcgccBtYtagSBMtactaaataMataBSacRM +gDgattMMgtcHtcaYDtRaDaacggttDaggcMtttatgttaNctaattaVacgaaMMt +aatDccSgtattgaRtWWaccaccgagtactMcgVNgctDctaMScatagcgtcaactat +acRacgHRttgctatttaatgaattataYKttgtaagWgtYttgcHgMtaMattWaWVta +RgcttgYgttBHtYataSccStBtgtagMgtDtggcVaaSBaatagDttgBgtctttctc +attttaNagtHKtaMWcYactVcgcgtatMVtttRacVagDaatcttgctBBcRDgcaac +KttgatSKtYtagBMagaRtcgBattHcBWcaactgatttaatttWDccatttatcgagS +KaWttataHactaHMttaatHtggaHtHagaatgtKtaaRactgtttMatacgatcaagD +gatKaDctataMggtHDtggHacctttRtatcttYattttgacttgaaSaataaatYcgB +aaaaccgNatVBttMacHaKaataagtatKgtcaagactcttaHttcggaattgttDtct +aaccHttttWaaatgaaatataaaWattccYDtKtaaaacggtgaggWVtctattagtga +ctattaagtMgtttaagcatttgSgaaatatccHaaggMaaaattttcWtatKctagDtY +tMcctagagHcactttactatacaaacattaacttaHatcVMYattYgVgtMttaaRtga +aataaDatcaHgtHHatKcDYaatcttMtNcgatYatgSaMaNtcttKcWataScKggta +tcttacgcttWaaagNatgMgHtctttNtaacVtgttcMaaRatccggggactcMtttaY +MtcWRgNctgNccKatcttgYDcMgattNYaRagatHaaHgKctcataRDttacatBatc +cattgDWttatttaWgtcggagaaaaatacaatacSNtgggtttccttacSMaagBatta +caMaNcactMttatgaRBacYcYtcaaaWtagctSaacttWgDMHgaggatgBVgcHaDt +ggaactttggtcNatNgtaKaBcccaNtaagttBaacagtatacDYttcctNgWgcgSMc +acatStctHatgRcNcgtacacaatRttMggaNKKggataaaSaYcMVcMgtaMaHtgat +tYMatYcggtcttcctHtcDccgtgRatcattgcgccgatatMaaYaataaYSggatagc +gcBtNtaaaScaKgttBgagVagttaKagagtatVaactaSacWactSaKatWccaKaaa +atBKgaaKtDMattttgtaaatcRctMatcaaMagMttDgVatggMaaWgttcgaWatga +aatttgRtYtattaWHKcRgctacatKttctaccaaHttRatctaYattaaWatVNccat +NgagtcKttKataStRaatatattcctRWatDctVagttYDgSBaatYgttttgtVaatt +taatagcagMatRaacttBctattgtMagagattaaactaMatVtHtaaatctRgaaaaa +aaatttWacaacaYccYDSaattMatgaccKtaBKWBattgtcaagcHKaagttMMtaat +ttcKcMagNaaKagattggMagaggtaatttYacatcWaaDgatMgKHacMacgcVaaca +DtaDatatYggttBcgtatgWgaSatttgtagaHYRVacaRtctHaaRtatgaactaata +tctSSBgggaaHMWtcaagatKgagtDaSatagttgattVRatNtctMtcSaagaSHaat +aNataataRaaRgattctttaataaagWaRHcYgcatgtWRcttgaaggaMcaataBRaa +ccagStaaacNtttcaatataYtaatatgHaDgcStcWttaacctaRgtYaRtataKtgM +ttttatgactaaaatttacYatcccRWtttHRtattaaatgtttatatttgttYaatMca +RcSVaaDatcgtaYMcatgtagacatgaaattgRtcaaYaaYtRBatKacttataccaNa +aattVaBtctggacaagKaaYaaatatWtMtatcYaaVNtcgHaactBaagKcHgtctac +aatWtaDtSgtaHcataHtactgataNctRgttMtDcDttatHtcgtacatcccaggStt +aBgtcacacWtccNMcNatMVaVgtccDYStatMaccDatggYaRKaaagataRatttHK +tSaaatDgataaacttaHgttgVBtcttVttHgDacgaKatgtatatNYataactctSat +atatattgcHRRYttStggaactHgttttYtttaWtatMcttttctatctDtagVHYgMR +BgtHttcctaatYRttKtaagatggaVRataKDctaMtKBNtMtHNtWtttYcVtattMc +gRaacMcctNSctcatttaaagDcaHtYccSgatgcaatYaaaaDcttcgtaWtaattct +cgttttScttggtaatctttYgtctaactKataHacctMctcttacHtKataacacagcN +RatgKatttttSaaatRYcgDttaMRcgaaattactMtgcgtaagcgttatBtttttaat +taagtNacatHgttcRgacKcBBtVgatKttcgaBaatactDRgtRtgaNacWtcacYtt +aaKcgttctHaKttaNaMgWgWaggtctRgaKgWttSttBtDcNtgtttacaaatYcDRt +gVtgcctattcNtctaaaDMNttttNtggctgagaVctDaacVtWccaagtaacacaNct +gaScattccDHcVBatcgatgtMtaatBgHaatDctMYgagaatgYWKcctaatNaStHa +aaKccgHgcgtYaaYtattgtStgtgcaaRtattaKatattagaWVtcaMtBagttatta +gNaWHcVgcaattttDcMtgtaRHVYtHtctgtaaaaHVtMKacatcgNaatttMatatg +ttgttactagWYtaRacgataKagYNKcattataNaRtgaacKaYgcaaYYacaNccHat +MatDcNgtHttRaWttagaaDcaaaaaatagggtKDtStaDaRtaVtHWKNtgtattVct +SVgRgataDaRaWataBgaagaaKtaataaYgDcaStaNgtaDaaggtattHaRaWMYaY +aWtggttHYgagVtgtgcttttcaaDKcagVcgttagacNaaWtagtaataDttctggtt +VcatcataaagtgKaaaNaMtaBBaattaatWaattgctHaVKaSgDaaVKaHtatatat +HatcatSBagNgHtatcHYMHgttDgtaHtBttWatcgtttaRaattgStKgSKNWKatc +agDtctcagatttctRtYtBatBgHHtKaWtgYBgacVVWaKtacKcDttKMaKaVcggt +gttataagaataaHaatattagtataatMHgttYgaRttagtaRtcaaVatacggtcMcg +agtaaRttacWgactKRYataaaagSattYaWgagatYagKagatgSaagKgttaatMgg +tataatgttWYttatgagaaacctNVataatHcccKtDctcctaatactggctHggaSag +gRtKHaWaattcgSatMatttagaggcYtctaMcgctcataSatatgRagacNaaDagga +VBagaYttKtacNaKgtSYtagttggaWcatcWttaatctatgaVtcgtgtMtatcaYcg +tRccaaYgDctgcMgtgtWgacWtgataacacgcgctBtgttaKtYDtatDcatcagKaV +MctaatcttgVcaaRgcRMtDcgattaHttcaNatgaatMtactacVgtRgatggaWttt +actaaKatgagSaaKggtaNtactVaYtaaKRagaacccacaMtaaMtKtatBcttgtaa +WBtMctaataaVcDaaYtcRHBtcgttNtaaHatttBNgRStVDattBatVtaagttaYa +tVattaagaBcacggtSgtVtatttaRattgatgtaHDKgcaatattKtggcctatgaWD +KRYcggattgRctatNgatacaatMNttctgtcRBYRaaaHctNYattcHtaWcaattct +BtMKtVgYataatMgYtcagcttMDataVtggRtKtgaatgccNcRttcaMtRgattaac +attRcagcctHtWMtgtDRagaKaBtgDttYaaaaKatKgatctVaaYaacWcgcatagB +VtaNtRtYRaggBaaBtgKgttacataagagcatgtRattccacttaccatRaaatgWgD +aMHaYVgVtaSctatcgKaatatattaDgacccYagtgtaYNaaatKcagtBRgagtcca +tgKgaaaccBgaagBtgSttWtacgatWHaYatcgatttRaaNRgcaNaKVacaNtDgat +tgHVaatcDaagcgtatgcNttaDataatcSataaKcaataaHWataBtttatBtcaKtK +tatagttaDgSaYctacaRatNtaWctSaatatttYaKaKtaccWtatcRagacttaYtt +VcKgSDcgagaagatccHtaattctSttatggtKYgtMaHagVaBRatttctgtRgtcta +tgggtaHKgtHacHtSYacgtacacHatacKaaBaVaccaDtatcSaataaHaagagaat +ScagactataaRttagcaaVcaHataKgDacatWccccaagcaBgagWatctaYttgaaa +tctVNcYtttWagHcgcgcDcVaaatgttKcHtNtcaatagtgtNRaactttttcaatgg +WgBcgDtgVgtttctacMtaaataaaRggaaacWaHttaRtNtgctaaRRtVBctYtVta +tDcattDtgaccYatagatYRKatNYKttNgcctagtaWtgaactaMVaacctgaStttc +tgaKVtaaVaRKDttVtVctaDNtataaaDtccccaagtWtcgatcactDgYaBcatcct +MtVtacDaaBtYtMaKNatNtcaNacgDatYcatcgcaRatWBgaacWttKttagYtaat +tcggttgSWttttDWctttacYtatatWtcatDtMgtBttgRtVDggttaacYtacgtac +atgaattgaaWcttMStaDgtatattgaDtcRBcattSgaaVBRgagccaaKtttcDgcg +aSMtatgWattaKttWtgDBMaggBBttBaatWttRtgcNtHcgttttHtKtcWtagHSt +aacagttgatatBtaWSaWggtaataaMttaKacDaatactcBttcaatatHttcBaaSa +aatYggtaRtatNtHcaatcaHtagVtgtattataNggaMtcttHtNagctaaaggtaga +YctMattNaMVNtcKtactBKcaHHcBttaSagaKacataYgctaKaYgttYcgacWVtt +WtSagcaacatcccHaccKtcttaacgaKttcacKtNtacHtatatRtaaatacactaBt +ttgaHaRttggttWtatYagcatYDatcggagagcWBataagRtacctataRKgtBgatg +aDatataSttagBaHtaatNtaDWcWtgtaattacagKttcNtMagtattaNgtctcgtc +ctcttBaHaKcKccgtRcaaYagSattaagtKataDatatatagtcDtaacaWHcaKttD +gaaRcgtgYttgtcatatNtatttttatggccHtgDtYHtWgttatYaacaattcaWtat +NgctcaaaSttRgctaatcaaatNatcgtttaBtNNVtgttataagcaaagattBacgtD +atttNatttaaaDcBgtaSKgacgtagataatttcHMVNttgttBtDtgtaWKaaRMcKM +tHtaVtagataWctccNNaSWtVaHatctcMgggDgtNHtDaDttatatVWttgttattt +aacctttcacaaggaSaDcggttttttatatVtctgVtaacaStDVaKactaMtttaSNa +gtgaaattaNacttSKctattcctctaSagKcaVttaagNaVcttaVaaRNaHaaHttat +gtHttgtgatMccaggtaDcgaccgtWgtWMtttaHcRtattgScctatttKtaaccaag +tYagaHgtWcHaatgccKNRtttagtMYSgaDatctgtgaWDtccMNcgHgcaaacNDaa +aRaStDWtcaaaaHKtaNBctagBtgtattaactaattttVctagaatggcWSatMaccc +ttHttaSgSgtgMRcatRVKtatctgaaaccDNatYgaaVHNgatMgHRtacttaaaRta +tStRtDtatDttYatattHggaBcttHgcgattgaKcKtttcRataMtcgaVttWacatN +catacctRataDDatVaWNcggttgaHtgtMacVtttaBHtgagVttMaataattatgtt +cttagtttgtgcDtSatttgBtcaacHattaaBagVWcgcaSYttMgcttacYKtVtatc +aYaKctgBatgcgggcYcaaaaacgNtctagKBtattatctttKtaVttatagtaYtRag +NtaYataaVtgaatatcHgcaaRataHtacacatgtaNtgtcgYatWMatttgaactacR +ctaWtWtatacaatctBatatgYtaagtatgtgtatSttactVatcttYtaBcKgRaSgg +RaaaaatgcagtaaaWgtaRgcgataatcBaataccgtatttttccatcNHtatWYgatH +SaaaDHttgctgtccHtggggcctaataatttttctatattYWtcattBtgBRcVttaVM +RSgctaatMagtYtttaaaaatBRtcBttcaaVtaacagctccSaaSttKNtHtKYcagc +agaaaccccRtttttaaDcDtaStatccaagcgctHtatcttaDRYgatDHtWcaaaBcW +gKWHttHataagHacgMNKttMKHccaYcatMVaacgttaKgYcaVaaBtacgcaacttt +MctaaHaatgtBatgagaSatgtatgSRgHgWaVWgataaatatttccKagVgataattW +aHNcYggaaatgctHtKtaDtctaaagtMaatVDVactWtSaaWaaMtaHtaSKtcBRaN +cttStggtBttacNagcatagRgtKtgcgaacaacBcgKaatgataagatgaaaattgta +ctgcgggtccHHWHaaNacaBttNKtKtcaaBatatgctaHNgtKcDWgtttatNgVDHg +accaacWctKaaggHttgaRgYaatHcaBacaatgagcaaattactgtaVaaYaDtagat +tgagNKggtggtgKtWKaatacagDRtatRaMRtgattDggtcaaYRtatttNtagaDtc +acaaSDctDtataatcgtactaHttatacaatYaacaaHttHatHtgcgatRRttNgcat +SVtacWWgaaggagtatVMaVaaattScDDKNcaYBYaDatHgtctatBagcaacaagaa +tgagaaRcataaKNaRtBDatcaaacgcattttttaaBtcSgtacaRggatgtMNaattg +gatatWtgagtattaaaVctgcaYMtatgatttttYgaHtgtcttaagWBttHttgtctt +attDtcgtatWtataataSgctaHagcDVcNtaatcaagtaBDaWaDgtttagYctaNcc +DtaKtaHcttaataacccaRKtacaVaatNgcWRaMgaattatgaBaaagattVYaHMDc +aDHtcRcgYtcttaaaWaaaVKgatacRtttRRKYgaatacaWVacVcRtatMacaBtac +tggMataaattttHggNagSctacHgtBagcgtcgtgattNtttgatSaaggMttctttc +ttNtYNagBtaaacaaatttMgaccttacataattgYtcgacBtVMctgStgMDtagtaR +ctHtatgttcatatVRNWataDKatWcgaaaaagttaaaagcacgHNacgtaatctttMR +tgacttttDacctataaacgaaatatgattagaactccSYtaBctttaataacWgaaaYa +tagatgWttcatKtNgatttttcaagHtaYgaaRaDaagtaggagcttatVtagtctttc +attaaaatcgKtattaRttacagVaDatgcatVgattgggtctttHVtagKaaRBtaHta +aggccccaaaaKatggtttaMWgtBtaaacttcactttKHtcgatctccctaYaBacMgt +cttBaBaNgcgaaacaatctagtHccHtKttcRtRVttccVctttcatacYagMVtMcag +aMaaacaataBctgYtaatRaaagattaaccatVRatHtaRagcgcaBcgDttStttttc +VtttaDtKgcaaWaaaaatSccMcVatgtKgtaKgcgatatgtagtSaaaDttatacaaa +catYaRRcVRHctKtcgacKttaaVctaDaatgttMggRcWaacttttHaDaKaDaBctg +taggcgtttaHBccatccattcNHtDaYtaataMttacggctNVaacDattgatatttta +cVttSaattacaaRtataNDgacVtgaacataVRttttaDtcaaacataYDBtttaatBa +DtttYDaDaMccMttNBttatatgagaaMgaNtattHccNataattcaHagtgaaggDga +tgtatatatgYatgaStcataaBStWacgtcccataRMaaDattggttaaattcMKtctM +acaBSactcggaatDDgatDgcWctaacaccgggaVcacWKVacggtaNatatacctMta +tgatagtgcaKagggVaDtgtaacttggagtcKatatcgMcttRaMagcattaBRaStct +YSggaHYtacaactMBaagDcaBDRaaacMYacaHaattagcattaaaHgcgctaaggSc +cKtgaaKtNaBtatDDcKBSaVtgatVYaagVtctSgMctacgttaacWaaattctSgtD +actaaStaaattgcagBBRVctaatatacctNttMcRggctttMttagacRaHcaBaacV +KgaataHttttMgYgattcYaNRgttMgcVaaacaVVcDHaatttgKtMYgtatBtVVct +WgVtatHtacaaHttcacgatagcagtaaNattBatatatttcVgaDagcggttMaagtc +ScHagaaatgcYNggcgtttttMtStggtRatctacttaaatVVtBacttHNttttaRca +aatcacagHgagagtMgatcSWaNRacagDtatactaaDKaSRtgattctccatSaaRtt +aaYctacacNtaRtaactggatgaccYtacactttaattaattgattYgttcagDtNKtt +agDttaaaaaaaBtttaaNaYWKMBaaaacVcBMtatWtgBatatgaacVtattMtYatM +NYDKNcKgDttDaVtaaaatgggatttctgtaaatWtctcWgtVVagtcgRgacttcccc +taDcacagcRcagagtgtWSatgtacatgttaaSttgtaaHcgatgggMagtgaacttat +RtttaVcaccaWaMgtactaatSSaHtcMgaaYtatcgaaggYgggcgtgaNDtgttMNg +aNDMtaattcgVttttaacatgVatgtWVMatatcaKgaaattcaBcctccWcttgaaWH +tWgHtcgNWgaRgctcBgSgaattgcaaHtgattgtgNagtDttHHgBttaaWcaaWagc +aSaHHtaaaVctRaaMagtaDaatHtDMtcVaWMtagSagcttHSattaacaaagtRacM +tRtctgttagcMtcaBatVKtKtKacgagaSNatSactgtatatcBctgagVtYactgta +aattaaaggcYgDHgtaacatSRDatMMccHatKgttaacgactKtgKagtcttcaaHRV +tccttKgtSataatttacaactggatDNgaacttcaRtVaagDcaWatcBctctHYatHa +DaaatttagYatSatccaWtttagaaatVaacBatHcatcgtacaatatcgcNYRcaata +YaRaYtgattVttgaatgaVaactcRcaNStgtgtattMtgaggtNttBaDRcgaaaagc +tNgBcWaWgtSaDcVtgVaatMKBtttcgtttctaaHctaaagYactgMtatBDtcStga +ccgtSDattYaataHctgggaYYttcggttaWaatctggtRagWMaDagtaacBccacta +cgHWMKaatgatWatcctgHcaBaSctVtcMtgtDttacctaVgatYcWaDRaaaaRtag +atcgaMagtggaRaWctctgMgcWttaagKBRtaaDaaWtctgtaagYMttactaHtaat +cttcataacggcacBtSgcgttNHtgtHccatgttttaaagtatcgaKtMttVcataYBB +aKtaMVaVgtattNDSataHcagtWMtaggtaSaaKgttgBtVtttgttatcatKcgHac +acRtctHatNVagSBgatgHtgaRaSgttRcctaacaaattDNttgacctaaYtBgaaaa +tagttattactcttttgatgtNNtVtgtatMgtcttRttcatttgatgacacttcHSaaa +ccaWWDtWagtaRDDVNacVaRatgttBccttaatHtgtaaacStcVNtcacaSRttcYa +gacagaMMttttgMcNttBcgWBtactgVtaRttctccaaYHBtaaagaBattaYacgat +ttacatctgtaaMKaRYtttttactaaVatWgctBtttDVttctggcDaHaggDaagtcg +aWcaagtagtWttHtgKtVataStccaMcWcaagataagatcactctHatgtcYgaKcat +cagatactaagNSStHcctRRNtattgtccttagttagMVgtatagactaactctVcaat +MctgtttgtgttgccttatWgtaBVtttctggMcaaKgDWtcgtaaYStgSactatttHg +atctgKagtagBtVacRaagRtMctatgggcaaaKaaaatacttcHctaRtgtDcttDat +taggaaatttcYHaRaaBttaatggcacKtgctHVcaDcaaaVDaaaVcgMttgtNagcg +taDWgtcgttaatDgKgagcSatatcSHtagtagttggtgtHaWtaHKtatagctgtVga +ttaBVaatgaataagtaatVatSttaHctttKtttgtagttaccttaatcgtagtcctgB +cgactatttVcMacHaaaggaatgDatggKtaHtgStatattaaSagctWcctccRtata +BaDYcgttgcNaagaggatRaaaYtaWgNtSMcaatttactaacatttaaWttHtatBat +tgtcgacaatNgattgcNgtMaaaKaBDattHacttggtRtttaYaacgVactBtaBaKt +gBttatgVttgtVttcaatcWcNctDBaaBgaDHacBttattNtgtDtatttVSaaacag +gatgcRatSgtaSaNtgBatagttcHBgcBBaaattaHgtDattatDaKaatBaaYaaMa +ataaataKtttYtagtBgMatNcatgtttgaNagtgttgtgKaNaSagtttgaSMaYBca +aaacDStagttVacaaaaactaaWttBaagtctgtgcgtMgtaattctcctacctcaNtt +taaccaaaaVtBcacataacaccccBcWMtatVtggaatgaWtcaaWaaaaaaaaWtDta +atatRcctDWtcctaccMtVVatKttaWaaKaaatataaagScHBagaggBaSMtaWaVt +atattactSaaaKNaactatNatccttgaYctattcaaaVgatttYHcRagattttaSat +aggttattcVtaaagaKgtattattKtRttNcggcRgtgtgtWYtaacHgKatKgatYta +cYagDtWcHBDctctgRaYKaYagcactKcacSaRtBttttBHKcMtNtcBatttatttt +tgSatVgaaagaWtcDtagDatatgMacaacRgatatatgtttgtKtNRaatatNatgYc +aHtgHataacKtgagtagtaacYttaNccaaatHcacaacaVDtagtaYtccagcattNt +acKtBtactaaagaBatVtKaaHBctgStgtBgtatgaSNtgDataaccctgtagcaBgt +gatcttaDataStgaMaccaSBBgWagtacKcgattgaDgNNaaaacacagtSatBacKD +gcgtataBKcatacactaSaatYtYcDaactHttcatRtttaatcaattataRtttgtaa +gMcgNttcatcBtYBagtNWNMtSHcattcRctttttRWgaKacKttgggagBcgttcgc +MaWHtaatactgtctctatttataVgtttaBScttttaBMaNaatMacactYtBMggtHa +cMagtaRtctgcatttaHtcaaaatttgagKtgNtactBacaHtcgtatttctMaSRagc +agttaatgtNtaaattgagagWcKtaNttagVtacgatttgaatttcgRtgtWcVatcgt +taaDVctgtttBWgaccagaaagtcSgtVtatagaBccttttcctaaattgHtatcggRa +ttttcaaggcYSKaagWaWtRactaaaacccBatMtttBaatYtaagaactSttcgaaSc +aatagtattgaccaagtgttttctaacatgtttNVaatcaaagagaaaNattaaRtttta +VaaaccgcaggNMtatattVctcaagaggaacgBgtttaacaagttcKcYaatatactaa +ccBaaaSggttcNtattctagttRtBacgScVctcaatttaatYtaaaaaaatgSaatga +tagaMBRatgRcMcgttgaWHtcaVYgaatYtaatctttYttatRaWtctgBtDcgatNa +tcKaBaDgatgtaNatWKctccgatattaacattNaaacDatgBgttctgtDtaaaMggt +gaBaSHataacgccSctaBtttaRBtcNHcDatcDcctagagtcRtaBgWttDRVHagat +tYatgtatcWtaHtttYcattWtaaagtctNgtStggRNcgcggagSSaaagaaaatYcH +DtcgctttaatgYcKBVSgtattRaYBaDaaatBgtatgaHtaaRaRgcaSWNtagatHa +acttNctBtcaccatctMcatattccaSatttgcgaDagDgtatYtaaaVDtaagtttWV +aagtagYatRttaagDcNgacKBcScagHtattatcDaDactaaaaaYgHttBcgaDttg +gataaaKSRcBMaBcgaBSttcWtgNBatRaccgattcatttataacggHVtaattcaca +agagVttaaRaatVVRKcgWtVgacctgDgYaaHaWtctttcacMagggatVgactagMa +aataKaaNWagKatagNaaWtaaaatttgaattttatttgctaaVgaHatBatcaaBWcB +gttcMatcgBaaNgttcgSNaggSaRtttgHtRtattaNttcDcatSaVttttcgaaaaa +ttgHatctaRaggSaNatMDaaatDcacgattttagaHgHaWtYgattaatHNSttatMS +gggNtcKtYatRggtttgtMWVtttaYtagcagBagHaYagttatatggtBacYcattaR +SataBatMtttaaatctHcaaaSaaaagttNSaaWcWRccRtKaagtBWtcaaattSttM +tattggaaaccttaacgttBtWatttatatWcDaatagattcctScacctaagggRaaYt +aNaatgVtBcttaaBaacaMVaaattatStYgRcctgtactatcMcVKatttcgSgatRH +MaaaHtagtaaHtVgcaaataatatcgKKtgccaatBNgaaWcVttgagttaKatagttc +aggKDatDtattgaKaVcaKtaataDataataHSaHcattagttaatRVYcNaHtaRcaa +ggtNHcgtcaaccaBaaagYtHWaaaRcKgaYaaDttgcWYtataRgaatatgtYtgcKt +aNttWacatYHctRaDtYtattcBttttatcSataYaYgttWaRagcacHMgtttHtYtt +YaatcggtatStttcgtRSattaaDaKMaatatactaNBaWgctacacYtgaYVgtgHta +aaRaaRgHtagtWattataaaSDaaWtgMattatcgaaaagtaYRSaWtSgNtBgagcRY +aMDtactaacttaWgtatctagacaagNtattHggataatYttYatcataDcgHgttBtt +ctttVttgccgaaWtaaaacgKgtatctaaaaaNtccDtaDatBMaMggaatNKtatBaa +atVtccRaHtaSacataHattgtttKVYattcataVaattWtcgtgMttcttKtgtctaa +cVtatctatatBRataactcgKatStatattcatHHRttKtccaacgtgggtgRgtgaMt +attattggctatcgtgacMtRcBDtcttgtactaatRHttttaagatcgVMDStattatY +BtttDttgtBtNttgRcMtYtgBacHaWaBaatDKctaagtgaaactaatgRaaKgatcc +aagNaaaatattaggWNtaagtatacttttKcgtcggSYtcttgRctataYcttatataa +agtatattaatttataVaacacaDHatctatttttKYVatHRactttaBHccaWagtact +BtcacgaVgcgttRtttttttSVgtSagtBaaattctgaHgactcttgMcattttagVta +agaattHctHtcaDaaNtaacRggWatagttcgtSttgaDatcNgNagctagDgatcNtt +KgttgtaDtctttRaaYStRatDtgMggactSttaDtagSaVtBDttgtDgccatcacaM +attaaaMtNacaVcgSWcVaaDatcaHaatgaattaMtatccVtctBtaattgtWattat +BRcWcaatgNNtactWYtDaKttaaatcactcagtRaaRgatggtKgcgccaaHgaggat +StattYcaNMtcaBttacttatgagDaNtaMgaaWtgtttcttctaHtMNgttatctaWW +atMtBtaaatagDVatgtBYtatcggcttaagacMRtaHScgatatYgRDtcattatSDa +HggaaataNgaWSRRaaaBaatagBattaDctttgHWNttacaataaaaaaatacggttt +gHgVtaHtWMttNtBtctagtMcgKMgHgYtataHaNagWtcaacYattaataYRgtaWK +gaBctataaccgatttaHaNBRaRaMtccggtNgacMtctcatttgcaattcWgMactta +caaDaaNtactWatVtttagccttMaatcagVaagtctVaaDaBtattaattaYtNaYtg +gattaKtaKctYaMtattYgatattataatKtVgDcttatatNBtcgttgtStttttMag +aggttaHYSttcKgtcKtDNtataagttataagSgttatDtRttattgttttSNggRtca +aKMNatgaatattgtBWtaMacctgggYgaSgaagYataagattacgagaatBtggtRcV +HtgYggaDgaYaKagWagctatagacgaaHgtWaNgacttHRatVaWacKYtgRVNgVcS +gRWctacatcKSactctgWYtBggtataagcttNRttVtgRcaWaaatDMatYattaact +ttcgaagRatSctgccttgcRKaccHtttSNVagtagHagBagttagaccaRtataBcca +taatSHatRtcHagacBWatagcaMtacaRtgtgaaBatctKRtScttccaNaatcNgta +atatWtcaMgactctBtWtaaNactHaaaaRctcgcatggctMcaaNtcagaaaaacaca +gtggggWttRttagtaagaVctVMtcgaatcttcMaaaHcaHBttcgattatgtcaDagc +YRtBtYcgacMgtDcagcgaNgttaataatagcagKYYtcgtaBtYctMaRtaRtDagaa +aacacatgYaBttgattattcgaaNttBctSataaMataWRgaHtttccgtDgaYtatgg +tDgHKgMtatttVtMtVagttaRatMattRagataaccctKctMtSttgaHagtcStcta +tttccSagatgttccacgaggYNttHRacgattcDatatDcataaaatBBttatcgaHtN +HaaatatDNaggctgaNcaaggagttBttMgRagVatBcRtaWgatgBtSgaKtcgHttt +gaatcaaDaHttcSBgHcagtVaaSttDcagccgttNBtgttHagYtattctttRWaaVt +SttcatatKaaRaaaNacaVtVctMtSDtDtRHRcgtaatgctcttaaatSacacaatcg +HattcaWcttaaaatHaaatcNctWttaNMcMtaKctVtcctaagYgatgatcYaaaRac +tctaRDaYagtaacgtDgaggaaatctcaaacatcaScttcKttNtaccatNtaNataca +tttHaaDHgcaDatMWaaBttcRggctMaagctVYcacgatcaDttatYtaatcKatWat +caatVYtNagatttgattgaYttttYgacttVtcKaRagaaaHVgDtaMatKYagagttN +atWttaccNtYtcDWgSatgaRgtMatgKtcgacaagWtacttaagtcgKtgatccttNc +ttatagMatHVggtagcgHctatagccctYttggtaattKNaacgaaYatatVctaataM +aaaYtgVtcKaYtaataacagaatHcacVagatYWHttagaaSMaatWtYtgtaaagNaa +acaVgaWtcacNWgataNttcaSagctMDaRttgNactaccgataMaaatgtttattDtc +aagacgctDHYYatggttcaagccNctccttcMctttagacBtaaWtaWVHggaaaaNat +ttaDtDtgctaaHHtMtatNtMtagtcatttgcaaaRatacagRHtatDNtgtDgaatVg +tVNtcaaatYBMaaaagcaKgtgatgatMgWWMaHttttMgMagatDtataaattaacca +actMtacataaattgRataatacgBtKtaataattRgtatDagDtcRDacctatRcagag +cSHatNtcaScNtttggacNtaaggaccgtgKNttgttNcttgaaRgYgRtNtcagttBc +ttttcHtKtgcttYaaNgYagtaaatgaatggWaMattBHtatctatSgtcYtgcHtaat +tHgaaMtHcagaaSatggtatgccaHBtYtcNattWtgtNgctttaggtttgtWatNtgH +tgcDttactttttttgcNtactKtWRaVcttcatagtgSNKaNccgaataaBttataata +YtSagctttaaatSttggctaaKSaatRccgWHgagDttaaatcatgagMtcgagtVtaD +ggaBtatttgDacataaacgtagYRagBWtgDStKDgatgaagttcattatttaKWcata +aatWRgatataRgttRacaaNKttNtKagaaYaStaactScattattaacgatttaaatg +DtaattagatHgaYataaactatggggatVHtgccgtNgatNYcaStRtagaccacWcaM +tatRagHgVactYtWHtcttcatgatWgagaKggagtatgaWtDtVtNaNtcgYYgtaaa +ctttaDtBactagtaDctatagtaatatttatatataacgHaaaRagKattSagttYtSt +>THREE Homo sapiens frequency +agagagacgatgaaaattaatcgtcaatacgctggcgaacactgagggggacccaatgct +cttctcggtctaaaaaggaatgtgtcagaaattggtcagttcaaaagtagaccggatctt +tgcggagaacaattcacggaacgtagcgttgggaaatatcctttctaccacacatcggat +tttcgccctctcccattatttattgtgttctcacatagaattattgtttagacatccctc +gttgtatggagagttgcccgagcgtaaaggcataatccatataccgccgggtgagtgacc +tgaaattgtttttagttgggatttcgctatggattagcttacacgaagagattctaatgg +tactataggataattataatgctgcgtggcgcagtacaccgttacaaacgtcgttcgcat +atgtggctaacacggtgaaaatacctacatcgtatttgcaatttcggtcgtttcatagag +cgcattgaattactcaaaaattatatatgttgattatttgattagactgcgtggaaagaa +ggggtactcaagccatttgtaaaagctgcatctcgcttaagtttgagagcttacattagt +ctatttcagtcttctaggaaatgtctgtgtgagtggttgtcgtccataggtcactggcat +atgcgattcatgacatgctaaactaagaaagtagattactattaccggcatgcctaatgc +gattgcactgctatgaaggtgcggacgtcgcgcccatgtagccctgataataccaatact +tacatttggtcagcaattctgacattatacctagcacccataaatttactcagacttgag +gacaggctcttggagtcgatcttctgtttgtatgcatgtgatcatatagatgaataagcg +atgcgactagttagggcatagtatagatctgtgtatacagttcagctgaacgtccgcgag +tggaagtacagctgagatctatcctaaaatgcaaccatatcgttcacacatgatatgaac +ccagggggaaacattgagttcagttaaattggcagcgaatcccccaagaagaaggcggag +tgacgttgaacgggcttatggtttttcagtacttcctccgtataagttgagcgaaatgta +aacagaataatcgttgtgttaacaacattaaaatcgcggaatatgatgagaatacacagt +gtgagcatttcacttgtaaaatatctttggtagaacttactttgctttaaatatgttaaa +ccgatctaataatctacaaaacggtagattttgcctagcacattgcgtccttctctattc +agatagaggcaatactcagaaggttttatccaaagcactgtgttgactaacctaagtttt +agtctaataatcatgattgattataggtgccgtggactacatgactcgtccacaaataat +acttagcagatcagcaattggccaagcacccgacttttatttaatggttgtgcaatagtc +cagattcgtattcgggactctttcaaataatagtttcctggcatctaagtaagaaaagct +cataaggaagcgatattatgacacgctcttccgccgctgttttgaaacttgagtattgct +cgtccgaaattgagggtcacttcaaaatttactgagaagacgaagatcgactaaagttaa +aatgctagtccacagttggtcaagttgaattcatccacgagttatatagctattttaatt +tatagtcgagtgtacaaaaaacatccacaataagatttatcttagaataacaacccccgt +atcatcgaaatcctccgttatggcctgactcctcgagcttatagcatttgtgctggcgct +cttgccaggaacttgctcgcgaggtggtgacgagtgagatgatcagtttcattatgatga +tacgattttatcgcgactagttaatcatcatagcaagtaaaatttgaattatgtcattat +catgctccattaacaggttatttaattgatactgacgaaattttttcacaatgggttttc +tagaatttaatatcagtaattgaagccttcataggggtcctactagtatcctacacgacg +caggtccgcagtatcctggagggacgtgttactgattaaaagggtcaaaggaatgaaggc +tcacaatgttacctgcttcaccatagtgagccgatgagttttacattagtactaaatccc +aaatcatactttacgatgaggcttgctagcgctaaagagaatacatacaccaccacatag +aattgttagcgatgatatcaaatagactcctggaagtgtcagggggaaactgttcaatat +ttcgtccacaggactgaccaggcatggaaaagactgacgttggaaactataccatctcac +gcccgacgcttcactaattgatgatccaaaaaatatagcccggattcctgattagcaaag +ggttcacagagaaagatattatcgacgtatatcccaaaaaacagacgtaatgtgcatctt +cgaatcgggatgaatacttgtatcataaaaatgtgacctctagtatacaggttaatgtta +gtgatacacaatactcgtgggccatgggttctcaaataaaatgtaatattgcgtcgatca +ctcacccacgtatttggtctaattatgttttatttagtgacaatccaatagataaccggt +cctattaagggctatatttttagcgaccacgcgtttaaacaaaggattgtatgtagatgg +taccagtttaattgccagtgggcaatcctaagcaaaatgagattctatcctaaagtttgg +gcttgatataagatttcggatgtatgggttttataatcgttggagagctcaatcatgagc +taatacatggatttcgctacctcaccgagagaccttgcatgaagaattctaaccaaaagt +ttaataggccggattggattgagttaattaagaccttgttcagtcatagtaaaaaccctt +aaattttaccgattgacaaagtgagcagtcgcaataccctatgcgaaacgcctcgatagt +gactaggtatacaaggtttttgagttcctttgaaatagttaactaatttaaaattaatta +acgacatggaaatcacagaacctaatgctttgtaggagttatttatgctgtttactgcct +ctacaaccctaataaagcagtcctaagaatgaaacgcatcttttagttcagaaagtggta +tccagggtggtcaatttaataaattcaacatcgggtctcaggatattcggtcatataatt +tattaagggctcttcgagtcttactctgagtgaaattggaaacagtcatccttttcgttg +tgaggcatcttacaccgctatcgatatacaatgcattccaccgcggtgtcccgtacacaa +ggaaacttgttaccttggggatataagaaaactcacacgtctcattattaaactgagtac +aatttttgcacgagaaagtaatgcaatacaatatgatgaaagccagctaatgaaaaggga +tggaacgcacctcggatctgttgcactggattaaaatccgattatttttaaaaatattca +gtgctagagcatatcaggtctacttttttatctggtatgtaaagcccacggagcgatagt +gagatccttacgactcaacgaaaagttataacataactcccgttagccaaagcccaatcc +cgattactgccctaccctaacgtctgccatctaaatatcgaacttgttatgatcaatgtg +actacctcccaccctttccccttcatttgttccactggggataagctagcgttttcagaa +tcaatgcaataagaatagccaattgtctcacttcatcagagctcttggcaattccaggcg +ctacgtggttctggaatatattcatttttcaaatagtaatacgtttagtgttgctattgt +ctacacgtttggatattacgttatgtgagcggacatcaatagttgtctaactctttagta +agccagagatagcactcttagcgaatggataccatcttccataagtttagttaatagtcc +gaaacaactgcttcgagcatatttgaacctccttgtaggcaaatagcctcttcaaagcaa +tcttactaatagatagagtttgttttaagggactactagaaatgggacaatcttaatagt +atgacctaaactgacatttaaagatatatccaggtggcaagcataaagatcattgcgcca +cctccaccgtgggattacttatcagtcgatatcctatatgctaagtttgcgacggcagaa +tacaaactaagctgagttgatgctaaccttacctatgataccccattggaccggttaaca +gccctacttattccaaataaaagaacttttatgctgtagaagctattatagtgatgcctg +gtaacttcagtatattaaaatgacacacatacgccatatagagctcctggaactttgaat +aatgagcgaacttcgaagttgaagagcaagaaaccatatgtcacggttgcctaaagcccg +gtaaccagacatgtgctatcattgatcattatcgaggttttcataaccttgacccattat +cggctgtgcgcggacaagtacttaaatcactagtttcttcacctgcttatcggtaagaaa +taaggttggcaaagaatcgcataagacggacgtagagccgcagcgttgtgcgagtccagg +tgcatgcgcagcaataggattttaaattttgttccatttttaatttagccgtaaggatgt +ccgtaaatgattgaaaattggattcaatctttgggcctatgctactggaacctgatcgac +aaaatttcaaacatacgttaactccgaaagaccgtatttttgcggctagaatagtcagtc +gcttggagccatataccttaccacttaaacgacgtgctcctgtagttgaaatataaacag +aacacaaagactaccgatcatatcaactgaagatctttgtaactttgaggcgaagcaccc +tcttcgagacaactaagagtaaagtaccgggcgccgcaaggagtcgattgggaccctaaa +tcttgacgaattgctaagaggctcagagctaccactgtaatttctctagagcccataata +aatgaacgatacatccgtaggtagcacctaagggattataatggaagccaaatgcagtta +ataatattatatactggcgtacacgattcgacggatctctcacatagtgattcacgaccc +ccccctttgattgacacagcgtcagcattttgcaagaacgatcttctgcatagggtgcgc +caccgtaaggatgacgtcgaagctacaactgggtataatttaccatgcttccctgatgct +gagtgcaatacactaagaatgagtttttaccccatatcaccagtatttgttctgttattg +cgaagaaatggctatgctgagttggcgactaaagtcacccatcctttttattaggtaacc +ccctcccttaaactaactgatttgctggagctgccctgcatacatatactttatcattta +tggacgtccgtgacgcttattatccaccatagtcgatatgctacacggattcattaatgg +atcgtaggagtttaagttatatttactaagatcggtctcggctactatcccgccttaccc +ggcgctatttacggccatttttaatatattgacggtaattattcctatggtttcgaccgc +acgtccttggacaagaaagaatggcaaaaaaaatgtaaaagaaaaaaaatattgagtccc +taccatcatataaaaaatatgtgatgagtaacttgacgaaatgttagtggttattaaaga +ctatctattacaccttttgttttctgtcgtagtatattaaagtctagaagccttacagga +aaatcagggttatacagccgatactccgcagcatgaatcatcgaggaggtgtcctaccat +cgcgccttgtaatcttgtctgtgtatactgtatttagaccttttatacaaagtaaatatc +tcggctttatgtgattgggaggggcctactcaaacatgatgacttgacctaataatcact +gtgcgggcgtcttatgactagctattccttgaaatccaccaccaaatggttaatatgtaa +aaactttgacgatgaaacaaggtgaatgtgtagttactttgtgtaattagctgcgtcgag +cattgcttgtaaaaccgtcaatcgcacacgttacttccataaaatttctacgaatacacc +cttcttaaaaaaaacgtaggaattcacgagtttaacaaacgataactgtataaagtggaa +gtccgaagaaagcagatgcccgaactactcgaagatgtttcgttttcttaaccatagggg +cttcttaatggcccactacgcacattttgttcaagcccgagagggacatccccattacgg +gagtattactaaaactgttccgtaatacgttcagcaagggatgaaaaaggccactgctca +agttattgacgtgggagtattacatcggaagcctgaatcccacactatgatggtctgtac +aggcctagggactgcgtctagacggtattaccggcttctaatcatacgatcgtgagtctt +aacgggaagtaaggctcacacctaccccaaaccatttatctatgtaagtataaaattgtg +cgtaagtgttcaaagtggacaataaagacgtggcaaaaacccccgcacataagccgcttt +agatttcacaaataccaatgcggttaaaaacatccttgagtcgtacatacaccatactcg +cgttaaacggatataacagaagataataaatccggatgtggagtcggtgtaactatagaa +agccaagtgaaataatgcttaccagtcatttagctatacggctttcatttcatgtcaaga +gggtggagtttgacctgtacagttgatatatcaccgatacttagaactcacctaaagcta +aaattgctcgcagcgtgtaatccgcatattacaaacaatagatgggattcattatacata +agacacgatgatctgctttttcaggttgcgagatgttgcctatcgtcaatcgagtcctgc +cttacaccacttaaacaaaagtattgacagggaacctattttcgaggtattatatagtcc +agcttgaatatcaatttgacagttaacctagtgaaaatcagtaagaggaaatacgccaca +ttctccagtgaaattctacgggttatcgtctagtccaactatcaattataactcacgaga +tataagtaaattctcgtacttggcctgatttttattatactttggatccttagtaaacag +gaagggagaaaccttcaacgaaaaacactggattttgttttactctcaaagctcttatat +gacggaaataccctgtcaagtcttaactttattactagactaatgaaatgggcttggggt +ggccagaatcatagtacaatttagcggatacactattcggactttcctatcggctgtctg +gttggataagtatggggactaataggctagacatacctatacttaaactatacaggcgtc +atctatctctgcaactttggagttccctgatgttctcccgccctttgggttcacatcttc +tataccgacacccctaataacgattagtttgtgggttagagtaaattaatacggttaata +ttaatgtatcgttgaaaagctggtgtcgccaataaggtaaccggctaggcagagtatatg +tcacgaagtataactaccctaatgataagctgtaggaataaaattaatgctgtctctaag +cgaagagatatttccgactctgttttaatgacgaatctcattacttctgacttgcaaatg +ttcaatatggcacggtttcacggcacctttgtgacgcatataatgaacttagaagattat +aacgacggaactttatatgataatccgttacgattaaagaatctgttaaatatcataatg +gcattcagttctagaccgtgcatcatggtaaacttactttctctgcatggcgacatacat +ttcgctattcaaattcgcgtgtggttacacccactcgcacctttggaatattaagagaag +atgatcagaaaatccattcgctcaatttttctgacgtacgtctaatttatcctaggagac +aaatcgttttatgtctctcacatttttgaagaaaggttcgagagacaatactcaggtcct +gaactgctagaagatactcggtggagcgtggcaacaatgaaaaactcgtgacataaatga +atgatacttttccaagttcagttaagtgaatatgtttaacatacccggcttttcgatctt +aagctgacgctggacgtgcgagtaatgtcagtctcttacatacactagtgactccaagtt +tcgtcaaaaacgccccctcccttctcgagcccactcacgctatgtattgacgcgaacttg +ttcgggatcagacttttcaggagttcggtcgcgtgtccctatgtgctaatatataagtta +gatcgcattagatgctaatctgaatacttatagacgaccttcaacgagaacgggtaccac +cttgaggctagagttaggtgtgaaacgacaggtagggacatataaaatttgagtgcggct +ttagttaagggtttaattacctactcaaacatcacgctcgcgcccttcgtacgtaatcga +ccatctagaggctaaggggactgtactaggtagtgattaatgatatcctagacgcacgtg +ccttagatcttcagactctgatggtccgcgatcaccgtaattgtagtcctccaactcgat +cactttgttggcgtcaaagaaattacgatatctaaatacttataatacaataaccaagga +tgagaatgactcatcgcgttggagttatattgcttgaagttctatggaatgaaagcacgt +tatctgccgtcccaatatctccagtgagctaattcattggacggtccactttgatcaatc +cccgaggagatgttcggacactttagtctgtaacacttagcgttgagaccacgaacaatt +gattactcagtcttgaaggtgttttccaaagttcattttaaataagactacgataggcct +ttcctattgatataaactacccggctctgttgttcgtgtgagtcgtacttctctgtgttt +ttctgattatagcaagattcgattcttagtgtaaacagcgatttttatttgacccgtcaa +tgagaagcgcataggatctaagcaaaattatcaagttgtgccacaaggtaagatctttcc +agttattgcaggtaggatgtatcccacgttgatagtatgaggtctgacgtcaactgtcta +ggagagttgaccgcgtgcgggtacaccggatttgcatcgatgttgagaacgcagaactcc +cactgtcgtggcggcgttcctgatatttagcaagaggcgttgataaagccctcatcatct +agatctcgacctcatctgccctcttgctccatcattttctacacagactactttcctatc +tacgttagtataattgctttctatcttagtatcatttagagcttctccgtcaacaggttc +gtgctattaaagttagtacgaaagggacaacttgtagcaacgcatttaatcggttttcga +ctacttcgcacaaaatcagataaagaagtttgtcattctattagacattgaattgcgcaa +ttgacttgtaccacttatgatcgaacactgaatcaagactgtgattaactaaaatagaca +agccactatatcaactaataaaaacgcccctggtggtcgaacatagttgactacaggata +attaattggactggagccattacattctctacaatcgtatcacttcccaagtagacaact +ttgaccttgtagtttcatgtacaaaaaaatgctttcgcaggagcacattggtagttcaat +agtttcatgggaacctcttgagccgtcttctgtgggtgtgttcggatagtaggtactgat +aaagtcgtgtcgctttcgatgagagggaattcaccggaaaacaccttggttaacaggata +gtctatgtaaacttcgagacatgtttaagagttaccagcttaatccacggtgctctacta +gtatcatcagctgtcttgcctcgcctagaaatatgcattctatcgttatcctatcaacgg +ttgccgtactgagcagccttattgtggaagagtaatatataaatgtagtcttgtctttac +gaagcagacgtaagtaataatgacttggaataccaaaactaaacatagtggattatcata +ctcaagaactctccagataaataacagtttttacgatacgtcaccaatgagcttaaagat +taggatcctcaaaactgatacaaacgctaattcatttgttattggatccagtatcagtta +aactgaatggagtgaagattgtagaatgttgttctggcctcgcatggggtctaggtgata +tacaatttctcatacttacacggtagtggaaatctgattctagcttcgtagctgactata +ctcaaggaaccactgctcaaggtaggagactagttccgaccctacagtcaaagtggccga +agcttaaactatagactagttgttaaatgctgatttcaagatatcatctatatacagttt +ggacaattatgtgtgcgaaactaaaattcatgctattcagatggatttcacttatgcctt +agaaacagatattgcccgagctcaatcaacagttttagccggaaacaatcgaagcatagg +gacaatgtatcttttcctaaattgccatgtgcagatttctgagtgtcacgaagcgcataa +tagaatcttgtgttgcctcaactcgttgaaaagtttaaaacaatcgcagcagtctttttg +gggtctactgtgtgtttgcaaaataactgaaagaaacgcttgaacaactctgaagtagct +cgagtactcattaaagtgtaacacattagtgaatatcggccaatgaaccaaacgcttccc +ggtacgctatctctctcatcgggaggcgatgtgcaggttatctacgaaagcatcccttta +cgttgagagtgtcgatgcatgaacctcattgtaacaatagcccagcaaattctcatacgt +gcctcagggtccgggcgtactcctccatggaagggcgcgcatctagtgttataccaactc +gctttttaactactatgctgtagttctacaggcatagtggccagtattttctaacttctc +tggatagatgctctcactcctcatccatcacggcttcagtttacgtcttacttgcttgtt +cagcaacggatggaggcattaagtatcttcactgttccctaaaattgctgttcaatatca +aagtaaggacgatacagggaaagctcaagcacactcattgaatactgccccagttgcaac +ctcacttaatctgacaaaaataatgactactctaagtgttgcggaagcagtctcttccac +gagcttgtctgtatcacttcgtataggcatgtaactcgatagacacgaacaccgagtgag +aaactatattcttgcttccgtgtgtgtgacaccaggtaattgatgcggatataagctgga +gatcactcacgcccacacaaggcgctgctacctctttattccaatgtgtaagaatttgct +aacttcatttctagaccgcagctttgcggtcataatttcacggtacggacccttgggtta +gagacttgataacacacttcgcagtttccaccgcgcacatgttttagtggcttctaacat +agaatttttgttgtgacataaagagtgcgtgggagacttgcccgaccgttaagccataat +caattgaaagccccgtgagtcacatctaattggttgtactgcgcatttagctatccttta +gctgactcgaagagattcgattcctaatataggttaattagatggctgccgcgcgaagta +aaacgtgaaaaacgtagtgcgcagatctgcataactcgcgcttaattacttatgagtagt +tccaagttcgctacgttatgagagagattggaattaagcaaatatgttttatggtgattt +tgggatgagaaggactgctaagtacggctactaaacaaatttctaaaaccgccatctacc +ttatcttggagacatttaagttgtatatgtcactagtctagcttttgtctgtgggacgcg +ttctcggaatgagggaaatgcaagagccgattcatcaaatgcttatctaagaaagtagtg +gactattacaccaagcacgaatgccagggaactgctttcttgctcaggacctcgcgacaa +ggtaccccgcataagtcctagaattacatttggtcagcaatgctgacatttgaccgtgaa +aacataattttaatcagaaggcagctcacccgcttgctctagatcttatctttgtatgaa +tgtcagaatttactgcaatatccgttccgaatagtgagggcttagtatagttctctgtat +acaggtcacatcaaactccccctgtcctagtacagctctgagctttaattaattgcatac +atttccttcaatcatcagatgaaaacaccgcgaatcatgctcttctcgtatagggcaaga +gaagcaacaaacaactagcccgactcacgttcatccgccgtatccttgttcagttcttac +tccgtattaggtcagcgaaatctaatcagaataatcggtcgcgtatcaaaattaaaatcc +cgcttgaggttgacaattaaaacgctgagcagttatcggctattagatagtggggtgaaa +gtaattggctggaattatgttaaaacgtgatattaagctaaaatacgctacttgttgccg +acctaattcagtcattcgatattcagttagagccaagaataacaagcttgtataaattga +acggggtgcactaaacgatgtgttactctaatattcagcttggagtatacctgaaggcga +attcatgtatcggccaataataagacgttgaagatcacaatttggactagcaaaagaagg +tgatttatgcgtggggattgagtccactgtacgagtacggtctctggaaaattataggtt +cagggaatataaggaagtaaagataattaccaagagatttttggtatcgctatgacccag +aggtgttctaacgtctgttttgatccgcagaatttctgcctcaatgcatatttgacggac +ttgaactagagcctctaaagttaaatggcgacgcaactgttcctaaacttcaattattac +tactctttttttcctagggtattgtagaggccagtggacaaaataaatcaaatttaagat +gtttcggacattaacatcccccgtagcatagaaatcatcagttatccaatctctcatcga +gcttttacaatttctgctggcgctatggacagcatatgccgcgagacctccgcaagactc +acttgatcactgtaagtatcttcattagaggttagagcctatagttaagctgctgaccta +gtaaaattggtattttctaattttattgctcaagttaaaggttagtgaagggataatgac +gttatttttgaacaatgggttgtattcaattttatatcacgaatggaacccttcattccc +ggcataatactagacgacacgaacaagctccgatctatcagccaggcacgtgttaaggtt +taattccggcaaaccaatgaagcatcaaaaggtgacctgatgcaacttagggtcacgatg +agtttttcaggactacttattacctattaataagttaacatgagccttcataccccgtaa +gacaatacatactccaccaattagaattctgagccatcttatctttttgtatcatcgaag +ggtatggccgaataggttaattagttactcctaacgtctctacaggcatgcatttgacgc +accttcgaaaatagtcaatctctcgccacacgcgtctagtatgcagcatcaaaaatatag +tccacggtttccggattaccaaacgcggcaaagagaaacattgtatcgacggagataact +taatacagaaggaaggggcatcttcgaatacggatgaataattctatctgtttattctga +catcttgttttcaggttaatcttacgcattcaaatgacgcctgccccatgcgtgcgcaat +tattttctaatattgacgagagcaatctcactccttttgggtctatttatgttttattga +ggcacaagcctatacagaacaggtactattaaggccgtgagtgtgagactcaaaccgtgg +aaacaaaggatgggttgttcttggtacaagttttagtgcatgtgggcaatccttaccaaa +atcagatgctatccttaactttgggctgcatttaagatggcggttggaggcctgtgagaa +tcctgcgtgtcatctttaatgaccgaattcatccatgtagattcagatcacacactcatt +ccttgatgttgtctaaacaaaagttgttgtggacgcattggagggagttaagtaacaact +tgggatcgcatacttataaaaattatatgttaaactttcacaaacgctgaagtccaaagt +aactagcccaaacgcctcgagagtcactaggtattaatggtgtttgagttcctgtgaaat +agtgttcgaaggtaaaatttatgtaccaaatcgaaagaacacttaataaggcttgcttgc +acggaggtatgatgtttactgactctacaaccctaattttccagtacgtacattcattcc +aataggttagttctcaaagtgctatacaggctcctcaattgatgatatgcttcagccgct +ctatggatattagctcattttatttaggaagcccgcttagaggcttactatgagggaaat +gccaaaatgtcatacttttcggtgtgtcccatatgacaccgctttacatagaatttgaat +taaaacgcgctctcccgttcactaccatacttggtaccgtgcgcatattacatatagata +taggatcattttttaaagctgtactaggtttgatcgacaatcttatgctatactatatga +tgtaaccctcataatcaataccgatcgtacgatcctagcataggtggcaagcgattttat +gccgattattgtgttaaatagtctgtgagtgtgattatcagggctacgttggtagagggg +ttgtatagacctcgcacacattgtgacatacttaacaatatacgaaaactgatataataa +atccccttacccaaacaccaatcccgttgaatcaactaccataacgtctcccatataaat +tgcctacttgtttgcataaatctgaatacataacaccattgcaccttcttgtgttccaat +cccgttaagattgccttgtcagatgatatgcaagaacaatagcatttgctagcaattatt +aacagctcttcgaattgcctccacataacgcgggagggtatattttaatttggcaaatac +taagtactgttggcgtcatatgctattaacggttggatattaagttatgtcagccgtaag +caagagtgggcgaaatattttgttacccagtgagagcactcttagagtttggatacaata +ggccatatgttgacttaagaggacgtaactacgccgtacaccattgttcaaccgacttct +tggcaaatagaatcgtattagcaatcttaagaatagagacacgttcgtgttagggtatac +tacaaatccgaaaatcttaagaggatcacctaaactgaaatttatacatatttcaacgtg +gatagatttaacataattcagccacctccaacctgggagtaattttcagtagatttacta +gatgattagtggcccaacgcacttgactatataagatctggggatcctaacctgacctat +gagacaaaattggaaacgttaacagcccttatgtgtacaaagaaaagtaagttgttgctg +ttcaacagatgatagtcatgacgcgtaacttcactatagtaaattgaaacaaatacgcaa +tttagacagaatggtacggtcatgaatgacagtaattcgaagtgctagaccaacttaaaa +taggtaaacgtgcccgaaaccccccttaacagaaagctgctatcatggtgcagtatcgac +gtgttcagaaacttgtaacttttgagcaggtccgagcacatggaagtatatcacgtgttt +ctgaaccggcttatccctaagatatatccgtcgcaaactttcgatttagtcccacgtaga +gcccaagcgttgtgcgactccacgtgcatgcccagaaatacgagtttaaatttggttaca +tggttaattttgaccgaagcatcgcactttatgattgataattggattcaatatgtcgcc +ctatgcgaatgcaacatgatccacaatttggctataagacgtttaatccgtatcacactt +tgtttgcggctagtatagtaacgcccgtgcaccaagagtcagtaacaattataagtactc +cgcaggtacttcaaatataaaaactaatcaaacacgacccatatgatcatctgaagatat +ttggaactttctcgacaaccaccctcgtactcaatacttacactaatcgacaggcacacg +caacgtgtacagtcgcaccatattgagtcaagatttgcttagtggcgatgagcgtacacg +cttatttctctagtcacaattagttatctacgagacatcacgagggagcaaataagcgat +gttatggctacacataggcacgtatgaatatgatataagccagttaaacagtcgaaccat +cgagcaaattctcatgcaccaacccacacgttgaggcacaaagagtaagctgtttgaatg +taacttcttctgctgagcgggccccaacgtaaggatcaactagaagagaaaactcggtat +tagtttaaatgcgtcacggagcatgagtgcatttcactaagaatgtctgtgtaaccaata +taacatctatttgttatctgattgcctacttatggctttgcggtcgtggcgactaatgtc +tccaatccttttgaggtcggtaccaactccctttaaattacgctgtgcaggctcatgcac +tgcatacatatacggtagcaggtagggacctcacgcacccttattataatcaatagtagt +tatcagtcaacgaggcaggaatgctgaggtcgaggtgttggtatattttctatgtgccgt +ctaggcgactatcacgcattaccaggcgagatttaagccaattttgaatatagtcaacgt +aatttttactatgggttccaccgaaacgccttgcacaactaagaatcccataaaatatcg +atatcaaataaaagattgtgtcaataccttcatatatattttttcggttgactaacgtga +actaaggttaggggttttgtatgtctatataggaaacagtttcttttctgtcctacttta +gtaaagtcttcaagccttactccaaaatcacggtgattaagccgttactcagcagcatga +ttctgcctgctcgggtcctaaaatccagccttgtaagagtcgctgtgtattagctaggga +gacctttgttaaaaaggatatatcgcggcgggatgtgagtgcgtggcgcatactcaatct +tcagctcgtgtcattataatatctctcccccacgcttttcactagatatgccgtgtaagc +aaacaccttatgcttaatttcgaaaatattggtacttgaaaaaagctgtaggggtactta +atgtctggtaggagatcaggagagaattgagtgtaaaaccgtaaagccctcacctgactt +catgtaaatggcttagaagactccatgatttaataaatactacgaaggaaagactggatc +taaagataactctagtaaggccaactcccttcaatgctgttgccagttataatccaagag +ctgtccttttctgaaccatagcggcttctgaagcgaactagaagcaaagttggttctagc +cagacagccacataccctgtacgggtgtattactaaaactggtccggtattagttcacca +agggaggaattaggcaaaggatctaggtatgcaagtcggagtattacatccctaccctga +atccatcaataggttcctctgtactggccttcgcaatgagtattcaaggttgtacagccg +tataataataagatagtgactatgaacgggaagtaacccgctcaccttccccaaaacatt +gttatatctaagtattaaagtctgccgtagtgttaatactcgaaaataaacaactggcaa +attacaccgcacttaagccgcttttgatttatatttttccaatgcgcttttaaaaataat +tcagtcctacatactaattaagacccttaaacggagatatcacaagttaagttttaacca +tctcgactaggtggaactatagatacccaactcaatttatcattacctgtaatgttccta +gaaggattgcatttcatgtcaagacggtggagtttcacagcgaaacttcagtgtgaacag +attctgagaaatcacctaaacctattagtcagagcacccggttagaaccagttgtcaaaa +aatagagcggttgcatgagacagaagtaacgatgagatccgttgtaacgttgagacatct +ggcctatcgtcaatacagtcctcccttaaaaatatttttaaatactaggcaaacccaaca +taggttagtcctatgtgatacgccacatggtatatcattttgtaacgttacctagggata +atcaggaagtggaattacgcaaaagtagacagtgaaatgcttagggttatagtctagtcc +aaagataaaggataaagcacgtcagagaactatattagccgaatgggaatcattgttagg +agactgtggatcatgtctaaaaagcaacgcagaaacagtcatcgaaaaaatctcgttttt +gtttgaatctaaaagagctttgatgaccgatagtacctgtatactagttactgtattacg +tgtctaatgatttcggattggggtccccagaatcagacgtcattgtagacgattcaagtt +taccaatttaatttcccagctctccttggagaactatcgccaataattgcagtcactttc +cttttctgaaacgataaagccgtcagagttctctgcaacgttggacttacctgaggttct +aacccactttcggttctaatagtagttaacgacacaacgaataacctttactgtggggct +ttcacgatattttttcgcttattattaatggttacgtcataagctggtgtccaaattaag +gttaccggcttcgcagagtagttgtatccaagtataacttccctaatcataagatcgagg +tagaaaattaatgctgtctctaaccgaacagatatgtcccactatgtggtatggacgttg +ctaattacttctgaagggaaattggtcattatggatacgtgtctaccatcaggtcggacg +cagatatggttctgtcttcagttgatccaccgttctttataggataataactgacgatta +aagattatggtaaatagattaagccaattctcttcttgtcagtgaagcatccttaactga +cttgctctgcagcccctcatacatttagctattcaaagtaccggctcgtttcaaactctc +ccacctttggaagaggttgtcaacttgataagtatatcatttacagcattttttcggacg +tacctctaatgtttcattgcagaaaattagttttttctatcgcacattttgcaagtaacg +ttagagacacaattatctgcgaatgaactgctagatctgacgaccgggagcctcgcaaat +atcaaaaaagactgacatatatcaaggagtcgttgacaagtgctggtaagtcaattggtt +tatctgtcccggcgtttcgatcttaagctgaccatgcacggcagagtaatgtcactctcg +ttcttacaagtctgtctccaagggtcggcaaaaaagacccctccattctcgagcccactc +acgatatgtagggacgacaacttgtgcggcttatgaattgtctggactgcgggcgagggt +ccatatctccgaagttagaagggacatacctttagatgataagatcaattcttattgacg +aaattcatccacaacggggaacaacttcaccctagacttacgtctgaaaagacacctagc +gtcttataaaaggtcagtgccccgtttcgtaaggctggaattacctacgcaaacttaaac +ctcgcgcccttccttacgtatcgacaagatagaggctatcgcgaatgtactacggaggca +tgaatcatatactagaaccaagtgcctgtgatattaacaagatgatccgacgcgagcacc +gtaattctaggcataaaactccagcaatttgggggccgaaaacaaatgacgttagctaat +taattatatgacatgatcaaaggaggtcaatcacgcatcgagttcgacgtatattcattg +aacttcgtgcgtttgaaagaaacttttatgaaggcaaaattgatcctgtctcctatttca +tgcgtacctcctagttgataattccccgagcagtggttaggacacttttgtcggtatcaa +gttccggtctcaaaacgtaaaattctgtaatctgtatggatggtctgtgaattagttaat +ttttatgaagtcgtcgagacgcagttcctattgatttattctaaacggagatgtgcttcg +tgggactcggaagtagatctgtgtttatgattattgctactttagatgctgactgttaac +tccgtgttgtttttcaaccgtatatcacaaccgaattggatagaacctatagtttcaagt +tctgccacaaggtatcatatttacagttagtgctggttgcttctttcaaacgtggtgagt +ttgtgctatcacgtcaacggtagagctcagtggaccgagtgcgcgttcaaccctgttcca +gagagggtgtgatagcacatataccacgctcgtcgaggcgttcatgatagtttgcaagag +ccggtgttaaacacatattattattgttatccaactaatcggacctatgcataaagcatt +gtctaaacagaataattgcctatatacggtagttttagtgatttatatcttagtatcagt +tagagcttcgaactcttcaggttcctcatatttaacgttcttcgaaagcgaaaacttcta +caaacgaatgtaagcggttttccaagtagtacctataaatcacagaaagatctgtctcag +tatagttgaaatggtattcagctagtgacgtgtaccaattatcatagttcactcaagcaa +gacgctcattaacgaatatagacaagacactatatcatataataaaaaagaacatggtgc +tcgaacatagttgaattcaccatattgaaggggaatgctgacatgtaattcgctactaga +cgatcaattccctacttgtcaaagttgaactggtacgttcttggaattaaatatgattgc +gctggaccaaattgcgacttcttgagtttcagggcaaacgattgagccggaggatgtccg +tctcttacctttcttgcttatgataaacgacggtccctgtacatcactgggaattctcag +caaaaataattgggtaaatcgagactcgatgtattcggccacaaaggtgttagacgttaa +agattattcaacggggcgataataggatcataaccggtatgcaagcgcattgaaagagcc +atgagatccttatccgataaacgctgcacggtatgtgcagccttattgtcgatcacgaat +ttataaatgtagtctgggctgtaagttgaagacctaagttataatgaagtgcaataccaa +atcgattcatagtggattatcagactcaagatatctcctgataaattacagttgttaaga +tacggataaaatgagatttaagattagcagcctctaatctgtttcaatcccgttggaatg +tggtatgcgatcaaggttaagttaaaatcaagcctgtcttcagtcttgattcttgttctg +ccatcgcatgcggtctacgtgagttaatatgtagcttacgttctagcttgtgctaatctg +agtatagattcgtagaggaatattatcaagcttccacgcctcaacgtacgtgtattggtc +acacaagacactaaaagtggaagtagcgtaaactatagtctagttgttaaatgctcagtt +cttgttatattcgatatactcttggctaatttatgtctgagtatataaaattaatgatat +taacttgcatttcacggatcccttagaaaaagattttgaccgagcgcattataaacggtt +acaccgaatcaatagaagcatacccaatagctttctttgaatttattgcctgcgcaactt +ggctgactctctagatccgaataattctatatggtcgtgacgaaactagttcattactgt +ttaaaatgccaacatgtcttttgggccgataatggctctttgcaaaattactcaatgata +cgattgatcaaagcggtagttgctagtggtagcatgtaagtctatcaaatgtctgattat +ccgaaaatcttccaaaagagtccacgtaccatatctatctcatagcgacgcgaggggaac +cttatctaactatcattccatttaccgggtgactctcgatgcaggatccgattgggataa +attgcccagaaatggctcattcctgactaagggtaaggccgttctcagcaagggaacccc +gcgaatctaggcttataccatctagattgttaactacttgcctgtagttctacagccata +ctggacagttgtttctaaatgatcgggattcatgctagcactcctctgaatgcaccgcgt +aagtttaactattacgtccgtgggcagataaggatggaggctgtatgtatcttaactgtt +acctaatatggctggtaattatcaaagtaaggaccttaatgccatagcgctagcaatcgc +tttgtatactgaccatgtgccaacctctcttaatctgtaaaatataatgtcttagctaac +tgtggacgatcatgtctctgcctagagcttcgctgtatcaattcctatagccagcgtact +agtgacacaacaacaccgtgtgagaaaagatattagtccttacgtctgtctctctacagc +ttattgatgaggattgaacatggacatatagctccccctcaaaagcagatgctacctctt +tattccattctcgaacatttgccgaacttaatttcgacaaacctgaggtcacgtcttaat +ttatcggtaacgtcacgtccctttgagactggataaatatattaccaggggccaacgagc +aattgttggaggcgcttctataatacaaggtgtcttgtcaaagaaagacggcgtgcgtct +cgtgcaactcacttaaccaatattaatgtgaaacccccctctctcacatcttatgcggtg +tactgccctggtacatttcctgtacaggactccaacagtgtagattcctaagatagctgt +tggagttgcctcacgccagatcgaaaaactgaataaactagtgagctgagctgcagaaat +accgcttaattacttatgactagttcaaagggacctacgtgatgtcagacattgcaagga +agaaattaggtttgtgcgtcattttggctggactagcactccttacttcccctactattc +aaatgtcgtaaacagcatgagacaggatcgtgctgacatttaaggtctattgggaacgag +gctacctttggtcgcgcgctcgcgttctccgaatgaccgaaatgcatgagcacagtatgc +aattgcttatagatctaaggtctggtcgttgaaaccaagcacgtaggcctgggaaatcag +ttcttcctcagcaactacacaaaagcgtccaagcattagtacttgtagtaaatgtccgaa +cctatgcgctcatttgaaagtcaaaaaatatttttaagcagtaggcacctaacccgattc +ctctacttagtagctttctttgattctcagaattgactgcaatatcactgcacaattctg +tgccattactagacttctctgtattaacgtctcatcttactaacactcgcctaggacaca +tctgagagtgaagtatttcaatacatttactgaaatcttcagttctaaaatccccgaata +aggctcttatcggtttggccaacacaagaaaaaaacttcttgcaccactcaccttcatac +gcaggagcctggggaacttagtaataactatttcggcagacaaagcttataacaagttgc +cggcgcgtataatatttaaaagaccccttgagctgctcaattaaaacgctcacctggtat +aggctattagatagtgccgtcttagtaaggggcgggaattatcggataaactgatatttt +gataaaataaccgacttgttcacgacataagtcactaaggagattttatctttctccaaa +gtatatcttccttggataatttcaaagcgctgcaatttaagttctgttactagtttatgc +tgctgggaggtgaccggaaggcgtagtaatctagaggcaaattataagaagttcatcata +tcattttcgactacaaaaacaaggtgttgtatgccggcgcattgtgtaaactggacgagt +accctagatggaaaattatacgttaagccaagatttcgatgtaatgataattacctacac +atttttgctatccataggaacaagagctgttctataggctcgtggcatacgaacatttgc +tgccgctatgaatattggaagctcttcaactacagactctattcttaattgccgtcgaaa +atgggccgaatcggctattattaatactcggtttttccgaggggattgttgtcgacagtc +gtaattattattaatattgatgttggtgaggtcatttaaatacaaccttgcagacaatga +ataagggatccaatctctcatactccttttacaattgctcatgcccctatgcaaacctta +tgccgccacacctccgcaactctctcttctgaactgtaagtagcttcattactggtttga +gactatactgaagctgatgacattctaaaatggctattttcgaatgtgattcataatgtt +tatcgtttgggatggcagaatcacgttatttttgatatagcccgggtattctattgtata +gaacgtatgctacaagtcattccccgaagaagactagaagtaaacaacatgcgaccatcg +ttaagccacgcaaggctgtagctttatttcccgataacctatcttccataaatagcggac +agcaggatactgacgctcaacatcagtggttatggtctaatttttaacttttaataaggt +aacttcagcaggcatacacagtaactctttaatttataatcaaattagaagtctgacact +tcttatatttttctatcatccaacgcgatcgcccattagcttattgtgttactaataacg +tatctaaaccaatccttttcaagctactgcctatattgtcaatatatacaaacaacagga +tagtaggctgcttaaaaaatattgtcaaccgtgtacgctttacaatacccggaaatcaca +aactttgtagacaacgagtgaaatttatacactacgaagggccagcgtacaagacccatg +aattaggcgatatgtttattctgacatattggtttatccttaatctgtcgctgtaaaatg +aagccgcccccatccctgcgaattttttttcgaagattcacgactgaaatataaatacgt +ttggctatatttatgttggagggaggcaatagcctttactgttaaccgaagatttagcca +gtgagtgtgacactaaaacactggaataaatgcaggcgttcttctgggtaaaaggtttag +tcaatctcgcctataagttcatatagctctggatataattatctggcccatgcatttatc +atggcgcttggtgccctgtgtgaagccggcctctcatattgaaggtccgaagtattccat +gtacattaagatcactctctcattcatgcatcttggcttaacaaatctggttgtccaagc +tttccaggcacgtatggtacaaattcggatcgaatacttataaaaatgatatgttaaact +gtctaaaacgctcatctacaaagtaaagtgcactaaccaatagagtctcaagaccgtgta +atgctggtgcactgaatgtgtaatacggttagaagggattagttatgttacaaatccatt +gaaaacttaagaagcattgcgtgctcggagggtgcatcttttatcaagagactaacatta +ttttcaacgacgtacatgctttacaatagggtacttatcaaacgccgagaaacgcgccta +tagtgatgttatgattatgacccgatatccattggaccgaattttatgtaggttcccagc +gtactcgcgtaatatctcggtattgccataatgtaatacttgtcggtctctcccagatga +aaaagcgttacagagtatttcaatgaaaaacagcgcgcaacgtcaatacctttaggggta +acggccgctgatttcatatagatatacgataagttggtatagctctactaggtggcatcc +acaatcgttgcatttactatagctggttacaatcataatctataccgttccttacatact +accatagcgggatagcgtttttttgccgttgattgggtttaagaggatgtcagtctcatt +atatccgattcggtgggagagccgttgttttcaaatcgcacactttgtgacataatgtac +aagataacaaaactgatataagatataaactgtcaatatcaccttgacacttgaatcaaa +gtaaattaactcgcaaatataatttgactaattgggtgcagatttctcaattaataaaaa +aatggcaccggatgggcttacaagccccttatcattcacttgtatcatgatttccaagaa +caatagaatttgctagcaagtatgaacagagattcgaattgcatccacagtacgccggag +cgtttattttaatgtggatatgacgatgtactgttggcggcatttgctagtaaccggtcc +ttatttacgtagcgcacacgtaagcatgtctgggagaaatatggtggtacaatctcagag +aaagattacagtttggtttaaataggacttatcgggtcggaagtggaacttaataagcag +tacacaattgggcaacagacgtcttgcctattacaataggattacaatgcgttagatttc +agacacgttcgtgtttggctattcgtcaattccctaaatagttagacgatcaactattat +caaagtgattctttgttcatcctccattcatgtaacagatggcacactacgcataacgcc +gaggaattttaacgagatttaagagagcagttcgggcacaacccacttgactttataaca +gctcggcagcataaacggtaatatgtgacaaatttccaaacgttataagaacgtatgtgt +acttagaaaactaagtggttcatgttcaacagatgtgacgcagcaagcctaacttatcta +ttggttttgctataaaagaacaaagttacacagaatcctaagggcttgtttcacacttat +gcctagtgcttcaccatcttaaaatagcgaaaccggcacgaatcaaaccttaaaacaatg +cgcagatattggtgatggtgactccgggtatgataatggtaactgttgaccagcgcccac +ctcatcgaagtatagaaagtggttaggataaggatgagaccgaacttatttccggccata +actttagattttctacctagtacacaacatcagggcggacacgaaaccgccatcacatca +tataccaggtttaatttgcttaatgggggaagtgtcaacgaaccttcgaactttagcagg +catatggccattatatatggccccagagcagaatgctacagcagacaaaatttggattta +tgtagtttaatacctatcaaacttggtgtgaccatacttgtctaacgacagtgcacaaag +tgtaagttacaattattactactcagcagcttctgcaatgataaaatcttatcatacacg +tcacatatgataatatctacttagggggaacgggctccacaacctacatagtactcaata +cttacactattcgacaggcacaccaaacctgtacagtcccaaaagattgagtcaactttg +cagtactgcagatcacagtaatagcttagttagcgagtcaaaattagttttctacgagac +tgcacgaccgtgcaaatttccgatgtgttggctacaaatagcaacgtatgaatttgtttg +aagccacgtaaactgtacaaccttagagataagtctcaggctactaaaaacacgttgtgg +cactaacaggatcatggttgattcttacttattcggctgaccggcccaataagtaacctt +caactagaacagaataatcgggagtagtttaattcagtcaaggtgcaggtctcattgtaa +ctaacaagctctgtgtaaccaagttaaaatcgttttcttagcggattccctacttatgga +tttgagctcgtccacaatattcgatacaagaagtttgtggtccgtaacaacgaaatttta +attacgctgtgcagcctcatccaaggaattaatagaaggttgatggtaggctccgaacgc +tccatgattataatcaagtggactgtgcagtaaacgaggaaggtatcctgacgtcgtggt +gttcgtttttgttatttgtgccctatacgagtagataaaccatgaacagcacagtgtgaa +cccatggttgattttaggctaccttatttttaatttccgttacacagaaacgaattccac +aactaacatgccattaatttttcgatatcttataaaagatggtcgaaattcattcattta +ttttttttcggttctcgaaagtcaactaagctgtcgcgttttgtttctctttagaggtaa +aagtggctttgatctcctacgtttggatactagtcaaccattactccatttgatccgtga +gtatcacctgtctaacatccagcattatgactcctcggcgaagaaaagacacacttctta +gagtcgatgtgtattagctagggacacagttgtttaatacgatagtgagcccagggaggg +cagtgcgtcccccagtagatttattcagctagtgtaagtataagatatctcacccacgag +gttcaagtgatatgcagtcttagaataatacttatcctgaatttcgatattatgggtact +tcaataatccgctagcgctactttatgtctcgttggacagcaggacacatggcagtctta +aacactaaagacatcacctgaatgaatgtaatgggattacaagaatcaatgaggtattat +atacgacgtaggaaactctggatatatacagtaatctagttacgccatcgcacttcattc +ctctggaaacttagaagacatcagctgtacgtggaggaaccagacccccgtatgtagcca +aatagaaccaaagttgcttatacaaacacacccaatgacaatggaccgctggagttcgta +aactcggaacgtagtactgcacaaacccagcatttagcaataggagctacgtatgcaact +cccacgtggtaataccttcaagctatcaatatataggtgcctagctaatcgcattcgcaa +gcagtattcaagcttgtaaaccagtataataattacagaggctctatgaaacccaacttt +ccagctaaaagtcccaattaaatggttatttcgtacttttaaagtcgcccgttctgttat +tacgcgaattgattctactccaaaattaaacacaaattatcaaccgtttcatttatattt +gtcaatgcagctgtttaaaataaggctctactaaattataattaagacacttattaccag +atttctctagttaagtttgaaccagctcgactaccgcgaaagatacattcccttctctat +ttttcagttcatctatgggtcagagaagcattgaatttattctattcaccctcgtcgttc +acagcgaatcgtcagtgtgatcagtgtatgagaaatatcctaaaccgtttagtcagacca +cacgcttagaacaagtggtctaaaaagactgccctggaaggagtaagaagtatacagctg +atccggtgtatccttcagtcatctgccctatactaattacacgacgcaaggaaaaatagg +tttattttctaggcaaacccttcataggtgactccgatgtgttacgaatcatgcttgaga +atgtgctatcgttaccgacggataataacgatctccaatgaaccaaatgtagaatgtcta +ttgattacccttttactattcgacttagagataggagatagaacctcagtgtactttttt +agccgaatgggaatctttgggaggtgaatggccataaggtcgtaaatccaaccctcttaa +agtcttccatattatatcgttgttcgtggaatcgataacagatttgttgacccatagtaa +atgtatactagtttatgttgtaagtgtagattgttttccgattgccgtccaaactttatg +tcgtaattgtagaccagtaaagttgaccaaggtaagtgcccagcgatcctgcgagatcga +tcgccaatttttccagtcactgtaagtgtaggtttagataaagccgtatgagttatatca +taagggcctcggaaagcagcttcgaaccaaagttcccttataatagtagtttaactataa +aagtatatactggtctgtcgccctttcacgatttgttttaccggtttatgaagcgttacg +tcattagagcggctccaatttaaggttaacggcttccatgtgtagttgtatacaaggata +acttaaagtatctgttcagcgagctagttaagttatcctcgatagaacacaactcagagg +tcccaagatcgggtttgcaacttgctaatttattctcaaggcaaattgggaattatcgat +acctgtataccataaggtcgctcgatgtgatgcttatgtcttctggtgatcctaccttag +ttagtgctgattaacggaacattaatgtttatcgttttgagatttagccaattctctgat +tctaactcaagatgccttatctgacgtgctatgcagcccctaagtattttacattgtaat +aggacacgctcctttaaaactcgccaaaaggtcgttgtggttctctactggttaactata +taatttacagctttgttgagctagttcctctttggtttaagtcctcaatattagttggtt +cgagcgataagttggctagttaccttagtcactatattagatccgaatgttatgcttcat +ctgaagaccgccaccctccaaaatttcttttaagactcacttattgcaaggtgtaggtga +attcggctcgtttctcaagtggtgtatctgtacacgagtttccatattttcatcaacagc +caccgcacacttatgtcactctaggtattaaaagtcgctctacaaggggacgcaattaag +aaacagacatgctagtcaaaaataaacatagcgaggcaccactaattcggccgcttatca +atgggatgctctgcgcgagacgcgccagagctcagtagttagttcggacatacatttact +tcagatgatcaattagttttctacaaatgcttactctaccccgaaaaaagtcaccagact +cttacgtctctttagtatccttccgtcttatataaggtcagtcccccgtttcggtaccct +ggaatttactaagaataatgaaacagcccccaaggacgtacgtttacaaatgatagacca +gatcgcctagcttattccgacgcatgttgcatagaattgaaccaacggaatgtgagagta +actagatgagccgaccacagcacccgtttgcgtcgcagaatacgcctgatagttcggcca +cgaaatcatatgtcctttgagtattaagtatttgtaatgatcaatcgagctcaagcaagc +ttacacttcctcggatattcagggaacttagtgcctttgaaagatacgttgatcaacgaa +aaattgataatggctcatatggaatgcctacctcatagtgctgaattaacacagcactgc +ggacctaacttttcgaggtttcaagttcacgtctcaaaacctaataggctggaatatgta +gggatcctcggtgaatttgtgattgggtttgttgtagtactgaccaagtgaatattcttt +ttttctaaaagcagatctgctgccgggcactacgaaggagatctctgtgtatcattattg +cttcttgacatgatgactcttaaatcactgtgggtgtgcaaaacgatagcacaacccaat +tcgatagtacatattgttgatacttcgcactaaaccgttcatatttaaaggttgtgctcc +ttccttcgttaaatactggtgacttggtcctatctactattagctagacctctggggaac +cacgcccccgtaaaacctgtgcaagagagggggtcatacatcttagacatcgcgcctcca +ccagggaagcattgggtgattgaccaggtgtgtaacaaatatgattattcttatactaat +attagcaaagatgcataatgatttgtattaaatgtataattgaattgataagggtctttt +agtcagtgatagagtagtataaggtagacattagaactcttaaccggacgcagatttttc +ggtcttagtaagccaattagtcgacaaaacaaggtaagagcggttactagtagtacctat +aatgcactgaatcttcggtcgaagtatagttctaatgctatgcagattgtgacggcgaca +aatgttcagacttatatcatgaaacaagctcttgtaagtattgacaaatgaaaagattga +atatttttaaatacaaaatgcgcctacttattaggggaattaaccagattgaaggccaat +cctcacatgtaatgagataatagacgataaatgaaattcttgtaatagttgaactgctac +gtgatgggtattatatatgattgagatcctccaattgccgacgtcttgtcttgatgccca +aaagattgtcaacgaggagctccctcgcgtacctgtcgtccgtatcataaacgacgcgac +atgtacagcactccgaagtataagcaataataatgcgggtaatccagactagatcttttc +ggactcaatgcggtttcacggtaaacatgattaataccggagagtagtcgagcttatcag +cgatgcaagcgaattcattgtgccaggagatacgttgcagataaaaccggcaacgtatgt +caacaagttttggcgatctcgttgtttgtattcgacgaggcgcgggaacttcaagaacta +tcgtatattcaagtccattaccttttagtttcagactggtggagctgactaaagttatat +catcattttgtacactggtttagttaacgataatttcagatttaacatgaccagacgata +atcgctgtatatccagttggaatgtggtttgccagaaaggttaacttataatcaagcctc +tcttcagtcttgattcgtcgtatcccatccattgcgctatacctcagtgtatttggagct +gtagttataccgtgtgctaagatcagtagacatgacgagagcaatattatctaccttaca +agcatcaacggacgtctagtcggaacaaaagactctaaaactcgaacttcaggttaatat +actatagttctgtattcagcagttattcttatattcgatattatcttgcctattggatgt +ctgactttagtatattaatcatagtatctgccatgtaaaggtgccagtactaaatctgtt +tcacagtgcgaattataaacggttacaaccattaaagacaacaagaccctatagctttat +ttgaattttgtcaatgcgcaacttggagctcgcgatacatcccaattagtctatagggtc +gggacgattctacggcatttctggttataatgacaacatggattgtggcccgagaatcgc +tctttcattaattaagcaatcattacagtcttataagcgctacttccgagtggtagcagg +taactcgatataaggtcgcatgagccgaatagcttaaaaaacaggccaccgaacattgat +agagaataccgaccacagcgcaacctttgattactttcattaaattgtacggctcactcg +acatcaagcttaagattgcgataatgtgaactcaaatggatcagtactgaagaaccgtaa +cccacttcgcagaaagcgtacccagagaagatacgctgttacaatatacagggtgaaatt +attgcctgttcttcgtaaccatttcgccaaacttggttagaaatgatagccattcatgat +agaaataagctgaatgataccagtatctttaactatgtagtcagggggaagataacgatg +gtccatgtatgtttctgatatgtgacagtattggccgcgtaatttgctaacgaagctact +taatgcctttgagcttcatatagatttctttaatcaaaatcggcaaaaagatagtatgag +ctataatatatgctagtagagaactctggaccatcatctatatgaatactgattcgagcg +tgcaattactttagcctgcgtactactgactctacaaaacactctgagataagtttgtag +tcagtaagtcgctctctataaaccttttggatgaccattgtacagccacttatagatccc +aataaatagcacaggagacagagtttttcaatgctcgatcatttgccgatagtattttcg +tctaacctcagggcacctattatttgatacctaacctaacggccctttcacaatggagaa +atatatgacatcgggacaaacacaaatggtgggtggccaggagatatgacatggtggcgt +ctctaagaaacacggactccctctaggcaaactcacgtaaccaattttaatgtcaaacaa +aacgctcgaaaagattttgccgtgtaatgacctggtacattgactggtcaggaatacatc +actgtagttgccgtagtgtcctgttggtgttccatcaagacacatcgtataacgcaattt +acgacggacatcagatcaagttatacagattatttaagtatcacgtgtgcattgggacat +aagggatctcacacatgccttggaacatttttgctttgtgccgctttttcgctgcactac +caatccttacttaccagtatattcaaaggtcgttaacagaatgagaaaggttagggctct +aagttatcgtcgattgggatagacgagacatttgcgagcgccctccacggatacgaatct +cccatatcaatgtgaactggatgctatgcagtttagttcttacgtctcctagtggtaaaa +atcaaagtagcactcgcatagcagttattcagaacctaatacacaaaaccgtcaaacatt +ttctaattctaggtatgggccgatcataggagctaaggtgaaactcataaatgttttgtt +agatctagcatcctaaaaagatgcatatactgagtagctggcgtgcattctctcaattgt +atcctttttaactgaactagtcggtcccatttcgtgactgagatctattaaccgataaga +ttaataacactcgcattcgtatcagctcagagtgaagtttttcaataatttgactgatat +attaacttctaaaataaccctttaagcctcggatccgtttcccaatcacatcaaaaattc +ttattccaactatctacggattaacaacgtgcatggggatcgtagtaagaacttgttccg +atcactttgagtatatcaagttgacggcccggttattattgaatagaaacattcacctgc +taaattaaataccgcacatcggatacccgatttcagagggccgtcttactaagggcaggc +tttgttcggtttaactgagatgttcattattttacagtatgcttcaactaatatgtaacg +aaggacagtggatctgtctccatagtagatcttcagtcgtgaatttcataccgctcctat +ttaagttcgcgttcgagttgttgatcatggcacgtgaaagcaacccctagtattctagac +gaaaattttttctagttcatctgataatttgccaattcaaaaacaaccgctggtttcccg +gcgcattctctaaaatggaagtcgaacctagagccattatttgtcggtaacccatgagtt +ccttcttttcagaagttaatacactgtggtcctatacagaggaaaaacagcggttatata +cgatcgtggcataacaacattggatcaagatagcaatttggctacctattctaattctca +ctagattcggtattccactacaatatcggcagattaggattggatgaataatcggtgttt +aagtccggttgcgtctccaatctcctaatttttattaatattgatcttggtgacctattg +taaataaaaacttcaagactttgaataacggtgaaaagatagaagactcatttgaaaatg +gatcatccacagatccaaacattagcaagacactaatccccaactagctattctgatcgc +gatcgtgctgcagtactcctgtcacaatagtctgttcatgatctaattctttttgggctt +tgttcgatggtgattcagaatctttatccggtcgcttccctgtagctactttgtggggat +attgcccggggattatagggttgagatcgtttcctaaaagtatttaaaccaagtagactt +caactaaactacatcagaacatcgtgaagacaccatacgcggtacctttatttaccgata +acatttcttcaagaaataccggtaagcagcataatgaccctaaacagctcggggtatcgt +cgtagttttaaattttatttaggttactgctcaaggaataaaaactaactatttaattta +taataatattacaaggctcacactgattagatttgtctataagacttcgcgatcccccat +taccggattgtcttaagaataaactagataaaccatgcattttctagataaggcctttag +tctaattagatacaaaaaacacgatagttgcatccttaatttattgtgtcaaacctggaa +ccttttaattacccgcaaatcactttatgtcgagactacctctgaaatttattatctacc +taccgcatgaggacttgaaccatcttgtaggagttatgtttattagctaagattcgttta +tcctgtagcggtccatgtatattcaacaagcaaaaagcactcagaattgtttttagttga +gtcaagactgatatataaataagtttccctagttttttcgtggtgggacgatattgaatt +gaatcttaaccgaagagtttcccactctgtcgcacaataatacacgccaatatttccagc +cctgcttatgccttaatcggttactcaatctcccattgaagttcattttgatctgcatag +aagtttcgggcccagccttttttctgccaccttcctccaagctctgtagacgcactctaa +gattgatgctcacatgtattaattctacattaacataaatatataagtcatgcatcttcg +agtaaaatatctggttctccaacatgtcctggcacgtatcgttataatgcccatacatgt +agtattaaaatgattgggttaactggatattaagatcatcgaaattgtaaagtcaaatta +acaatactgtctcaagaccgtgtattcctcgtgctcggaagggctattacgcttacttcc +gttttggtatcttaatatgactttcaaaaattaagttgcagtgagtcctacctgcgtgca +tcggttagcaagagtataaaagttgtttaaacgaactacttgctttacaataccggtcgt +atatatcgccgtgaatccagaagattgtcttctttggattatcaaccgagatcctgtgga +ccgatgttttgggaccttcacagaggactccaggtagagctcgcttttgcattaatctaa +gaattgtacctctctaaaagatctaaaacagtgaatgtgtatttcatggaaaaacacaga +gaaacgtaaattactttaggccgaaaggcacatgagttattatacatatacgagatggtg +gtatacatcgaattcggggcatacactatagttgcattgtatttagctgctttaaataat +atgatattaccttccttacataagacattaccggcataccctggttttcaacttgtgggg +ctttttgacgatcgcactctcatttgatccgagtagggcggtgacccctgcttttcaaat +acaaaaatttcgctatgaaggtaatagattacttttcgctgttatgatagaaacggtaaa +tttaaaattgaaacttctagaaaagtaaagtaacgagaaatgattttgtgaataatgcgg +tcatgattgcgcaagtaagaaaaaaaggcaaaaggatgcgcggaatagaaacttatcagt +cacgggtatcttgatttcattcttcttgtcaattgccgacataggatgaaatcagattcc +aatgcaatacacagtaacccccacccttgattgtaatgtcgatttgaagttgtacgcgtc +gacgaagtggatagtatacgggccttttgtacggtgcgatcaactatgaatctcggcgag +ttagatggtcgtacaatctcacacatagaggtcacttgcctgtaatgacgaattttcggc +taggtactcgaactttattagaagtaaaaatgtgggcaaaagaaggattccattttacaa +gacgattacaatgagttacatgtctctcaacgtagtctttccctagtagtctttgaacta +tttaggtactccagaaaattttagcaaagggtttctgtgtgaatccgccattcatgttta +tgatggaacaataagaataacgccctcgtatgttatcgacagtgaagtcagcagttcggc +caaaaacatattcaatttagtacagatccccagaagttaagctaagtgctctaaaatggc +ctaaacggttatcaaagtaggtctaattactatactaacgggtgcatcgtaataactgct +gtcgatgcaacactatatgatagtgtcgttttgctatatatgtacaatgtgacaaagaag +ccttagcgattcttgcaaacttaggacttcggattctcaatcttaaatgtccgaaaacgc +aaagattcaaaaatttaatctatgagcagatatgcctgatggtgactacgcgtatgttaa +ggctaaatgttgacaaccgcacacataatcgaactattgatagtcgggagcataaccagg +tgaacgtactttgttcacgacatttattgacatgttctaaatacgtctcaaaatcacggc +gcactagaaaacgcaatcaaatcattgtcctggtttaagggccgtaatgccggtagtgtc +aaacttcatgagaactttagctggcttttggccagtatttagggaccaagagcactagcc +ttaagctgaatattttgccatttatctactgttataactttaaaacttggtggcaccaga +cttgtcgatacacacgcatcaatctgtaacgtaaaaggtttactaagaacaagcgtagga +attgagtttatattatatttaaactaaaagatgatattagcttctgagggcgatagggct +ccaaatcataaagaggaatatattattacacgattagaaacccacaacatacctcgaatc +gcccaaaagtttgacgaaacttggcagtactccacatctcagtaatacagttgggagagt +ctcaaatgttgttttattactcaatgaaccaccctcataatttcactgctgttccattaa +atttgcaaacgatcatttgctttgaagaaacgtaaaatcgacaaaattacagataagtag +atgcataataaaaaaaactgctcgctataacacgatcatcgtgcattcttacttaggagc +atcacccgcacaataacgtaccttaaactacaacactattagaccgagtactgtaattca +cgaaagctcaagctcgcattgtaaagaacttgctctctcgtaaaatgtgataatagtttg +cggagaggattcaattattttccattgcacctactccactagattcgataaaagaaggtg +gtcctcccttaaaaagaaatgttaagtaacatcggaaccataagcaaagcatgtaagtga +accgtcatccttccctaagaaacataaaggtttttaataatgtcgactgtgaactataac +tgcatcctttcctgacctactccggttccttgttgttatttctgaacgagaccagtagat +aaacaatgtaaaccacagtgggtaccaatggtgcatgtgacgctaccgttgttttaagtg +cccgtacaaacataagaagtcataatcttacttgaaattaattttgccttttattttttt +tcaggctcgaaattaatgatttgttttttttgaccttctagttacgctaatatgcggtcg +cctgtggtttctattgagtcctataacgggatgggatctaatacgtttggttactagtaa +acaaggtataaatttgataccggagtatcaactgtataacatcaagctttatgactcata +cgcgaagtaatgacacaaggctttcaggagatcgcgagtacagagccactaaggggtgta +ttacgatagtgacaccaccgagcgcactcactccccaagtagatttatgatcctacgcta +agtattagatatataaccaaagaggttctagtcagtgcaactcttagaataataattagc +cggttttgcctttttaggcctaatgcaatattcagctagcccttatgtatctcgcgttcc +acagcaccactcatggcacgcgtttaaactaatcaaatataatctatgaatgttatgcca +gtacttgaataaatcaggttttttataagtccttgcatactctcgttatatactgttaga +gtcttaccccatagaaattctttcatctgcaaacttagaagaattctcagctacggggag +cataaagtccccaggatgttgacaaatacaacaaatgtggcttatacaaacactccatat +gaaaatcgaaccctcgtggtagttttagccgaaccttgtacggataaatccctccatttt +ccaatagcagatacctatcctactacctcgtggtattaaattaaagcttgaaatatagag +ctgcatagcttatccaattcccaagcacgagtctaccgtcgtaaccacgatttgatttac +agacgctagagcaaacccatctttaaacatataagtaaaaattaaagggtgagtgcgtac +gtgtttactagcaacttcgcttattaagacaattgtttataagccataattaaaaacata +tgttcaacaggttcattgatatttgtaattgcacaggtttttaataaggatctacgtaag +tataatgaacaaactttttaccagagttatattctgtactttgaaaatgctcctctaccg +ccttagagactttcaattagattttttgcagttaatctatgcgtaagtgaaccatgcaag +ggatgcgattcaaccgcctcgtgctaaccctatcgtctgtctcataactgtaggtctaat +ataattttcagttttcgaacacataaccctttgaaaatctgctatttaatgtctcacctg +catgcactatcttctatactgctcagaacggctatacgtcactatgctccaagtgacgat +ttaaacgaagcaaggaataataggtttattttagtgcaaaacaattaagtgcggactacg +tgctctttacaataagccttgtgattgggctataggttaagtcccatattaacgatctcc +aatgtacaaaatcgacaatcgctttgcattacccggttactagtcgaattacagatagct +gttagatactcactctaattttggacaacaatcccaatcttggggtcgtctatcgcctga +agctcgtaaatccttccatcttaaacgattacatattatagacttgttcggggtagagat +atcacagttgtgcaaacattgtaaatcgatactagtttatgttggtagtctagttgcttt +taccattccccgaaaaacttgatctactatttcgacaacagtaaacttgaactaggtaag +tgaaaacagagaatgcctcatagtgccactatttgtccactatatgtaagtgtagcttta +cataatccactatgactgagatcattacggcctaggaaagcagcgtagaaaaaaagggcc +cggatattacgactgtaactataaaactagttactggtagcgcgccatgtatagatttgt +tttaccggttgtggttgcgttaacgaatttcagccgcgaaaattgatccgttaaccagtc +catctcgacttctataaaacgataaagtaaagttgatgttcagcctccttcttatggttg +catcgagagtacactactcagtgggaaatagatcggggttcctacttcagattgtattat +ctaggcaattgccgattgtgccatacctggataaaataagctacctacatgtgatgctta +tctattatcgtcatactaccttagggtgtcctgttgaacgctacattaatctttagccgt +ttgagatgttccaatggataggagtctaacgcatgatgaagtttaggaaggcagagcatc +ccactaagtatgtgacagtgtatttcgaaacgagacgttataaatagaaaaaaggtcctt +ctggttctattctgctgaactattgaatggaaagattggttgacctacgtactatttgct +tgaagtcatcaatttgacggggtgagagacatatggtgcatactttacggactctatatt +ttagatcagaagcttagcagtcttctctacaccccctcacgacataattgcttttaagaa +tctatgtttgattcctctacgggaattcggatccgttcgcatgtgcggtttatctaaacc +aggggacatatgttcagctaaagcatacgaacactttgctaactagacgtatgtatagta +gctataaatcccgacgatatttacaaaaagaaatgagactcaaatatatacatagcgacc +ctacacttattcgcaccctgatctaggcgatcctagcacccacacccgaaagtgagcact +agtgtcttccgtattaaatttactgcagttgagattttagttgtctactaaggattactc +taacccgtaataaggatcaagactcggtactagctttactatcattccctatgtgttttc +ctaactcacaagggtacgtaccagcctatgtaattacaataatgataaagacacaaagga +agtaactttacaaatgagtctccagttacactagcttagtccctcccatcttgctttgaa +gtctaaatacgcaatctctgaggatatacagcagaagaacactcataacgttggagtcca +agaattagactcatagggcccccaacatttaatatgtactgtgagtttgaaggtgttcta +ttgttaattcctgctcttgatacatgacacgtactccgtgtttaaggcttcggactgact +ttctttcataagttgagcaacgaaaatttcagaatcgataagttggattcactaactaat +acggctgattgaaaactccactccggacctatatggtcgacctttatacgtaaccgatat +aaaacttataggctggtatatcgagccttcctagcgcaatttcggatggggtttcttcta +ctactcaacaacggaatagtctttgtttagtaaaccagagctcaggacgcccaatacgta +ggagagcgctgtggagcatgtgtcattatggactggagcactcttaaatcactctgcgtg +tgctaaacgatagatcataacatgtcctgagtaaattttcttgatacgtcgcaatatacc +gttattagttaaacgttctcatccgtcatgcgtgaaatacggctgtcgtgctcagatata +ctattagcgactcatctcgcctaacacgcacacgtataaactcggaatgactgccgctct +tacatattagaaatacagactacaccacggaagcattgggtcattctcaaccgctgtata +aaagatgattagtcttataataagattaccaaagaggcagaatcatgggtagtaaatcta +ttattcaagtgattaccgtcgtgtaggcagggagtgaggacgagatggtactcaggacaa +atattaaccggacgaagtggtttacgtcgtactttcactattagtagtaaatacaaggta +acaccggggaatagtactaaatataatgatatctatcttcgggagaacgagtcgtctatt +gctttgaacattctcaaggcgtaaaatgtgctgacttatagcatgatacaaccgattgtt +acttttgtctattcaaaagattgaatagttttttatacaaaagccgcatacttatgacgg +ctagtatacagtttcatcccctagcatcaatgctatggacagtattgaacttataggaaa +ttcttctaatagggcaaatccgtcgtgatgcctattttttttcagtcacatcctcaaatg +gcactagtattgtcgggatcccattaacaggctcaaccacgagctcacgcgaggacatgt +agtccgtatctttaacgaagcgacagcgacagaactcccatggataaccaattataaggc +ccgtaatcctctagacatcgtttaccaataaatccgctttctccgtaatcatgttgaata +ccccagagtagtccagatgataaccgatgaaacacaagtctttctcaatgcacttacggt +gaacttattaccgccaacgtagctcatcaaggttgcgacatctagttgtgtgtttgcgac +gagcccagcgaacttcatcaactttcgtatattcaacgccttgtaattttactttaagac +gcctggtgatgtagattcttagataatcagtttgttatcggctgtactttaccataattt +cacaggtttcaggtcaagaagattatagctgtatatacagttccatgctcggtgcacaga +aacgtgatcggataataatcaatcgcttatgtcgtctttaggcgtatccaatacatgccc +cgataccgcagtgtatttcgacatgtaggtataccgtcgcatttgagctcgagtcaggac +gtcagctagattagattccttaatagaatataccgacctctagtccgaactaaactatag +ataacgccaacttcaggttaattgtctagtcgtctgtttgcagatgggattcttagatga +gtgagtatcggccatattggttcgagcactttagtttttgatgcataggatatgcaatgt +atagctgaaagtactttatctgtttcaaactcacattgattaaaccggtaaacctttaaa +gactacaagaaaatattcagtgagggcaattttgtcaatcacaatcttccagctagagat +acttcacaatttgtcttgaggctacgcaacattagacggattttcgcgttttattgaaat +aatcgaggggcccaagagtatccatagttcattttgtaagatttctttacaggcttatta +cagcttcttcagactcctacatgcttacgagttatatgctagcatgtgaacaatagatta +atatacaggaaaacgtacattgagagagatgaccctacacagcgcaaccgttgagtactt +tcattaaagggtaacgctctcgagacagcatccttaagatggccttattgtcaaatcatt +tgcagaagtacgcaagatccctaaccaacgtagaagaatccctacaaacacatgagacgc +ggtgaaaatagacagggtgttagtattcaatcttcggagtatcaatttcgccaatcttgg +tgagaaagcataccctttcttcagagaaagaagatcaatcataacactatctttaacgag +gtacgcacgcgcatcattacctgcctccatggatctttaggatagcggaaagtattggca +gcgtattgtgatttcgttcctactttatcaatttcacattcatatacatgtcttttatca +aaatcgccaataagataggatgagctatattagatgctagtagagttcgcgccaacatca +tcgataggaatactcaggacagcgtgataggacttttcaatccctaatactctctataat +tataactctctcttaagtttggaggcagtaacgcgctctatataatcagtttgctgcacc +attcttcagcctctgatacatacaaataaattccacagcagtaagagggtttaattgaga +catcttgggaacttaggattttactctaacatcaccgaaacgattattggataccgtacc +taaacgaactttctcaaggcagtaatataggacatccgcaataacacaaatgctgcctcc +ccaggagttatgtcttcctggaggctatatcttacacccactcactataggcaaactaaa +gtttaaatgttgattgtctaaaaaaaagatagataagagttggccggcgtagcacatgcg +aaagtgaatcgtaagctataattctctggacttgaagttctgtcctgttcctctgcaaga +aacaaacttcctttaaagctatttacgacgcacatctcagcaagttataaacatgttgga +agtttctagtcggaattcccaaagaacggatctatctaatgcattcctacatttttcctg +tctgccgatggtgccatcctattcaaagaatttcttaaaagtagattaaatgggactttt +aacaatgagtaaccttacgcctctaagggttcctcgagtgccatacaccagtcaggtccg +agccacatacacggagaacattctaacatagcattctcaactcgatcatttgcaggttac +ttctttcctatcctagtgctaaaaatcatacttgcaatcccatagcacggattaagaacc +taagaaacaattcagtaaaacatgttcgaattcttggtatgggaacatcattgcagctat +ggtctaacgcattaatgtttgggtacatcttccatcatataaacaggaagagtctgacga +cagggagtgcttgcgatcatgtctatcattgtgaaatcaaattgtagctcacatgtcgtc +tatgagagcgtgtatccgataagatttagaaaaatagaagtcgtataagatctcactgaa +cttttgaatgaatgtgaagcatatatgatctgctttaataaaactttatccataggatac +gtttccaaatcaattcaataattattagtcaaaatagataaggatgaacaacctgaaggc +cgatcggacgtagaaagtggtcccatcactttgagttgatattgttgaaccacacgttat +tatggttttcaaacagtctcaggatattgtatatacagataatccgataccagttgtctg +acgcccctcttacgtaccccaccctttgtgacgtttaaagcagttgttcagtattttaaa +ctaggcggcaactaatttggaaagaagcacagtggatatgtctaaattcttgttattcag +gcctgaatttaatacaccgcatagttaacttcgcggtagagttgttcatcatgcctcctc +taagctaccacttctatgatacaccaatagttgttctacggaatctgataattggccaag +tcataaacttccgctgcgttcaacccccttgctcgaatatccaactcgaaaagacagcct +tttggtgtccggaacaaatcagttacttcttttctgatgttaattctctgtggtcagata +cagaccaaaaactccgcggatttaccatcctccaagaacaaatttgcatcaacatagcat +tttggctacatattctaagtctcaatagtttaggttttcaactacattatcccaacatta +ggattggaggaataatagctgggtaagtccccttgcgtctacaatcgactattttttatg +aatatgcttctgccgcacctatggttattaaaaaagtcatgactttgaagaaccctgaaa +agatagatgaatcaggtgtaatggcagcagccaaagagcatataattagcaacactctaa +gaacattatagatatgatgatagcgatcgtcatgatgttatccggtcacaatagtagctt +catcagctaattcgttttgccagtggtgacttgcgctggaagaatcgttatacggtccct +tccctcttgatacggtgggggcttattcaaccgcgtggattgggttgtcatacttgcatt +aaacgatgtaaaccatctagtagtcaactatactaaatcacaaaatagtgatcaatacat +acccgcttcatggttttaaccatttaattgattaaagatattccgctaagaaccattatc +tacctaaactgatcgccgtatcctagtagtttgaaatttgatgtaccgtaatgatcaacg +aagtaaaacgttatattgtatgtagaataataggtcttggagctaaatgatgtgattggt +agtgaagacttacccttacaactttaccggtttctcggaagaatatactagagaatcaat +gcatgggctacataagcactttagtctaatgagataaaaaatacacgagtcttccatcat +gaattttttgtcgaaaaactcgaacctggtaatttaaaccatatatctttatgtcgtcaa +taactctcatatgttttatataacttcccaatcacgacttgtaactgcttgttcgactga +gctgtttgagctatgaggccgggatccggttgagctacatctatttgctacaagaaaaat +gaaagcacatttgttgggagttctggctacactcatagagaaataagtggcccgagtggg +tgcggcctgcctccatattcaagtgtatcttaaaccaagtggttccaacgctcgcgctaa +agaattaaagcctttatttcctccacggagtagcccgtaatccggttcgaaagagaccat +tgaagttaattttcatatccagtgaagtttaggcacaagcatgtgttctgccacatgcct +caaagcgctcttcaaccaagatatgattcatcctaacttcgatgaatgcgtctgtaacat +aaatatagaaggaatgattcggcgagttaattttcgccttctccaacatggcatccctac +gttcgttataaggaccatacatgtaggttttaaaggtttgcggttaatcgatatttacat +catagaaattctatagtcaaatttacaagactctagatactcactcgttgcagccggcta +ggaagcgctttgtaccttacttcccttttcgttgcgtaatatgaatttcatatagtaagt +tcaaggcactcatacctccgtgaagagggtagatagactattaaagttgtttaatagtac +gtattgatggaaatgacccgtaggagatttaccactcaatccacaagattcgctgctgtg +cattatcaaaacagtgcatgtcgaaacatgggttgggtccttcaaacacgaatccaggta +gagatacctttgcaattttt diff --git a/extra/benchmark/knucleotide/knucleotide.factor b/extra/benchmark/knucleotide/knucleotide.factor new file mode 100644 index 0000000000..327439015d --- /dev/null +++ b/extra/benchmark/knucleotide/knucleotide.factor @@ -0,0 +1,74 @@ +USING: kernel io io.files splitting strings + hashtables sequences assocs math namespaces prettyprint + math.parser combinators arrays sorting ; + +IN: benchmark.knucleotide + + +: float>string ( float places -- string ) + swap >float number>string + "." split1 rot + over length over < + [ CHAR: 0 pad-right ] + [ head ] if "." swap 3append +; + +: discard-lines ( -- ) + readln + [ ">THREE" head? [ discard-lines ] unless ] when* +; + +: read-input ( -- input ) + discard-lines + ">" read-until drop + CHAR: \n swap remove >upper +; + +: tally ( x exemplar -- b ) + clone tuck + [ + [ [ 1+ ] [ 1 ] if* ] change-at + ] curry each +; + +: small-groups ( x n -- b ) + swap + [ length swap - 1+ ] 2keep + [ >r over + r> subseq ] 2curry map +; + +: handle-table ( inputs n -- ) + small-groups + [ length ] keep + H{ } tally >alist + sort-values reverse + [ + dup first write bl + second 100 * over / 3 float>string print + ] each + drop +; + +: handle-n ( inputs x -- ) + tuck length + small-groups H{ } tally + at [ 0 ] unless* + number>string 8 CHAR: \s pad-right write +; + +: process-input ( input -- ) + dup 1 handle-table nl + dup 2 handle-table nl + { "GGT" "GGTA" "GGTATT" "GGTATTTTAATT" "GGTATTTTAATTTATAGT" } + [ [ dupd handle-n ] keep print ] each + drop +; + +: knucleotide ( -- ) + "extra/benchmark/knucleotide/knucleotide-input.txt" resource-path + + [ read-input ] with-stream + process-input +; + +MAIN: knucleotide From 90ca90c9a7a1156fab3c5f230c985994bd73eacc Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Sat, 24 Nov 2007 17:24:54 -0800 Subject: [PATCH 073/285] Fix editors.gvim: vim-switches no longer defined --- extra/editors/gvim/gvim.factor | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/extra/editors/gvim/gvim.factor b/extra/editors/gvim/gvim.factor index d26bd70209..024f5cfffa 100644 --- a/extra/editors/gvim/gvim.factor +++ b/extra/editors/gvim/gvim.factor @@ -4,11 +4,7 @@ IN: editors.gvim TUPLE: gvim ; M: gvim vim-command ( file line -- string ) - [ - "\"" % vim-path get % "\"" % - vim-switches get [ % ] when* - "+" % # " \"" % % "\"" % - ] "" make ; + [ "\"" % vim-path get % "\" \"" % swap % "\" +" % # ] "" make ; T{ gvim } vim-editor set-global "gvim" vim-path set-global From ce0bbc78fa02985927eddc8d8d2b2132361d189e Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Sat, 24 Nov 2007 17:31:44 -0800 Subject: [PATCH 074/285] Add summary and authors to benchmark.knucleotide --- extra/benchmark/knucleotide/authors.txt | 1 + extra/benchmark/knucleotide/knucleotide.factor | 1 - extra/benchmark/knucleotide/summary.txt | 2 ++ 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 extra/benchmark/knucleotide/authors.txt create mode 100644 extra/benchmark/knucleotide/summary.txt diff --git a/extra/benchmark/knucleotide/authors.txt b/extra/benchmark/knucleotide/authors.txt new file mode 100644 index 0000000000..16e1588016 --- /dev/null +++ b/extra/benchmark/knucleotide/authors.txt @@ -0,0 +1 @@ +Eric Mertens diff --git a/extra/benchmark/knucleotide/knucleotide.factor b/extra/benchmark/knucleotide/knucleotide.factor index 327439015d..cfa3550165 100644 --- a/extra/benchmark/knucleotide/knucleotide.factor +++ b/extra/benchmark/knucleotide/knucleotide.factor @@ -4,7 +4,6 @@ USING: kernel io io.files splitting strings IN: benchmark.knucleotide - : float>string ( float places -- string ) swap >float number>string "." split1 rot diff --git a/extra/benchmark/knucleotide/summary.txt b/extra/benchmark/knucleotide/summary.txt new file mode 100644 index 0000000000..c7346d4b0a --- /dev/null +++ b/extra/benchmark/knucleotide/summary.txt @@ -0,0 +1,2 @@ +The Great Computer Language Shootout's knucleotide benchmark to test +hashtables. From aa25860b5b5890c442e866353f4e9be52aec561c Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 22:34:53 -0600 Subject: [PATCH 075/285] Fix typo --- misc/factor.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/factor.sh b/misc/factor.sh index a95ac6ce1e..98f9104549 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -148,7 +148,7 @@ set_build_info() { MAKE_TARGET=$OS-$ARCH-$WORD BOOT_IMAGE=boot.$ARCH.$WORD.image - if [[ $OS == macosx && $ARCH=ppc ]] ; then + if [[ $OS == macosx && $ARCH == ppc ]] ; then MAKE_TARGET=$OS-$ARCH BOOT_IMAGE=boot.macosx-ppc.image fi From 40dd61c0f20b166210cfee54af20bd496dccb7dc Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sat, 24 Nov 2007 22:44:47 -0600 Subject: [PATCH 076/285] notepadpp was in the wrong vocab --- extra/editors/notepadpp/notepadpp.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/editors/notepadpp/notepadpp.factor b/extra/editors/notepadpp/notepadpp.factor index 080910731d..42f0568c3a 100644 --- a/extra/editors/notepadpp/notepadpp.factor +++ b/extra/editors/notepadpp/notepadpp.factor @@ -1,5 +1,5 @@ USING: editors io.launcher math.parser namespaces ; -IN: notepadpp +IN: editors.notepadpp : notepadpp ( file line -- ) [ From fd2d136df6f3972c479c5c4b253510b874629ba6 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 23:57:37 -0500 Subject: [PATCH 077/285] UI fixes --- extra/ui/cocoa/cocoa.factor | 2 +- extra/ui/gadgets/incremental/incremental.factor | 4 ++-- extra/ui/ui.factor | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/extra/ui/cocoa/cocoa.factor b/extra/ui/cocoa/cocoa.factor index 7492ad19b7..1e46544180 100755 --- a/extra/ui/cocoa/cocoa.factor +++ b/extra/ui/cocoa/cocoa.factor @@ -5,7 +5,7 @@ kernel memory namespaces cocoa.messages cocoa.runtime cocoa.subclassing cocoa.pasteboard cocoa.types cocoa.windows cocoa.classes cocoa.application sequences system ui ui.backend ui.clipboards ui.gadgets ui.gadgets.worlds ui.cocoa.views -core-foundation ; +core-foundation threads ; IN: ui.cocoa TUPLE: cocoa-ui-backend ; diff --git a/extra/ui/gadgets/incremental/incremental.factor b/extra/ui/gadgets/incremental/incremental.factor index a5c7431d36..c90b955eb7 100755 --- a/extra/ui/gadgets/incremental/incremental.factor +++ b/extra/ui/gadgets/incremental/incremental.factor @@ -40,13 +40,13 @@ M: incremental pref-dim* swap set-rect-loc ; : prefer-incremental ( gadget -- ) - dup forget-pref-dim dup pref-dim over set-rect-dim - layout ; + dup forget-pref-dim dup pref-dim swap set-rect-dim ; : add-incremental ( gadget incremental -- ) not-in-layout 2dup (add-gadget) over prefer-incremental + over layout-later 2dup incremental-loc tuck update-cursor dup prefer-incremental diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index bafd6c40c5..09c06035b8 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -4,7 +4,7 @@ USING: arrays assocs io kernel math models namespaces prettyprint dlists sequences threads sequences words timers debugger ui.gadgets ui.gadgets.worlds ui.gadgets.tracks ui.gestures ui.backend ui.render continuations init -combinators ; +combinators hashtables ; IN: ui ! Assoc mapping aliens to gadgets @@ -114,7 +114,7 @@ SYMBOL: ui-hook layout-queue [ dup layout find-world [ , ] when* ] dlist-slurp - ] { } make ; + ] { } make prune ; : redraw-worlds ( seq -- ) [ dup update-hand draw-world ] each ; From f1e91b97e289d4c86314853eeaf58b8c0d2982f4 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 24 Nov 2007 23:57:46 -0500 Subject: [PATCH 078/285] Fix jamshred unit test --- extra/jamshred/tunnel/tunnel-tests.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/jamshred/tunnel/tunnel-tests.factor b/extra/jamshred/tunnel/tunnel-tests.factor index e78ced83e0..2ea8a64bd9 100644 --- a/extra/jamshred/tunnel/tunnel-tests.factor +++ b/extra/jamshred/tunnel/tunnel-tests.factor @@ -12,4 +12,4 @@ IN: temporary [ 3 ] [ T{ oint f { 0 0 -3.25 } } 0 nearest-segment-forward segment-number ] unit-test -[ { 0 0 0 } ] [ T{ oint f { 0 0 -0.25 } } over first nearest-segment oint-location ] unit-test +[ F{ 0 0 0 } ] [ T{ oint f { 0 0 -0.25 } } over first nearest-segment oint-location ] unit-test From 94e0c7c8ebff77b7d5c5cc355ad4ae59bab2e982 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 25 Nov 2007 03:48:22 -0500 Subject: [PATCH 079/285] Callbacks were being blown away on startup --- core/alien/compiler/compiler.factor | 5 ++--- extra/tools/deploy/shaker/shaker.factor | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/core/alien/compiler/compiler.factor b/core/alien/compiler/compiler.factor index 7495be42ca..29957ac088 100755 --- a/core/alien/compiler/compiler.factor +++ b/core/alien/compiler/compiler.factor @@ -5,8 +5,7 @@ hashtables kernel math namespaces sequences words inference.backend inference.dataflow system math.parser classes alien.arrays alien.c-types alien.structs alien.syntax cpu.architecture alien inspector quotations assocs -kernel.private threads continuations.private libc combinators -init ; +kernel.private threads continuations.private libc combinators ; IN: alien.compiler ! Common protocol for alien-invoke/alien-callback/alien-indirect @@ -302,7 +301,7 @@ M: alien-indirect generate-node ! this hashtable, they will all be blown away by code GC, beware SYMBOL: callbacks -[ H{ } clone callbacks set-global ] "alien.compiler" add-init-hook +callbacks global [ H{ } assoc-like ] change-at : register-callback ( word -- ) dup callbacks get set-at ; diff --git a/extra/tools/deploy/shaker/shaker.factor b/extra/tools/deploy/shaker/shaker.factor index 3e1aa3ab53..7b6d3fdbb5 100755 --- a/extra/tools/deploy/shaker/shaker.factor +++ b/extra/tools/deploy/shaker/shaker.factor @@ -111,6 +111,10 @@ SYMBOL: deploy-vocab builtins , strip-io? [ io-backend , ] unless + deploy-compiler? get [ + "callbacks" "alien.compiler" lookup , + ] when + strip-dictionary? [ { dictionary From efde1afc2fcbb8420a9c99755afa79acd0c7f6b9 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 25 Nov 2007 04:33:46 -0500 Subject: [PATCH 080/285] Improve no-edit-hook error, make it restartable --- extra/editors/editors.factor | 29 ++++++++++++++++----- extra/ui/tools/operations/operations.factor | 2 ++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/extra/editors/editors.factor b/extra/editors/editors.factor index 930a39dfdf..7d95c8ce8a 100644 --- a/extra/editors/editors.factor +++ b/extra/editors/editors.factor @@ -1,21 +1,36 @@ ! Copyright (C) 2005, 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: parser kernel namespaces sequences definitions io.files -inspector continuations tuples tools.crossref io prettyprint -source-files ; +inspector continuations tuples tools.crossref tools.browser +io prettyprint source-files assocs vocabs vocabs.loader ; IN: editors TUPLE: no-edit-hook ; -M: no-edit-hook summary drop "No edit hook is set" ; +M: no-edit-hook summary + drop "You must load one of the below vocabularies before using editor integration:" ; SYMBOL: edit-hook +: available-editors ( -- seq ) + "editors" all-child-vocabs + values concat [ vocab-name ] map ; + +: editor-restarts ( -- alist ) + available-editors + [ "Load " over append swap ] { } map>assoc ; + +: no-edit-hook ( -- ) + \ no-edit-hook construct-empty + editor-restarts throw-restarts + require ; + : edit-location ( file line -- ) - >r ?resource-path r> - edit-hook get dup [ - \ no-edit-hook construct-empty throw - ] if ; + edit-hook get [ + >r >r ?resource-path r> r> call + ] [ + no-edit-hook edit-location + ] if* ; : edit ( defspec -- ) where [ first2 edit-location ] when* ; diff --git a/extra/ui/tools/operations/operations.factor b/extra/ui/tools/operations/operations.factor index d2d7685f45..b7a59f5c28 100755 --- a/extra/ui/tools/operations/operations.factor +++ b/extra/ui/tools/operations/operations.factor @@ -64,6 +64,7 @@ V{ } clone operations set-global { +keyboard+ T{ key-down f { C+ } "E" } } { +primary+ t } { +secondary+ t } + { +listener+ t } } define-operation UNION: definition word method-spec link ; @@ -72,6 +73,7 @@ UNION: editable-definition definition vocab vocab-link ; [ editable-definition? ] \ edit H{ { +keyboard+ T{ key-down f { C+ } "E" } } + { +listener+ t } } define-operation UNION: reloadable-definition definition pathname ; From 75d9329f066401d50572c81b59a780efdaab0ff2 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 25 Nov 2007 04:35:16 -0500 Subject: [PATCH 081/285] 'watch' now respects effect-in/effect-out --- extra/tools/annotations/annotations.factor | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/extra/tools/annotations/annotations.factor b/extra/tools/annotations/annotations.factor index d24d60cef6..e97f292416 100644 --- a/extra/tools/annotations/annotations.factor +++ b/extra/tools/annotations/annotations.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: kernel words parser io inspector quotations sequences -prettyprint continuations ; +prettyprint continuations effects ; IN: tools.annotations : annotate ( word quot -- ) @@ -9,17 +9,29 @@ IN: tools.annotations swap define-compound do-parse-hook ; inline -: entering ( str -- ) "! Entering: " write print .s flush ; +: entering ( str -- ) + "/-- Entering: " write dup . + stack-effect [ + >r datastack r> effect-in length tail* stack. + ] [ + .s + ] if* "\\--" print flush ; -: leaving ( str -- ) "! Leaving: " write print .s flush ; +: leaving ( str -- ) + "/-- Leaving: " write dup . + stack-effect [ + >r datastack r> effect-out length tail* stack. + ] [ + .s + ] if* "\\--" print flush ; -: (watch) ( str def -- def ) +: (watch) ( word def -- def ) over [ entering ] curry rot [ leaving ] curry swapd 3append ; : watch ( word -- ) - dup word-name swap [ (watch) ] annotate ; + dup [ (watch) ] annotate ; : breakpoint ( word -- ) [ \ break add* ] annotate ; From a019a64407a0d294f3311be99deab187dfe8e370 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 25 Nov 2007 03:51:30 -0600 Subject: [PATCH 082/285] initial checkin of regexps --- extra/regexp/regexp-tests.factor | 77 ++++++++++++++++++ extra/regexp/regexp.factor | 134 +++++++++++++++++++++++++++++++ 2 files changed, 211 insertions(+) create mode 100644 extra/regexp/regexp-tests.factor create mode 100644 extra/regexp/regexp.factor diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor new file mode 100644 index 0000000000..597a4f5143 --- /dev/null +++ b/extra/regexp/regexp-tests.factor @@ -0,0 +1,77 @@ +USING: regexp tools.test ; +IN: regexp-tests + +[ f ] [ "b" "a*" matches? ] unit-test +[ t ] [ "" "a*" matches? ] unit-test +[ t ] [ "a" "a*" matches? ] unit-test +[ t ] [ "aaaaaaa" "a*" matches? ] unit-test +[ f ] [ "ab" "a*" matches? ] unit-test + +[ t ] [ "abc" "abc" matches? ] unit-test +[ t ] [ "a" "a|b|c" matches? ] unit-test +[ t ] [ "b" "a|b|c" matches? ] unit-test +[ t ] [ "c" "a|b|c" matches? ] unit-test +[ f ] [ "c" "d|e|f" matches? ] unit-test + +[ f ] [ "aa" "a|b|c" matches? ] unit-test +[ f ] [ "bb" "a|b|c" matches? ] unit-test +[ f ] [ "cc" "a|b|c" matches? ] unit-test +[ f ] [ "cc" "d|e|f" matches? ] unit-test + +[ f ] [ "" "a+" matches? ] unit-test +[ t ] [ "a" "a+" matches? ] unit-test +[ t ] [ "aa" "a+" matches? ] unit-test + +[ t ] [ "" "a?" matches? ] unit-test +[ t ] [ "a" "a?" matches? ] unit-test +[ f ] [ "aa" "a?" matches? ] unit-test + +[ f ] [ "" "." matches? ] unit-test +[ t ] [ "a" "." matches? ] unit-test +[ t ] [ "." "." matches? ] unit-test + +[ f ] [ "" ".+" matches? ] unit-test +[ t ] [ "a" ".+" matches? ] unit-test +[ t ] [ "ab" ".+" matches? ] unit-test + +[ t ] [ "" "a|b*|c+|d?" matches? ] unit-test +[ t ] [ "a" "a|b*|c+|d?" matches? ] unit-test +[ t ] [ "c" "a|b*|c+|d?" matches? ] unit-test +[ t ] [ "cc" "a|b*|c+|d?" matches? ] unit-test +[ f ] [ "ccd" "a|b*|c+|d?" matches? ] unit-test +[ t ] [ "d" "a|b*|c+|d?" matches? ] unit-test + +[ t ] [ "foo" "foo|bar" matches? ] unit-test +[ t ] [ "bar" "foo|bar" matches? ] unit-test +[ f ] [ "foobar" "foo|bar" matches? ] unit-test + +[ f ] [ "" "(a)" matches? ] unit-test +[ t ] [ "a" "(a)" matches? ] unit-test +[ f ] [ "aa" "(a)" matches? ] unit-test +[ t ] [ "aa" "(a*)" matches? ] unit-test + +[ f ] [ "aababaaabbac" "(a|b)+" matches? ] unit-test +[ t ] [ "ababaaabba" "(a|b)+" matches? ] unit-test + +[ f ] [ "" "a{1}" matches? ] unit-test +[ t ] [ "a" "a{1}" matches? ] unit-test +[ f ] [ "aa" "a{1}" matches? ] unit-test + +[ f ] [ "a" "a{2,}" matches? ] unit-test +[ t ] [ "aaa" "a{2,}" matches? ] unit-test +[ t ] [ "aaaa" "a{2,}" matches? ] unit-test +[ t ] [ "aaaaa" "a{2,}" matches? ] unit-test + +[ t ] [ "" "a{,2}" matches? ] unit-test +[ t ] [ "a" "a{,2}" matches? ] unit-test +[ t ] [ "aa" "a{,2}" matches? ] unit-test +[ f ] [ "aaa" "a{,2}" matches? ] unit-test +[ f ] [ "aaaa" "a{,2}" matches? ] unit-test +[ f ] [ "aaaaa" "a{,2}" matches? ] unit-test + +[ f ] [ "" "a{1,3}" matches? ] unit-test +[ t ] [ "a" "a{1,3}" matches? ] unit-test +[ t ] [ "aa" "a{1,3}" matches? ] unit-test +[ t ] [ "aaa" "a{1,3}" matches? ] unit-test +[ f ] [ "aaaa" "a{1,3}" matches? ] unit-test + diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor new file mode 100644 index 0000000000..c7abaada26 --- /dev/null +++ b/extra/regexp/regexp.factor @@ -0,0 +1,134 @@ +USING: combinators kernel lazy-lists math math.parser +namespaces parser parser-combinators promises sequences +strings ; +USING: continuations io prettyprint ; +IN: regexp + +: 'any-char' + "." token [ drop any-char-parser ] <@ ; + +: 'escaped-char' + "\\" token any-char-parser &> ; + +: 'ordinary-char' + [ "*+?|(){}" member? not ] satisfy ; + +: 'char' 'escaped-char' 'ordinary-char' <|> ; + +: 'string' 'char' <+> [ >string token ] <@ ; + +: 'integer' [ digit? ] satisfy <+> [ string>number ] <@ ; + +: exactly-n ( parser n -- parser' ) + swap and-parser construct-boa ; + +: at-most-n ( parser n -- parser' ) + dup zero? [ + 2drop epsilon + ] [ + 2dup exactly-n + -rot 1- at-most-n <|> + ] if ; + +: at-least-n ( parser n -- parser' ) + dupd exactly-n swap <*> <&> ; + +: from-m-to-n ( parser m n -- parser' ) + >r [ exactly-n ] 2keep r> swap - at-most-n <&> ; + +DEFER: 'regexp' + +TUPLE: group-result str ; + +C: group-result + +: 'grouping' + "(" token + 'regexp' [ [ ] <@ ] <@ + ")" token <& &> ; + +: 'term' + 'any-char' + 'string' <|> + 'grouping' <|> + <+> [ + dup length 1 = + [ first ] [ and-parser construct-boa ] if + ] <@ ; + +: 'interval' + 'term' + "{" token + 'integer' &> + "," token <:&:> + 'integer' <:&:> + "}" token <& <&> [ + first2 dup length { + { 1 [ first exactly-n ] } + { 2 [ first2 dup integer? + [ nip at-most-n ] + [ drop at-least-n ] if ] } + { 3 [ first3 nip from-m-to-n ] } + } case + ] <@ ; + +: 'character-range' + any-char-parser "-" token <& any-char-parser &> ; + +: 'character-class-inside' + any-char-parser + 'character-range' <|> ; + +: 'character-class-inclusive' + "[" token + 'character-class-inside' + "]" token ; + +: 'character-class-exclusive' + "[^" token + 'character-class-inside' + "]" token ; + +: 'character-class' + 'character-class-inclusive' + 'character-class-exclusive' <|> ; + +: 'repetition' + 'term' + [ "*+?" member? ] satisfy <&> [ + first2 { + { CHAR: * [ <*> ] } + { CHAR: + [ <+> ] } + { CHAR: ? [ ] } + } case + ] <@ ; + +: 'simple' 'term' 'repetition' <|> 'interval' <|> ; + +LAZY: 'union' ( -- parser ) + 'simple' + 'simple' "|" token 'union' &> <&> [ first2 <|> ] <@ + <|> ; + +LAZY: 'regexp' ( -- parser ) + 'repetition' 'union' <|> ; + +: 'regexp' just parse-1 ; + + +GENERIC: >regexp ( obj -- parser ) +M: string >regexp 'regexp' just parse-1 ; +M: object >regexp ; + +: matches? ( string regexp -- ? ) >regexp just parse nil? not ; + +: parse-regexp ( accum end -- accum ) + lexer get dup skip-blank [ + [ index* dup 1+ swap ] 2keep swapd subseq swap + ] change-column parsed ; + +: R/ CHAR: / parse-regexp ; parsing +: R| CHAR: | parse-regexp ; parsing +: R" CHAR: " parse-regexp ; parsing +: R' CHAR: ' parse-regexp ; parsing +: R` CHAR: ` parse-regexp ; parsing From 3fc47bae3a2892007791591f7a653412f2ca509f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 25 Nov 2007 03:55:15 -0600 Subject: [PATCH 083/285] Add <:&:> to parser-combinators --- extra/parser-combinators/parser-combinators.factor | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index 5741c801f7..199f0cb136 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -190,6 +190,10 @@ M: some-parser (parse) ( input parser -- result ) #! Same as <&> except flatten the result. <&> [ dup second swap first [ , % ] { } make ] <@ ; +: <:&:> ( parser1 parser2 -- result ) + #! Same as <&> except flatten the result. + <&> [ dup second swap first [ % % ] { } make ] <@ ; + LAZY: <*> ( parser -- parser ) dup <*> <&:> { } succeed <|> ; @@ -263,4 +267,4 @@ LAZY: <(+)> ( parser -- parser ) nonempty-list-of { } succeed <|> ; LAZY: surrounded-by ( parser start end -- parser' ) - [ token ] 2apply swapd pack ; \ No newline at end of file + [ token ] 2apply swapd pack ; From 8d84a81141e0d780037b1f9aca90a3341762f23f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 25 Nov 2007 03:56:04 -0600 Subject: [PATCH 084/285] Use the builtin 'integer' --- extra/regexp/regexp.factor | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index c7abaada26..79f826bafa 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -1,6 +1,6 @@ USING: combinators kernel lazy-lists math math.parser -namespaces parser parser-combinators promises sequences -strings ; +namespaces parser parser-combinators parser-combinators.simple +promises sequences strings ; USING: continuations io prettyprint ; IN: regexp @@ -17,8 +17,6 @@ IN: regexp : 'string' 'char' <+> [ >string token ] <@ ; -: 'integer' [ digit? ] satisfy <+> [ string>number ] <@ ; - : exactly-n ( parser n -- parser' ) swap and-parser construct-boa ; From 286e261fb65cd418e3176e72e6bee609ee6ee46f Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Sun, 25 Nov 2007 13:37:05 -0600 Subject: [PATCH 085/285] Update factor.el --- misc/factor.el | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/misc/factor.el b/misc/factor.el index 88af0a6dab..985e10e285 100644 --- a/misc/factor.el +++ b/misc/factor.el @@ -113,13 +113,6 @@ (defvar factor-binary "/scratch/repos/Factor/factor") (defvar factor-image "/scratch/repos/Factor/factor.image") -(defun run-factor () - (interactive) - (switch-to-buffer - (make-comint-in-buffer "factor" nil factor-binary nil - (concat "-i=" factor-image) - "-run=listener"))) - (defun factor-telnet-to-port (port) (interactive "nPort: ") (switch-to-buffer @@ -166,12 +159,30 @@ (beginning-of-line) (insert "! ")) -(defun factor-refresh-all () - (interactive) - (comint-send-string "*factor*" "refresh-all\n")) - (define-key factor-mode-map "\C-c\C-f" 'factor-run-file) (define-key factor-mode-map "\C-c\C-r" 'factor-send-region) (define-key factor-mode-map "\C-c\C-s" 'factor-see) -(define-key factor-mode-map "\C-ce" 'factor-edit) +(define-key factor-mode-map "\C-ce" 'factor-edit) (define-key factor-mode-map "\C-c\C-h" 'factor-help) +(define-key factor-mode-map "\C-cc" 'comment-region) +(define-key factor-mode-map [return] 'newline-and-indent) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; factor-listener-mode +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(define-derived-mode factor-listener-mode comint-mode "Factor Listener") + +(define-key factor-listener-mode-map [f8] 'factor-refresh-all) + +(defun run-factor () + (interactive) + (switch-to-buffer + (make-comint-in-buffer "factor" nil factor-binary nil + (concat "-i=" factor-image) + "-run=listener")) + (factor-listener-mode)) + +(defun factor-refresh-all () + (interactive) + (comint-send-string "*factor*" "refresh-all\n")) \ No newline at end of file From e167a6b9d54a6ca3ca310415468cd32554676453 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Sun, 25 Nov 2007 13:37:27 -0600 Subject: [PATCH 086/285] raptor updates --- extra/raptor/config.factor | 5 ++++- extra/raptor/cronjobs.factor | 2 -- extra/raptor/raptor.factor | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/extra/raptor/config.factor b/extra/raptor/config.factor index ecdbf98f17..29e26d4381 100644 --- a/extra/raptor/config.factor +++ b/extra/raptor/config.factor @@ -44,7 +44,10 @@ IN: raptor ! rcS.d "mountvirtfs" start-service - "hostname.sh" start-service + + ! "hostname.sh" start-service + "narodnik" set-hostname + "keymap.sh" start-service "linux-restricted-modules-common" start-service "udev" start-service diff --git a/extra/raptor/cronjobs.factor b/extra/raptor/cronjobs.factor index 894e8e5ce7..91263a31d9 100644 --- a/extra/raptor/cronjobs.factor +++ b/extra/raptor/cronjobs.factor @@ -6,8 +6,6 @@ IN: raptor ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: fork-exec-args-wait ( args -- ) [ first ] [ ] bi fork-exec-wait ; - : run-script ( path -- ) 1array [ fork-exec-args-wait ] curry in-thread ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/extra/raptor/raptor.factor b/extra/raptor/raptor.factor index e6f960cd8d..ef5359c313 100644 --- a/extra/raptor/raptor.factor +++ b/extra/raptor/raptor.factor @@ -22,6 +22,8 @@ SYMBOL: networking-hook : fork-exec-wait ( pathname args -- ) fork dup 0 = [ drop exec drop ] [ 2nip wait-for-pid drop ] if ; +: fork-exec-args-wait ( args -- ) [ first ] [ ] bi fork-exec-wait ; + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : forever ( quot -- ) [ call ] [ forever ] bi ; @@ -59,6 +61,10 @@ SYMBOL: swap-devices : start-networking ( -- ) networking-hook get call ; +: set-hostname ( name -- ) `{ "/bin/hostname" , } fork-exec-args-wait ; + +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + : boot ( -- ) boot-hook get call ; : reboot ( -- ) reboot-hook get call ; : shutdown ( -- ) shutdown-hook get call ; From 1f2001143c6d521f4df444bd395a9ef718c13837 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 25 Nov 2007 15:27:11 -0500 Subject: [PATCH 087/285] Add type check to curry primitive --- core/cpu/arm/intrinsics/intrinsics.factor | 11 ----------- core/cpu/ppc/intrinsics/intrinsics.factor | 12 ------------ core/cpu/x86/intrinsics/intrinsics.factor | 13 ------------- core/quotations/quotations-tests.factor | 6 ++++-- vm/quotations.c | 16 +++++++++++++--- 5 files changed, 17 insertions(+), 41 deletions(-) mode change 100644 => 100755 vm/quotations.c diff --git a/core/cpu/arm/intrinsics/intrinsics.factor b/core/cpu/arm/intrinsics/intrinsics.factor index 9eedd8e494..81b23ea8b2 100755 --- a/core/cpu/arm/intrinsics/intrinsics.factor +++ b/core/cpu/arm/intrinsics/intrinsics.factor @@ -418,17 +418,6 @@ IN: cpu.arm.intrinsics { +output+ { "out" } } } define-intrinsic -\ curry [ - \ curry 3 cells %allot - "obj" operand 1 %set-slot - "quot" operand 2 %set-slot - "out" get object %store-tagged -] H{ - { +input+ { { f "obj" } { f "quot" } } } - { +scratch+ { { f "out" } } } - { +output+ { "out" } } -} define-intrinsic - ! Alien intrinsics : %alien-accessor ( quot -- ) "offset" operand dup %untag-fixnum diff --git a/core/cpu/ppc/intrinsics/intrinsics.factor b/core/cpu/ppc/intrinsics/intrinsics.factor index f78b7c06e2..e1d86db178 100755 --- a/core/cpu/ppc/intrinsics/intrinsics.factor +++ b/core/cpu/ppc/intrinsics/intrinsics.factor @@ -580,18 +580,6 @@ IN: cpu.ppc.intrinsics { +output+ { "vector" } } } define-intrinsic -\ curry [ - \ curry 3 cells %allot - "obj" operand 11 1 cells STW - "quot" operand 11 2 cells STW - ! Store tagged ptr in reg - "curry" get object %store-tagged -] H{ - { +input+ { { f "obj" } { f "quot" } } } - { +scratch+ { { f "curry" } } } - { +output+ { "curry" } } -} define-intrinsic - ! Alien intrinsics : %alien-accessor ( quot -- ) "offset" operand dup %untag-fixnum diff --git a/core/cpu/x86/intrinsics/intrinsics.factor b/core/cpu/x86/intrinsics/intrinsics.factor index ff6975336d..d1a851b553 100755 --- a/core/cpu/x86/intrinsics/intrinsics.factor +++ b/core/cpu/x86/intrinsics/intrinsics.factor @@ -485,19 +485,6 @@ IN: cpu.x86.intrinsics { +output+ { "vector" } } } define-intrinsic -\ curry [ - \ curry 3 cells [ - 1 object@ "obj" operand MOV - 2 object@ "quot" operand MOV - ! Store tagged ptr in reg - "curry" get object %store-tagged - ] %allot -] H{ - { +input+ { { f "obj" } { f "quot" } } } - { +scratch+ { { f "curry" } } } - { +output+ { "curry" } } -} define-intrinsic - ! Alien intrinsics : %alien-accessor ( quot -- ) "offset" operand %untag-fixnum diff --git a/core/quotations/quotations-tests.factor b/core/quotations/quotations-tests.factor index 662b9e9f2a..f1cc6cd828 100644 --- a/core/quotations/quotations-tests.factor +++ b/core/quotations/quotations-tests.factor @@ -1,8 +1,8 @@ USING: math kernel quotations tools.test sequences ; IN: temporary -[ [ 3 ] ] [ 3 f curry ] unit-test -[ [ \ + ] ] [ \ + f curry ] unit-test +[ [ 3 ] ] [ 3 [ ] curry ] unit-test +[ [ \ + ] ] [ \ + [ ] curry ] unit-test [ [ \ + = ] ] [ \ + [ = ] curry ] unit-test [ [ 1 + 2 + 3 + ] ] [ @@ -14,3 +14,5 @@ IN: temporary [ [ 3 1 2 ] ] [ [ 1 2 ] 3 add* ] unit-test [ [ "hi" ] ] [ "hi" 1quotation ] unit-test + +[ 1 \ + curry ] unit-test-fails diff --git a/vm/quotations.c b/vm/quotations.c old mode 100644 new mode 100755 index 472ec76f1e..9d98fa7842 --- a/vm/quotations.c +++ b/vm/quotations.c @@ -192,9 +192,19 @@ XT quot_offset_to_pc(F_QUOTATION *quot, F_FIXNUM offset) DEFINE_PRIMITIVE(curry) { F_CURRY *curry = allot_object(CURRY_TYPE,sizeof(F_CURRY)); - curry->quot = dpop(); - curry->obj = dpop(); - dpush(tag_object(curry)); + + switch(type_of(dpeek())) + { + case QUOTATION_TYPE: + case CURRY_TYPE: + curry->quot = dpop(); + curry->obj = dpop(); + dpush(tag_object(curry)); + break; + default: + type_error(QUOTATION_TYPE,dpeek()); + break; + } } void uncurry(CELL obj) From 12599e03c4a195810d908c7d483e34068c186ad2 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 25 Nov 2007 17:07:32 -0500 Subject: [PATCH 088/285] Clean up parser combinators --- .../parser-combinators.factor | 304 +++++++++--------- 1 file changed, 153 insertions(+), 151 deletions(-) diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index 199f0cb136..d6c44659a5 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -1,22 +1,23 @@ ! Copyright (C) 2004 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: lazy-lists promises kernel sequences strings math io -arrays namespaces splitting ; +USING: lazy-lists promises kernel sequences strings math +arrays splitting ; IN: parser-combinators ! Parser combinator protocol -GENERIC: (parse) ( input parser -- list ) +GENERIC: parse ( input parser -- list ) -M: promise (parse) ( input parser -- list ) - force (parse) ; - -: parse ( input parser -- promise ) - (parse) ; +M: promise parse ( input parser -- list ) + force parse ; TUPLE: parse-result parsed unparsed ; : parse-1 ( input parser -- result ) - parse car parse-result-parsed ; + parse dup nil? [ + "Parse error" throw + ] [ + car parse-result-parsed + ] if ; C: parse-result @@ -24,105 +25,106 @@ TUPLE: token-parser string ; C: token token-parser ( string -- parser ) -M: token-parser (parse) ( input parser -- list ) - token-parser-string swap over ?head-slice [ - 1list - ] [ - 2drop nil - ] if ; +M: token-parser parse ( input parser -- list ) + token-parser-string swap over ?head-slice [ + 1list + ] [ + 2drop nil + ] if ; TUPLE: satisfy-parser quot ; C: satisfy satisfy-parser ( quot -- parser ) -M: satisfy-parser (parse) ( input parser -- list ) - #! A parser that succeeds if the predicate, - #! when passed the first character in the input, returns - #! true. - over empty? [ - 2drop nil - ] [ - satisfy-parser-quot >r unclip-slice dup r> call [ - swap 1list +M: satisfy-parser parse ( input parser -- list ) + #! A parser that succeeds if the predicate, + #! when passed the first character in the input, returns + #! true. + over empty? [ + 2drop nil ] [ - 2drop nil - ] if - ] if ; + satisfy-parser-quot >r unclip-slice dup r> call [ + swap 1list + ] [ + 2drop nil + ] if + ] if ; LAZY: any-char-parser ( -- parser ) - [ drop t ] satisfy ; + [ drop t ] satisfy ; TUPLE: epsilon-parser ; C: epsilon epsilon-parser ( -- parser ) -M: epsilon-parser (parse) ( input parser -- list ) - #! A parser that parses the empty string. It - #! does not consume any input and always returns - #! an empty list as the parse tree with the - #! unmodified input. - drop "" swap 1list ; +M: epsilon-parser parse ( input parser -- list ) + #! A parser that parses the empty string. It + #! does not consume any input and always returns + #! an empty list as the parse tree with the + #! unmodified input. + drop "" swap 1list ; TUPLE: succeed-parser result ; C: succeed succeed-parser ( result -- parser ) -M: succeed-parser (parse) ( input parser -- list ) - #! A parser that always returns 'result' as a - #! successful parse with no input consumed. - succeed-parser-result swap 1list ; +M: succeed-parser parse ( input parser -- list ) + #! A parser that always returns 'result' as a + #! successful parse with no input consumed. + succeed-parser-result swap 1list ; TUPLE: fail-parser ; C: fail fail-parser ( -- parser ) -M: fail-parser (parse) ( input parser -- list ) - #! A parser that always fails and returns - #! an empty list of successes. - 2drop nil ; +M: fail-parser parse ( input parser -- list ) + #! A parser that always fails and returns + #! an empty list of successes. + 2drop nil ; TUPLE: and-parser parsers ; : <&> ( parser1 parser2 -- parser ) - over and-parser? [ - >r and-parser-parsers r> add - ] [ - 2array - ] if \ and-parser construct-boa ; + over and-parser? [ + >r and-parser-parsers r> add + ] [ + 2array + ] if and-parser construct-boa ; : and-parser-parse ( list p1 -- list ) - swap [ - dup parse-result-unparsed rot parse - [ - >r parse-result-parsed r> - [ parse-result-parsed 2array ] keep - parse-result-unparsed - ] lmap-with - ] lmap-with lconcat ; + swap [ + dup parse-result-unparsed rot parse + [ + >r parse-result-parsed r> + [ parse-result-parsed 2array ] keep + parse-result-unparsed + ] lmap-with + ] lmap-with lconcat ; -M: and-parser (parse) ( input parser -- list ) - #! Parse 'input' by sequentially combining the - #! two parsers. First parser1 is applied to the - #! input then parser2 is applied to the rest of - #! the input strings from the first parser. - and-parser-parsers unclip swapd parse [ [ and-parser-parse ] reduce ] 2curry promise ; +M: and-parser parse ( input parser -- list ) + #! Parse 'input' by sequentially combining the + #! two parsers. First parser1 is applied to the + #! input then parser2 is applied to the rest of + #! the input strings from the first parser. + and-parser-parsers unclip swapd parse + [ [ and-parser-parse ] reduce ] 2curry promise ; TUPLE: or-parser p1 p2 ; C: <|> or-parser ( parser1 parser2 -- parser ) -M: or-parser (parse) ( input parser1 -- list ) - #! Return the combined list resulting from the parses - #! of parser1 and parser2 being applied to the same - #! input. This implements the choice parsing operator. - [ or-parser-p1 ] keep or-parser-p2 >r dupd parse swap r> parse lappend ; +M: or-parser parse ( input parser1 -- list ) + #! Return the combined list resulting from the parses + #! of parser1 and parser2 being applied to the same + #! input. This implements the choice parsing operator. + [ or-parser-p1 ] keep or-parser-p2 >r dupd parse swap r> parse lappend ; : left-trim-slice ( string -- string ) - #! Return a new string without any leading whitespace - #! from the original string. - dup empty? [ - dup first blank? [ 1 tail-slice left-trim-slice ] when - ] unless ; + #! Return a new string without any leading whitespace + #! from the original string. + dup empty? [ + dup first blank? [ 1 tail-slice left-trim-slice ] when + ] unless ; TUPLE: sp-parser p1 ; @@ -130,115 +132,115 @@ TUPLE: sp-parser p1 ; #! calling the original parser. C: sp sp-parser ( p1 -- parser ) -M: sp-parser (parse) ( input parser -- list ) - #! Skip all leading whitespace from the input then call - #! the parser on the remaining input. - >r left-trim-slice r> sp-parser-p1 parse ; +M: sp-parser parse ( input parser -- list ) + #! Skip all leading whitespace from the input then call + #! the parser on the remaining input. + >r left-trim-slice r> sp-parser-p1 parse ; TUPLE: just-parser p1 ; C: just just-parser ( p1 -- parser ) -M: just-parser (parse) ( input parser -- result ) - #! Calls the given parser on the input removes - #! from the results anything where the remaining - #! input to be parsed is not empty. So ensures a - #! fully parsed input string. - just-parser-p1 parse [ parse-result-unparsed empty? ] lsubset ; +M: just-parser parse ( input parser -- result ) + #! Calls the given parser on the input removes + #! from the results anything where the remaining + #! input to be parsed is not empty. So ensures a + #! fully parsed input string. + just-parser-p1 parse [ parse-result-unparsed empty? ] lsubset ; TUPLE: apply-parser p1 quot ; C: <@ apply-parser ( parser quot -- parser ) -M: apply-parser (parse) ( input parser -- result ) - #! Calls the parser on the input. For each successfull - #! parse the quot is call with the parse result on the stack. - #! The result of that quotation then becomes the new parse result. - #! This allows modification of parse tree results (like - #! converting strings to integers, etc). - [ apply-parser-p1 ] keep apply-parser-quot - -rot parse [ - [ parse-result-parsed swap call ] keep - parse-result-unparsed - ] lmap-with ; +M: apply-parser parse ( input parser -- result ) + #! Calls the parser on the input. For each successfull + #! parse the quot is call with the parse result on the stack. + #! The result of that quotation then becomes the new parse result. + #! This allows modification of parse tree results (like + #! converting strings to integers, etc). + [ apply-parser-p1 ] keep apply-parser-quot + -rot parse [ + [ parse-result-parsed swap call ] keep + parse-result-unparsed + ] lmap-with ; TUPLE: some-parser p1 ; C: some some-parser ( p1 -- parser ) -M: some-parser (parse) ( input parser -- result ) - #! Calls the parser on the input, guarantees - #! the parse is complete (the remaining input is empty), - #! picks the first solution and only returns the parse - #! tree since the remaining input is empty. - some-parser-p1 just parse-1 ; - +M: some-parser parse ( input parser -- result ) + #! Calls the parser on the input, guarantees + #! the parse is complete (the remaining input is empty), + #! picks the first solution and only returns the parse + #! tree since the remaining input is empty. + some-parser-p1 just parse-1 ; : <& ( parser1 parser2 -- parser ) - #! Same as <&> except discard the results of the second parser. - <&> [ first ] <@ ; + #! Same as <&> except discard the results of the second parser. + <&> [ first ] <@ ; : &> ( parser1 parser2 -- parser ) - #! Same as <&> except discard the results of the first parser. - <&> [ second ] <@ ; + #! Same as <&> except discard the results of the first parser. + <&> [ second ] <@ ; : <:&> ( parser1 parser2 -- result ) - #! Same as <&> except flatten the result. - <&> [ dup second swap first [ % , ] { } make ] <@ ; + #! Same as <&> except flatten the result. + <&> [ first2 add ] <@ ; : <&:> ( parser1 parser2 -- result ) - #! Same as <&> except flatten the result. - <&> [ dup second swap first [ , % ] { } make ] <@ ; + #! Same as <&> except flatten the result. + <&> [ first2 swap add* ] <@ ; : <:&:> ( parser1 parser2 -- result ) - #! Same as <&> except flatten the result. - <&> [ dup second swap first [ % % ] { } make ] <@ ; + #! Same as <&> except flatten the result. + <&> [ first2 append ] <@ ; LAZY: <*> ( parser -- parser ) - dup <*> <&:> { } succeed <|> ; + dup <*> <&:> { } succeed <|> ; : <+> ( parser -- parser ) - #! Return a parser that accepts one or more occurences of the original - #! parser. - dup <*> <&:> ; + #! Return a parser that accepts one or more occurences of the original + #! parser. + dup <*> <&:> ; LAZY: ( parser -- parser ) - #! Return a parser that optionally uses the parser - #! if that parser would be successfull. - [ 1array ] <@ f succeed <|> ; + #! Return a parser that optionally uses the parser + #! if that parser would be successfull. + [ 1array ] <@ f succeed <|> ; TUPLE: only-first-parser p1 ; -LAZY: only-first ( parser -- parser ) - \ only-first-parser construct-boa ; -M: only-first-parser (parse) ( input parser -- list ) - #! Transform a parser into a parser that only yields - #! the first possibility. - only-first-parser-p1 parse 1 swap ltake ; +LAZY: only-first ( parser -- parser ) + only-first-parser construct-boa ; + +M: only-first-parser parse ( input parser -- list ) + #! Transform a parser into a parser that only yields + #! the first possibility. + only-first-parser-p1 parse 1 swap ltake ; LAZY: ( parser -- parser ) - #! Like <*> but only return one possible result - #! containing all matching parses. Does not return - #! partial matches. Useful for efficiency since that's - #! usually the effect you want and cuts down on backtracking - #! required. - <*> only-first ; + #! Like <*> but only return one possible result + #! containing all matching parses. Does not return + #! partial matches. Useful for efficiency since that's + #! usually the effect you want and cuts down on backtracking + #! required. + <*> only-first ; LAZY: ( parser -- parser ) - #! Like <+> but only return one possible result - #! containing all matching parses. Does not return - #! partial matches. Useful for efficiency since that's - #! usually the effect you want and cuts down on backtracking - #! required. - <+> only-first ; + #! Like <+> but only return one possible result + #! containing all matching parses. Does not return + #! partial matches. Useful for efficiency since that's + #! usually the effect you want and cuts down on backtracking + #! required. + <+> only-first ; LAZY: ( parser -- parser ) - #! Like but only return one possible result - #! containing all matching parses. Does not return - #! partial matches. Useful for efficiency since that's - #! usually the effect you want and cuts down on backtracking - #! required. - only-first ; + #! Like but only return one possible result + #! containing all matching parses. Does not return + #! partial matches. Useful for efficiency since that's + #! usually the effect you want and cuts down on backtracking + #! required. + only-first ; LAZY: <(*)> ( parser -- parser ) #! Like <*> but take shortest match first. @@ -251,20 +253,20 @@ LAZY: <(+)> ( parser -- parser ) dup <(*)> <&:> ; : pack ( close body open -- parser ) - #! Parse a construct enclosed by two symbols, - #! given a parser for the opening symbol, the - #! closing symbol, and the body. - <& &> ; + #! Parse a construct enclosed by two symbols, + #! given a parser for the opening symbol, the + #! closing symbol, and the body. + <& &> ; : nonempty-list-of ( items separator -- parser ) - [ over &> <*> <&:> ] keep tuck pack ; + [ over &> <*> <&:> ] keep tuck pack ; : list-of ( items separator -- parser ) - #! Given a parser for the separator and for the - #! items themselves, return a parser that parses - #! lists of those items. The parse tree is an - #! array of the parsed items. - nonempty-list-of { } succeed <|> ; + #! Given a parser for the separator and for the + #! items themselves, return a parser that parses + #! lists of those items. The parse tree is an + #! array of the parsed items. + nonempty-list-of { } succeed <|> ; LAZY: surrounded-by ( parser start end -- parser' ) - [ token ] 2apply swapd pack ; + [ token ] 2apply swapd pack ; From 56039876bcf688de7d38d8149de95dd9092d5467 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 26 Nov 2007 12:59:04 -0600 Subject: [PATCH 089/285] Before character-class --- extra/regexp/regexp.factor | 62 +++++++++++++------------------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index 79f826bafa..02d66ee59b 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -1,21 +1,30 @@ -USING: combinators kernel lazy-lists math math.parser +USING: arrays combinators kernel lazy-lists math math.parser namespaces parser parser-combinators parser-combinators.simple -promises sequences strings ; +promises sequences sequences.lib strings ; USING: continuations io prettyprint ; IN: regexp : 'any-char' "." token [ drop any-char-parser ] <@ ; +: escaped-char + { + { CHAR: d [ [ digit? ] satisfy ] } + { CHAR: D [ [ digit? not ] satisfy ] } + { CHAR: s [ [ blank? ] satisfy ] } + { CHAR: S [ [ blank? not ] satisfy ] } + [ ] + } case ; + : 'escaped-char' - "\\" token any-char-parser &> ; + "\\" token any-char-parser &> [ escaped-char ] <@ ; : 'ordinary-char' - [ "*+?|(){}" member? not ] satisfy ; + [ "^*+?|(){}[]" member? not ] satisfy [ 1string token ] <@ ; : 'char' 'escaped-char' 'ordinary-char' <|> ; -: 'string' 'char' <+> [ >string token ] <@ ; +: 'string' 'char' <+> [ [ <&> ] reduce* ] <@ ; : exactly-n ( parser n -- parser' ) swap and-parser construct-boa ; @@ -55,41 +64,13 @@ C: group-result ] <@ ; : 'interval' - 'term' - "{" token - 'integer' &> - "," token <:&:> - 'integer' <:&:> - "}" token <& <&> [ - first2 dup length { - { 1 [ first exactly-n ] } - { 2 [ first2 dup integer? - [ nip at-most-n ] - [ drop at-least-n ] if ] } - { 3 [ first3 nip from-m-to-n ] } - } case - ] <@ ; - -: 'character-range' - any-char-parser "-" token <& any-char-parser &> ; - -: 'character-class-inside' - any-char-parser - 'character-range' <|> ; - -: 'character-class-inclusive' - "[" token - 'character-class-inside' - "]" token ; - -: 'character-class-exclusive' - "[^" token - 'character-class-inside' - "]" token ; - -: 'character-class' - 'character-class-inclusive' - 'character-class-exclusive' <|> ; + 'term' "{" token <& 'integer' <&> "}" token <& [ first2 exactly-n ] <@ + 'term' "{" token <& 'integer' <&> "," token <& "}" token <& + [ first2 at-least-n ] <@ <|> + 'term' "{" token <& "," token <& 'integer' <&> "}" token <& + [ first2 at-most-n ] <@ <|> + 'term' "{" token <& 'integer' <&> "," token <& 'integer' <:&> "}" token <& + [ first3 from-m-to-n ] <@ <|> ; : 'repetition' 'term' @@ -113,7 +94,6 @@ LAZY: 'regexp' ( -- parser ) : 'regexp' just parse-1 ; - GENERIC: >regexp ( obj -- parser ) M: string >regexp 'regexp' just parse-1 ; M: object >regexp ; From 3a12daacfb4a7f9163d245a9eccac4752e9ec775 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Mon, 26 Nov 2007 16:11:32 -0600 Subject: [PATCH 090/285] x: Check for XOpenDisplay failure in "create" method of --- extra/x/x.factor | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extra/x/x.factor b/extra/x/x.factor index e55dc3f5cd..8d9f869fa3 100644 --- a/extra/x/x.factor +++ b/extra/x/x.factor @@ -29,7 +29,8 @@ define-independent-class "create" !( name -- display ) [ new-empty swap >>name - dup $name dup [ string>char-alien ] [ ] if XOpenDisplay >>ptr + dup $name dup [ string>char-alien ] [ ] if XOpenDisplay + dup [ >>ptr ] [ "XOpenDisplay error" throw ] if dup $ptr XDefaultScreen >>default-screen dup $ptr XDefaultRootWindow dupd new >>default-root dup $ptr over $default-screen XDefaultGC >>default-gc From 6476eb765ea4a7fe9cbfdb2943be305dae0b2ef9 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 11:57:08 +1300 Subject: [PATCH 091/285] remove parse-state from peg --- extra/peg/peg-tests.factor | 74 ++++++++++++++++---------------------- extra/peg/peg.factor | 27 +++----------- 2 files changed, 36 insertions(+), 65 deletions(-) diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index a60d1eaaf0..9becc81b56 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -8,144 +8,132 @@ IN: temporary 0 next-id set-global get-next-id get-next-id get-next-id ] unit-test -{ "0123456789" } [ - "0123456789" 0 0 state-tail parse-state-input >string -] unit-test - -{ "56789" } [ - "0123456789" 5 0 state-tail parse-state-input >string -] unit-test - -{ "789" } [ - "0123456789" 5 2 state-tail parse-state-input >string -] unit-test - { f } [ - "endbegin" 0 "begin" token parse + "endbegin" "begin" token parse ] unit-test { "begin" "end" } [ - "beginend" 0 "begin" token parse + "beginend" "begin" token parse { parse-result-ast parse-result-remaining } get-slots - parse-state-input >string + >string ] unit-test { f } [ - "" 0 CHAR: a CHAR: z range parse + "" CHAR: a CHAR: z range parse ] unit-test { f } [ - "1bcd" 0 CHAR: a CHAR: z range parse + "1bcd" CHAR: a CHAR: z range parse ] unit-test { CHAR: a } [ - "abcd" 0 CHAR: a CHAR: z range parse parse-result-ast + "abcd" CHAR: a CHAR: z range parse parse-result-ast ] unit-test { CHAR: z } [ - "zbcd" 0 CHAR: a CHAR: z range parse parse-result-ast + "zbcd" CHAR: a CHAR: z range parse parse-result-ast ] unit-test { f } [ - "bad" 0 "a" token "b" token 2array seq parse + "bad" "a" token "b" token 2array seq parse ] unit-test { V{ "g" "o" } } [ - "good" 0 "g" token "o" token 2array seq parse parse-result-ast + "good" "g" token "o" token 2array seq parse parse-result-ast ] unit-test { "a" } [ - "abcd" 0 "a" token "b" token 2array choice parse parse-result-ast + "abcd" "a" token "b" token 2array choice parse parse-result-ast ] unit-test { "b" } [ - "bbcd" 0 "a" token "b" token 2array choice parse parse-result-ast + "bbcd" "a" token "b" token 2array choice parse parse-result-ast ] unit-test { f } [ - "cbcd" 0 "a" token "b" token 2array choice parse + "cbcd" "a" token "b" token 2array choice parse ] unit-test { f } [ - "" 0 "a" token "b" token 2array choice parse + "" "a" token "b" token 2array choice parse ] unit-test { 0 } [ - "" 0 "a" token repeat0 parse parse-result-ast length + "" "a" token repeat0 parse parse-result-ast length ] unit-test { 0 } [ - "b" 0 "a" token repeat0 parse parse-result-ast length + "b" "a" token repeat0 parse parse-result-ast length ] unit-test { V{ "a" "a" "a" } } [ - "aaab" 0 "a" token repeat0 parse parse-result-ast + "aaab" "a" token repeat0 parse parse-result-ast ] unit-test { f } [ - "" 0 "a" token repeat1 parse + "" "a" token repeat1 parse ] unit-test { f } [ - "b" 0 "a" token repeat1 parse + "b" "a" token repeat1 parse ] unit-test { V{ "a" "a" "a" } } [ - "aaab" 0 "a" token repeat1 parse parse-result-ast + "aaab" "a" token repeat1 parse parse-result-ast ] unit-test { V{ "a" "b" } } [ - "ab" 0 "a" token optional "b" token 2array seq parse parse-result-ast + "ab" "a" token optional "b" token 2array seq parse parse-result-ast ] unit-test { V{ f "b" } } [ - "b" 0 "a" token optional "b" token 2array seq parse parse-result-ast + "b" "a" token optional "b" token 2array seq parse parse-result-ast ] unit-test { f } [ - "cb" 0 "a" token optional "b" token 2array seq parse + "cb" "a" token optional "b" token 2array seq parse ] unit-test { V{ CHAR: a CHAR: b } } [ - "ab" 0 "a" token ensure CHAR: a CHAR: z range dup 3array seq parse parse-result-ast + "ab" "a" token ensure CHAR: a CHAR: z range dup 3array seq parse parse-result-ast ] unit-test { f } [ - "bb" 0 "a" token ensure CHAR: a CHAR: z range 2array seq parse + "bb" "a" token ensure CHAR: a CHAR: z range 2array seq parse ] unit-test { t } [ - "a+b" 0 + "a+b" "a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq parse [ t ] [ f ] if ] unit-test { t } [ - "a++b" 0 + "a++b" "a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq parse [ t ] [ f ] if ] unit-test { t } [ - "a+b" 0 + "a+b" "a" token "+" token "++" token 2array choice "b" token 3array seq parse [ t ] [ f ] if ] unit-test { f } [ - "a++b" 0 + "a++b" "a" token "+" token "++" token 2array choice "b" token 3array seq parse [ t ] [ f ] if ] unit-test { 1 } [ - "a" 0 "a" token [ drop 1 ] action parse parse-result-ast + "a" "a" token [ drop 1 ] action parse parse-result-ast ] unit-test { V{ 1 1 } } [ - "aa" 0 "a" token [ drop 1 ] action dup 2array seq parse parse-result-ast + "aa" "a" token [ drop 1 ] action dup 2array seq parse parse-result-ast ] unit-test { f } [ - "b" 0 "a" token [ drop 1 ] action parse + "b" "a" token [ drop 1 ] action parse ] unit-test \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 2c985b68dc..34c17448fb 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -5,23 +5,6 @@ IN: peg SYMBOL: ignore -TUPLE: parse-state input cache ; - -: ( input index -- state ) - tail-slice { set-parse-state-input } parse-state construct ; - -: get-cached ( pid state -- result ) - tuck parse-state-cache at [ - swap parse-state-input slice-from swap nth - ] [ - drop f - ] if* ; - -: state-tail ( state n -- state ) - dupd [ parse-state-cache ] dipd - [ parse-state-input ] dip tail-slice - { set-parse-state-cache set-parse-state-input } parse-state construct ; - TUPLE: parse-result remaining ast ; : ( remaining ast -- parse-result ) @@ -42,8 +25,8 @@ GENERIC: parse ( state parser -- result ) TUPLE: token-parser symbol ; M: token-parser parse ( state parser -- result ) - token-parser-symbol 2dup >r parse-state-input r> head? [ - dup >r length state-tail r> + token-parser-symbol 2dup head? [ + dup >r length tail-slice r> ] [ 2drop f ] if ; @@ -54,12 +37,12 @@ M: token-parser parse ( state parser -- result ) TUPLE: range-parser min max ; M: range-parser parse ( state parser -- result ) - over parse-state-input empty? [ + over empty? [ 2drop f ] [ - 0 pick parse-state-input nth dup rot + 0 pick nth dup rot { range-parser-min range-parser-max } get-slots between? [ - [ 1 state-tail ] dip + [ 1 tail-slice ] dip ] [ 2drop f ] if From 50948ae9db8c6fb90bbca4f5d4f8f4be6ce07c5a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 26 Nov 2007 17:19:29 -0600 Subject: [PATCH 092/285] Add character classes, fails on one test case [^] Add lots of unit tests --- extra/regexp/regexp-tests.factor | 66 ++++++++++++++++++++++++++++++++ extra/regexp/regexp.factor | 54 ++++++++++++++++++++++---- 2 files changed, 112 insertions(+), 8 deletions(-) diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor index 597a4f5143..5ebd6dc4d3 100644 --- a/extra/regexp/regexp-tests.factor +++ b/extra/regexp/regexp-tests.factor @@ -29,6 +29,7 @@ IN: regexp-tests [ f ] [ "" "." matches? ] unit-test [ t ] [ "a" "." matches? ] unit-test [ t ] [ "." "." matches? ] unit-test +[ f ] [ "\n" "." matches? ] unit-test [ f ] [ "" ".+" matches? ] unit-test [ t ] [ "a" ".+" matches? ] unit-test @@ -75,3 +76,68 @@ IN: regexp-tests [ t ] [ "aaa" "a{1,3}" matches? ] unit-test [ f ] [ "aaaa" "a{1,3}" matches? ] unit-test +[ f ] [ "" "[a]" matches? ] unit-test +[ t ] [ "a" "[a]" matches? ] unit-test +[ t ] [ "a" "[abc]" matches? ] unit-test +[ f ] [ "b" "[a]" matches? ] unit-test +[ f ] [ "d" "[abc]" matches? ] unit-test +[ t ] [ "ab" "[abc]{1,2}" matches? ] unit-test +[ f ] [ "abc" "[abc]{1,2}" matches? ] unit-test + +[ f ] [ "" "[^a]" matches? ] unit-test +[ f ] [ "a" "[^a]" matches? ] unit-test +[ f ] [ "a" "[^abc]" matches? ] unit-test +[ t ] [ "b" "[^a]" matches? ] unit-test +[ t ] [ "d" "[^abc]" matches? ] unit-test +[ f ] [ "ab" "[^abc]{1,2}" matches? ] unit-test +[ f ] [ "abc" "[^abc]{1,2}" matches? ] unit-test + +[ t ] [ "]" "[]]" matches? ] unit-test +[ f ] [ "]" "[^]]" matches? ] unit-test + +[ "^" "[^]" matches? ] unit-test-fails +[ t ] [ "^" "[]^]" matches? ] unit-test +[ t ] [ "]" "[]^]" matches? ] unit-test + +[ t ] [ "[" "[[]" matches? ] unit-test +[ f ] [ "^" "[^^]" matches? ] unit-test +[ t ] [ "a" "[^^]" matches? ] unit-test + +[ t ] [ "-" "[-]" matches? ] unit-test +[ f ] [ "a" "[-]" matches? ] unit-test +[ f ] [ "-" "[^-]" matches? ] unit-test +[ t ] [ "a" "[^-]" matches? ] unit-test + +[ t ] [ "-" "[-a]" matches? ] unit-test +[ t ] [ "a" "[-a]" matches? ] unit-test +[ t ] [ "-" "[a-]" matches? ] unit-test +[ t ] [ "a" "[a-]" matches? ] unit-test +[ f ] [ "b" "[a-]" matches? ] unit-test +[ f ] [ "-" "[^-]" matches? ] unit-test +[ t ] [ "a" "[^-]" matches? ] unit-test + +[ f ] [ "-" "[a-c]" matches? ] unit-test +[ t ] [ "-" "[^a-c]" matches? ] unit-test +[ t ] [ "b" "[a-c]" matches? ] unit-test +[ f ] [ "b" "[^a-c]" matches? ] unit-test + +[ t ] [ "-" "[a-c-]" matches? ] unit-test +[ f ] [ "-" "[^a-c-]" matches? ] unit-test + +[ t ] [ "\\" "[\\\\]" matches? ] unit-test +[ f ] [ "a" "[\\\\]" matches? ] unit-test +[ f ] [ "\\" "[^\\\\]" matches? ] unit-test +[ t ] [ "a" "[^\\\\]" matches? ] unit-test + +[ t ] [ "0" "[\\d]" matches? ] unit-test +[ f ] [ "a" "[\\d]" matches? ] unit-test +[ f ] [ "0" "[^\\d]" matches? ] unit-test +[ t ] [ "a" "[^\\d]" matches? ] unit-test + +[ t ] [ "a" "[a-z]{1,}|[A-Z]{2,4}|b*|c|(f|g)*" matches? ] unit-test +[ t ] [ "a" "[a-z]{1,2}|[A-Z]{3,3}|b*|c|(f|g)*" matches? ] unit-test +[ t ] [ "a" "[a-z]{1,2}|[A-Z]{3,3}" matches? ] unit-test + +[ t ] [ "1000" "\\d{4,6}" matches? ] unit-test +! [ t ] [ "1000" "[0-9]{4,6}" matches? ] unit-test + diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index 02d66ee59b..8fdc1bed8b 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -1,6 +1,6 @@ USING: arrays combinators kernel lazy-lists math math.parser namespaces parser parser-combinators parser-combinators.simple -promises sequences sequences.lib strings ; +promises quotations sequences sequences.lib strings ; USING: continuations io prettyprint ; IN: regexp @@ -9,22 +9,29 @@ IN: regexp : escaped-char { - { CHAR: d [ [ digit? ] satisfy ] } - { CHAR: D [ [ digit? not ] satisfy ] } - { CHAR: s [ [ blank? ] satisfy ] } - { CHAR: S [ [ blank? not ] satisfy ] } - [ ] + { CHAR: d [ [ digit? ] ] } + { CHAR: D [ [ digit? not ] ] } + { CHAR: s [ [ blank? ] ] } + { CHAR: S [ [ blank? not ] ] } + { CHAR: \\ [ [ CHAR: \\ = ] ] } + [ "bad \\, use \\\\ to match a literal \\" throw ] } case ; : 'escaped-char' "\\" token any-char-parser &> [ escaped-char ] <@ ; +! Must escape to use as literals +! : meta-chars "[\\^$.|?*+()" ; + : 'ordinary-char' - [ "^*+?|(){}[]" member? not ] satisfy [ 1string token ] <@ ; + [ "\\^*+?|(){}[" member? not ] satisfy ; : 'char' 'escaped-char' 'ordinary-char' <|> ; -: 'string' 'char' <+> [ [ <&> ] reduce* ] <@ ; +: 'string' + 'char' <+> [ + [ dup quotation? [ satisfy ] [ 1token ] if ] [ <&> ] map-reduce + ] <@ ; : exactly-n ( parser n -- parser' ) swap and-parser construct-boa ; @@ -54,10 +61,41 @@ C: group-result 'regexp' [ [ ] <@ ] <@ ")" token <& &> ; +! Special cases: ]\\^- +: predicates>cond ( seq -- quot ) + #! Takes an array of quotation predicates/objects and makes a cond + #! Makes a predicate of each obj like so: [ dup obj = ] + #! Leaves quotations alone + #! The cond returns a boolean, t if one of the predicates matches + [ + dup callable? [ [ = ] curry ] unless + [ dup ] swap compose [ drop t ] 2array + ] map { [ t ] [ drop f ] } add [ cond ] curry ; + +: 'range' + any-char-parser "-" token <& any-char-parser <&> + [ first2 [ between? ] 2curry ] <@ ; + +: 'character-class-contents' + 'escaped-char' + 'range' <|> + [ "\\]" member? not ] satisfy <|> ; + +: 'character-class' + "[" token + "^" token 'character-class-contents' <+> <&:> + [ predicates>cond [ not ] compose satisfy ] <@ + "]" token [ first ] <@ 'character-class-contents' <*> <&:> + [ predicates>cond satisfy ] <@ <|> + 'character-class-contents' <+> [ predicates>cond satisfy ] <@ <|> + &> + "]" token <& ; + : 'term' 'any-char' 'string' <|> 'grouping' <|> + 'character-class' <|> <+> [ dup length 1 = [ first ] [ and-parser construct-boa ] if From a9333780a024ef6d0019d1b99a9dd8a5b32b16c0 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 26 Nov 2007 18:19:58 -0500 Subject: [PATCH 093/285] Add missing USE: --- extra/ui/x11/x11.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/ui/x11/x11.factor b/extra/ui/x11/x11.factor index 2b1a5ba331..5984e3decd 100755 --- a/extra/ui/x11/x11.factor +++ b/extra/ui/x11/x11.factor @@ -5,7 +5,7 @@ ui.clipboards ui.gadgets.worlds assocs kernel math namespaces opengl sequences strings x11.xlib x11.events x11.xim x11.glx x11.clipboard x11.constants x11.windows io.utf8 combinators debugger system command-line ui.render math.vectors tuples -opengl.gl ; +opengl.gl threads ; IN: ui.x11 TUPLE: x11-ui-backend ; From 6b3db4f05d33e19c73e102c83b3ab9d79f2a18ae Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 26 Nov 2007 18:20:10 -0500 Subject: [PATCH 094/285] Fix infinite recursion --- extra/xml/data/data.factor | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extra/xml/data/data.factor b/extra/xml/data/data.factor index 56e34b7db2..1850171537 100644 --- a/extra/xml/data/data.factor +++ b/extra/xml/data/data.factor @@ -65,6 +65,8 @@ M: attrs set-at M: attrs assoc-size length ; M: attrs new-assoc drop V{ } new ; +M: attrs assoc-find >r delegate r> assoc-find ; +M: attrs >alist delegate >alist ; : >attrs ( assoc -- attrs ) V{ } assoc-clone-like From 99b39e03511df0aa979cd1ad8daa0dd2f0e7561c Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 12:22:33 +1300 Subject: [PATCH 095/285] Some help for pegs --- extra/peg/peg-docs.factor | 108 +++++++++++++++++++++++++++++++++++-- extra/peg/peg-tests.factor | 2 +- extra/peg/peg.factor | 66 ++++++++++++----------- 3 files changed, 141 insertions(+), 35 deletions(-) diff --git a/extra/peg/peg-docs.factor b/extra/peg/peg-docs.factor index ec4a5d304d..40743132f3 100644 --- a/extra/peg/peg-docs.factor +++ b/extra/peg/peg-docs.factor @@ -2,10 +2,112 @@ ! See http://factorcode.org/license.txt for BSD license. USING: help.markup help.syntax peg ; +HELP: parse +{ $values + { "string" "a string" } + { "parse" "a parser" } + { "result" "a or f" } +} +{ $description + "Given the input string, parse it using the given parser. The result is a object if " + "the parse was successful, otherwise it is f." } ; + HELP: token { $values - { "string" "a string" } } + { "string" "a string" } + { "parser" "a parser" } +} { $description - "A parser generator that returns a parser that matches the given string." } -{ $example "\"begin foo end\" \"begin\" token parse" "result-here" } ; + "Returns a parser that matches the given string." } ; + +HELP: range +{ $values + { "min" "a character" } + { "max" "a character" } + { "parser" "a parser" } +} +{ $description + "Returns a parser that matches a single character that lies within the range of characters given, inclusive." } +{ $example ": digit ( -- parser ) CHAR: 0 CHAR: 9 range ;" } ; + +HELP: seq +{ $values + { "seq" "a sequence of parsers" } + { "parser" "a parser" } +} +{ $description + "Returns a parser that calls all parsers in the given sequence, in order. The parser succeeds if " + "all the parsers succeed, otherwise it fails. The AST produced is a sequence of the AST produced by " + "the individual parsers." } ; + +HELP: choice +{ $values + { "seq" "a sequence of parsers" } + { "parser" "a parser" } +} +{ $description + "Returns a parser that will try all the parsers in the sequence, in order, until one succeeds. " + "The resulting AST is that produced by the successful parser." } ; + +HELP: repeat0 +{ $values + { "p1" "a parser" } + { "p2" "a parser" } +} +{ $description + "Returns a parser that parses 0 or more instances of the 'p1' parser. The AST produced is " + "an array of the AST produced by the 'p1' parser. An empty array indicates 0 instances were " + "parsed." } ; + +HELP: repeat1 +{ $values + { "p1" "a parser" } + { "p2" "a parser" } +} +{ $description + "Returns a parser that parses 1 or more instances of the 'p1' parser. The AST produced is " + "an array of the AST produced by the 'p1' parser." } ; + +HELP: optional +{ $values + { "p1" "a parser" } + { "p2" "a parser" } +} +{ $description + "Returns a parser that parses 0 or 1 instances of the 'p1' parser. The AST produced is " + "'f' if 0 instances are parsed the AST produced is 'f', otherwise it is the AST produced by 'p1'." } ; + +HELP: ensure +{ $values + { "p1" "a parser" } + { "p2" "a parser" } +} +{ $description + "Returns a parser that succeeds if the 'p1' parser succeeds but does not add anything to the " + "AST and does not move the location in the input string. This can be used for lookahead and " + "disambiguation, along with the " { $link ensure-not } " word." } +{ $example "\"0\" token ensure octal-parser" } ; + +HELP: ensure-not +{ $values + { "p1" "a parser" } + { "p2" "a parser" } +} +{ $description + "Returns a parser that succeeds if the 'p1' parser fails but does not add anything to the " + "AST and does not move the location in the input string. This can be used for lookahead and " + "disambiguation, along with the " { $link ensure } " word." } +{ $example "\"+\" token \"=\" token ensure-not \"+=\" token 3array seq" } ; + +HELP: action +{ $values + { "p1" "a parser" } + { "quot" "a quotation with stack effect ( ast -- ast )" } +} +{ $description + "Returns a parser that calls the 'p1' parser and applies the quotation to the AST resulting " + "from that parse. The result of the quotation is then used as the final AST. This can be used " + "for manipulating the parse tree to produce a AST better suited for the task at hand rather than " + "the default AST." } +{ $example "CHAR: 0 CHAR: 9 range [ to-digit ] action" } ; diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index 9becc81b56..7648819a8c 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. ! -USING: kernel tools.test strings namespaces arrays sequences peg ; +USING: kernel tools.test strings namespaces arrays sequences peg peg.private ; IN: temporary { 0 1 2 } [ diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 34c17448fb..1fb8e7860d 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -3,10 +3,14 @@ USING: kernel sequences strings namespaces math assocs shuffle vectors combinators.lib ; IN: peg -SYMBOL: ignore - TUPLE: parse-result remaining ast ; +GENERIC: parse ( state parser -- result ) + + ( remaining ast -- parse-result ) parse-result construct-boa ; @@ -20,8 +24,6 @@ TUPLE: parser id ; : init-parser ( parser -- parser ) get-next-id parser construct-boa over set-delegate ; -GENERIC: parse ( state parser -- result ) - TUPLE: token-parser symbol ; M: token-parser parse ( state parser -- result ) @@ -31,9 +33,6 @@ M: token-parser parse ( state parser -- result ) 2drop f ] if ; -: token ( string -- parser ) - token-parser construct-boa init-parser ; - TUPLE: range-parser min max ; M: range-parser parse ( state parser -- result ) @@ -48,9 +47,6 @@ M: range-parser parse ( state parser -- result ) ] if ] if ; -: range ( min max -- parser ) - range-parser construct-boa init-parser ; - TUPLE: seq-parser parsers ; : do-seq-parser ( result parser -- result ) @@ -71,9 +67,6 @@ TUPLE: seq-parser parsers ; M: seq-parser parse ( state parser -- result ) seq-parser-parsers [ V{ } clone ] dip (seq-parser) ; -: seq ( seq -- parser ) - seq-parser construct-boa init-parser ; - TUPLE: choice-parser parsers ; : (choice-parser) ( state parsers -- result ) @@ -90,9 +83,6 @@ TUPLE: choice-parser parsers ; M: choice-parser parse ( state parser -- result ) choice-parser-parsers (choice-parser) ; -: choice ( seq -- parser ) - choice-parser construct-boa init-parser ; - TUPLE: repeat0-parser p1 ; : (repeat-parser) ( parser result -- result ) @@ -115,25 +105,16 @@ M: repeat0-parser parse ( state parser -- result ) drop V{ } clone ] if* ; -: repeat0 ( parser -- parser ) - repeat0-parser construct-boa init-parser ; - TUPLE: repeat1-parser p1 ; M: repeat1-parser parse ( state parser -- result ) repeat1-parser-p1 tuck parse dup [ clone-result (repeat-parser) ] [ nip ] if ; -: repeat1 ( parser -- parser ) - repeat1-parser construct-boa init-parser ; - TUPLE: optional-parser p1 ; M: optional-parser parse ( state parser -- result ) dupd optional-parser-p1 parse swap f or ; -: optional ( parser -- parser ) - optional-parser construct-boa init-parser ; - TUPLE: ensure-parser p1 ; M: ensure-parser parse ( state parser -- result ) @@ -143,9 +124,6 @@ M: ensure-parser parse ( state parser -- result ) drop f ] if ; -: ensure ( parser -- parser ) - ensure-parser construct-boa init-parser ; - TUPLE: ensure-not-parser p1 ; M: ensure-not-parser parse ( state parser -- result ) @@ -155,9 +133,6 @@ M: ensure-not-parser parse ( state parser -- result ) ignore ] if ; -: ensure-not ( parser -- parser ) - ensure-not-parser construct-boa init-parser ; - TUPLE: action-parser p1 quot ; M: action-parser parse ( state parser -- result ) @@ -168,5 +143,34 @@ M: action-parser parse ( state parser -- result ) nip ] if ; +PRIVATE> + +: token ( string -- parser ) + token-parser construct-boa init-parser ; + +: range ( min max -- parser ) + range-parser construct-boa init-parser ; + +: seq ( seq -- parser ) + seq-parser construct-boa init-parser ; + +: choice ( seq -- parser ) + choice-parser construct-boa init-parser ; + +: repeat0 ( parser -- parser ) + repeat0-parser construct-boa init-parser ; + +: repeat1 ( parser -- parser ) + repeat1-parser construct-boa init-parser ; + +: optional ( parser -- parser ) + optional-parser construct-boa init-parser ; + +: ensure ( parser -- parser ) + ensure-parser construct-boa init-parser ; + +: ensure-not ( parser -- parser ) + ensure-not-parser construct-boa init-parser ; + : action ( parser quot -- parser ) action-parser construct-boa init-parser ; From 1eed006a299117f268955ef253779f5cc48fdaa4 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 12:36:14 +1300 Subject: [PATCH 096/285] Add author information to peg --- extra/peg/authors.txt | 1 + extra/peg/summary.txt | 1 + 2 files changed, 2 insertions(+) create mode 100644 extra/peg/authors.txt create mode 100644 extra/peg/summary.txt diff --git a/extra/peg/authors.txt b/extra/peg/authors.txt new file mode 100644 index 0000000000..44b06f94bc --- /dev/null +++ b/extra/peg/authors.txt @@ -0,0 +1 @@ +Chris Double diff --git a/extra/peg/summary.txt b/extra/peg/summary.txt new file mode 100644 index 0000000000..324a544036 --- /dev/null +++ b/extra/peg/summary.txt @@ -0,0 +1 @@ +Parsing Expression Grammar and Packrat Parser From 2a5b65a912e867f12d2562ba53befc09ba937043 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 26 Nov 2007 17:38:24 -0600 Subject: [PATCH 097/285] Add 1token to parser combinators --- extra/parser-combinators/parser-combinators.factor | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index d6c44659a5..80d25c1bb7 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -32,6 +32,8 @@ M: token-parser parse ( input parser -- list ) 2drop nil ] if ; +: 1token ( n -- parser ) 1string token ; + TUPLE: satisfy-parser quot ; C: satisfy satisfy-parser ( quot -- parser ) From e6b6bb8a5c069349fb31e07fce0ff95bf526bbee Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 15:08:16 +1300 Subject: [PATCH 098/285] Add satisfy parser in peg --- extra/peg/peg-docs.factor | 9 +++++++++ extra/peg/peg-tests.factor | 8 ++++++++ extra/peg/peg.factor | 16 ++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/extra/peg/peg-docs.factor b/extra/peg/peg-docs.factor index 40743132f3..1ba30fe06e 100644 --- a/extra/peg/peg-docs.factor +++ b/extra/peg/peg-docs.factor @@ -20,6 +20,15 @@ HELP: token { $description "Returns a parser that matches the given string." } ; +HELP: satisfy +{ $values + { "quot" "a quotation" } + { "parser" "a parser" } +} +{ $description + "Returns a parser that calls the quotation on the first character of the input string, " + "succeeding if that quotation returns true. The AST is the character from the string." } ; + HELP: range { $values { "min" "a character" } diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index 7648819a8c..cea8dc6d3f 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -136,4 +136,12 @@ IN: temporary { f } [ "b" "a" token [ drop 1 ] action parse +] unit-test + +{ f } [ + "b" [ CHAR: a = ] satisfy parse +] unit-test + +{ CHAR: a } [ + "a" [ CHAR: a = ] satisfy parse parse-result-ast ] unit-test \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 1fb8e7860d..6dd3700291 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -33,6 +33,19 @@ M: token-parser parse ( state parser -- result ) 2drop f ] if ; +TUPLE: satisfy-parser quot ; + +M: satisfy-parser parse ( state parser -- result ) + over empty? [ + 2drop f + ] [ + satisfy-parser-quot [ unclip-slice dup ] dip call [ + + ] [ + 2drop f + ] if + ] if ; + TUPLE: range-parser min max ; M: range-parser parse ( state parser -- result ) @@ -148,6 +161,9 @@ PRIVATE> : token ( string -- parser ) token-parser construct-boa init-parser ; +: satisfy ( quot -- parser ) + satisfy-parser construct-boa init-parser ; + : range ( min max -- parser ) range-parser construct-boa init-parser ; From 055276ca25f896936719ff4e7ba01e0a3c63e01b Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 15:36:26 +1300 Subject: [PATCH 099/285] Add 'sp' parser to skip whitespace --- extra/peg/peg-docs.factor | 8 ++++++++ extra/peg/peg.factor | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/extra/peg/peg-docs.factor b/extra/peg/peg-docs.factor index 1ba30fe06e..bb610dce18 100644 --- a/extra/peg/peg-docs.factor +++ b/extra/peg/peg-docs.factor @@ -120,3 +120,11 @@ HELP: action "the default AST." } { $example "CHAR: 0 CHAR: 9 range [ to-digit ] action" } ; +HELP: sp +{ $values + { "p1" "a parser" } + { "parser" "a parser" } +} +{ $description + "Returns a parser that calls the original parser 'p1' after stripping any whitespace " + " from the left of the input string." } ; diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 6dd3700291..df492ddcf2 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -156,6 +156,18 @@ M: action-parser parse ( state parser -- result ) nip ] if ; +: left-trim-slice ( string -- string ) + #! Return a new string without any leading whitespace + #! from the original string. + dup empty? [ + dup first blank? [ 1 tail-slice left-trim-slice ] when + ] unless ; + +TUPLE: sp-parser p1 ; + +M: sp-parser parse ( state parser -- result ) + [ left-trim-slice ] dip sp-parser-p1 parse ; + PRIVATE> : token ( string -- parser ) @@ -190,3 +202,6 @@ PRIVATE> : action ( parser quot -- parser ) action-parser construct-boa init-parser ; + +: sp ( parser -- parser ) + sp-parser construct-boa init-parser ; From 5fb6af754b1fc451e929afa7342704d0a9f96660 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 15:45:00 +1300 Subject: [PATCH 100/285] Add hide combinator --- extra/peg/peg-docs.factor | 10 ++++++++++ extra/peg/peg-tests.factor | 19 ++++++++++++++++++- extra/peg/peg.factor | 3 +++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/extra/peg/peg-docs.factor b/extra/peg/peg-docs.factor index bb610dce18..9034b1c8fd 100644 --- a/extra/peg/peg-docs.factor +++ b/extra/peg/peg-docs.factor @@ -128,3 +128,13 @@ HELP: sp { $description "Returns a parser that calls the original parser 'p1' after stripping any whitespace " " from the left of the input string." } ; + +HELP: hide +{ $values + { "p1" "a parser" } + { "parser" "a parser" } +} +{ $description + "Returns a parser that succeeds if the original parser succeeds, but does not " + "put any result in the AST. Useful for ignoring 'syntax' in the AST." } +{ $example "\"[\" token hide number \"]\" token hide 3array seq" } ; diff --git a/extra/peg/peg-tests.factor b/extra/peg/peg-tests.factor index cea8dc6d3f..6a8d7429f3 100644 --- a/extra/peg/peg-tests.factor +++ b/extra/peg/peg-tests.factor @@ -144,4 +144,21 @@ IN: temporary { CHAR: a } [ "a" [ CHAR: a = ] satisfy parse parse-result-ast -] unit-test \ No newline at end of file +] unit-test + +{ "a" } [ + " a" "a" token sp parse parse-result-ast +] unit-test + +{ "a" } [ + "a" "a" token sp parse parse-result-ast +] unit-test + +{ V{ "a" } } [ + "[a]" "[" token hide "a" token "]" token hide 3array seq parse parse-result-ast +] unit-test + +{ f } [ + "a]" "[" token hide "a" token "]" token hide 3array seq parse +] unit-test + diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index df492ddcf2..fe2b551f78 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -205,3 +205,6 @@ PRIVATE> : sp ( parser -- parser ) sp-parser construct-boa init-parser ; + +: hide ( parser -- parser ) + [ drop ignore ] action ; From ea2d4ea261e7c0b2cf08bd386ccdbf4ebdb19f2b Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 15:56:26 +1300 Subject: [PATCH 101/285] Work on PL/0 Grammar as a PEG example --- extra/peg/pl0/authors.txt | 1 + extra/peg/pl0/pl0-tests.factor | 13 +++++++++++++ extra/peg/pl0/pl0.factor | 14 ++++++++++++++ extra/peg/pl0/summary.txt | 1 + 4 files changed, 29 insertions(+) create mode 100644 extra/peg/pl0/authors.txt create mode 100644 extra/peg/pl0/pl0-tests.factor create mode 100644 extra/peg/pl0/pl0.factor create mode 100644 extra/peg/pl0/summary.txt diff --git a/extra/peg/pl0/authors.txt b/extra/peg/pl0/authors.txt new file mode 100644 index 0000000000..44b06f94bc --- /dev/null +++ b/extra/peg/pl0/authors.txt @@ -0,0 +1 @@ +Chris Double diff --git a/extra/peg/pl0/pl0-tests.factor b/extra/peg/pl0/pl0-tests.factor new file mode 100644 index 0000000000..e40c984660 --- /dev/null +++ b/extra/peg/pl0/pl0-tests.factor @@ -0,0 +1,13 @@ +! Copyright (C) 2007 Chris Double. +! See http://factorcode.org/license.txt for BSD license. +! +USING: kernel tools.test peg peg.pl0 ; +IN: temporary + +{ "abc" } [ + "abc" 'ident' parse parse-result-ast +] unit-test + +{ 55 } [ + "55abc" 'number' parse parse-result-ast +] unit-test diff --git a/extra/peg/pl0/pl0.factor b/extra/peg/pl0/pl0.factor new file mode 100644 index 0000000000..3e33bbb959 --- /dev/null +++ b/extra/peg/pl0/pl0.factor @@ -0,0 +1,14 @@ +! Copyright (C) 2007 Chris Double. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel arrays strings math.parser peg ; +IN: peg.pl0 + +#! Grammar for PL/0 based on http://en.wikipedia.org/wiki/PL/0 + +: 'ident' ( -- parser ) + CHAR: a CHAR: z range + CHAR: A CHAR: Z range 2array choice repeat1 + [ >string ] action ; + +: 'number' ( -- parser ) + CHAR: 0 CHAR: 9 range repeat1 [ string>number ] action ; diff --git a/extra/peg/pl0/summary.txt b/extra/peg/pl0/summary.txt new file mode 100644 index 0000000000..59a20cf8c4 --- /dev/null +++ b/extra/peg/pl0/summary.txt @@ -0,0 +1 @@ +Grammar for PL/0 Language From e49d84ce97d4822b051367ebd04b4e2c7444d2ce Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 16:16:21 +1300 Subject: [PATCH 102/285] Add 'delay' parser to peg --- extra/peg/peg-docs.factor | 10 ++++++++++ extra/peg/peg.factor | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/extra/peg/peg-docs.factor b/extra/peg/peg-docs.factor index 9034b1c8fd..63b9d44310 100644 --- a/extra/peg/peg-docs.factor +++ b/extra/peg/peg-docs.factor @@ -138,3 +138,13 @@ HELP: hide "Returns a parser that succeeds if the original parser succeeds, but does not " "put any result in the AST. Useful for ignoring 'syntax' in the AST." } { $example "\"[\" token hide number \"]\" token hide 3array seq" } ; + +HELP: delay +{ $values + { "quot" "a quotation with stack effect ( -- parser )" } + { "parser" "a parser" } +} +{ $description + "Delays the construction of a parser until it is actually required to parse. This " + "allows for calling a parser that results in a recursive call to itself. The quotation " + "should return the constructed parser." } ; \ No newline at end of file diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index fe2b551f78..7cc5aec845 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -168,6 +168,11 @@ TUPLE: sp-parser p1 ; M: sp-parser parse ( state parser -- result ) [ left-trim-slice ] dip sp-parser-p1 parse ; +TUPLE: delay-parser quot ; + +M: delay-parser parse ( state parser -- result ) + delay-parser-quot call parse ; + PRIVATE> : token ( string -- parser ) @@ -208,3 +213,6 @@ PRIVATE> : hide ( parser -- parser ) [ drop ignore ] action ; + +: delay ( parser -- parser ) + delay-parser construct-boa init-parser ; From 9f2f45cd71d8a5023a756a72cc7764f376f8a8e5 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 16:45:32 +1300 Subject: [PATCH 103/285] More peg.pl0 additions This parser is currently really ugly. The goal is to tidy up peg so this parser looks more like the EBNF. --- extra/peg/pl0/pl0.factor | 46 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/extra/peg/pl0/pl0.factor b/extra/peg/pl0/pl0.factor index 3e33bbb959..8a01057bfb 100644 --- a/extra/peg/pl0/pl0.factor +++ b/extra/peg/pl0/pl0.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel arrays strings math.parser peg ; +USING: kernel arrays strings math.parser sequences peg ; IN: peg.pl0 #! Grammar for PL/0 based on http://en.wikipedia.org/wiki/PL/0 @@ -12,3 +12,47 @@ IN: peg.pl0 : 'number' ( -- parser ) CHAR: 0 CHAR: 9 range repeat1 [ string>number ] action ; + +DEFER: 'factor' + +: 'term' ( -- parser ) + 'factor' "*" token "/" token 2array choice sp 'factor' sp 2array seq repeat0 2array seq ; + +: 'expression' ( -- parser ) + [ "+" token "-" token 2array choice sp optional 'term' sp 2dup 2array seq repeat0 3array seq ] delay ; + +: 'factor' ( -- parser ) + 'ident' 'number' "(" token hide 'expression' sp ")" token sp hide 3array seq 3array choice ; + +: 'condition' ( -- parser ) + "odd" token 'expression' sp 2array seq + 'expression' { "=" "#" "<=" "<" ">=" ">" } [ token ] map choice sp 'expression' sp 3array seq + 2array choice ; + +: 'statement' ( -- parser ) + [ + 'ident' ":=" token sp 'expression' sp 3array seq + "call" token 'ident' sp 2array seq + "begin" token 'statement' sp ";" token sp 'statement' sp 2array seq repeat0 "end" token sp 4array seq + "if" token 'condition' sp "then" token sp 'statement' sp 4array seq + 4array choice + "while" token 'condition' sp "do" token sp 'statement' sp 4array seq + 2array choice optional + ] delay ; + +: 'block' ( -- parser ) + [ + "const" token 'ident' sp "=" token sp 'number' sp 4array seq + "," token sp 'ident' sp "=" token sp 'number' sp 4array seq repeat0 + ";" token sp 3array seq optional + + "var" token 'ident' sp "," token sp 'ident' sp 2array seq repeat0 + ";" token sp 4array seq optional + + "procedure" token 'ident' sp ";" token sp 'block' sp 4array seq ";" token sp 2array seq repeat0 'statement' sp 2array seq + + 3array seq + ] delay ; + +: 'program' ( -- parser ) + 'block' "." token sp 2array seq ; From 31d57422dacf41d9597978d4ae60f830b8930144 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Tue, 27 Nov 2007 18:13:36 +1300 Subject: [PATCH 104/285] Start of EBNF parser --- extra/peg/ebnf/authors.txt | 1 + extra/peg/ebnf/ebnf-tests.factor | 17 +++++++++ extra/peg/ebnf/ebnf.factor | 65 ++++++++++++++++++++++++++++++++ extra/peg/ebnf/summary.txt | 1 + extra/peg/peg.factor | 3 ++ 5 files changed, 87 insertions(+) create mode 100644 extra/peg/ebnf/authors.txt create mode 100644 extra/peg/ebnf/ebnf-tests.factor create mode 100644 extra/peg/ebnf/ebnf.factor create mode 100644 extra/peg/ebnf/summary.txt diff --git a/extra/peg/ebnf/authors.txt b/extra/peg/ebnf/authors.txt new file mode 100644 index 0000000000..44b06f94bc --- /dev/null +++ b/extra/peg/ebnf/authors.txt @@ -0,0 +1 @@ +Chris Double diff --git a/extra/peg/ebnf/ebnf-tests.factor b/extra/peg/ebnf/ebnf-tests.factor new file mode 100644 index 0000000000..f7af6f98d3 --- /dev/null +++ b/extra/peg/ebnf/ebnf-tests.factor @@ -0,0 +1,17 @@ +! Copyright (C) 2007 Chris Double. +! See http://factorcode.org/license.txt for BSD license. +! +USING: kernel tools.test peg peg.ebnf ; +IN: temporary + +{ T{ ebnf-non-terminal f "abc" } } [ + "abc" 'non-terminal' parse parse-result-ast +] unit-test + +{ T{ ebnf-terminal f "55" } } [ + "\"55\"" 'terminal' parse parse-result-ast +] unit-test + +! { } [ +! "digit = \"0\" | \"1\" | \"2\"" 'rule' parse parse-result-ast +! ] unit-test \ No newline at end of file diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor new file mode 100644 index 0000000000..c41e9d31a4 --- /dev/null +++ b/extra/peg/ebnf/ebnf.factor @@ -0,0 +1,65 @@ +! Copyright (C) 2007 Chris Double. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel arrays strings math.parser sequences namespaces peg ; +IN: peg.ebnf + +TUPLE: ebnf-non-terminal symbol ; +TUPLE: ebnf-terminal symbol ; +TUPLE: ebnf-choice options ; + +C: ebnf-non-terminal +C: ebnf-terminal +C: ebnf-choice + +GENERIC: ebnf-compile ( ast -- quot ) + +M: ebnf-terminal ebnf-compile ( ast -- quot ) + [ + ebnf-terminal-symbol , \ token , + ] [ ] make ; + +M: ebnf-choice ebnf-compile ( ast -- quot ) + [ + [ + ebnf-choice-options [ + ebnf-compile , + ] each + ] { } make , + [ call ] , \ map , + ] [ ] make ; + +DEFER: 'rhs' + +: 'non-terminal' ( -- parser ) + CHAR: a CHAR: z range repeat1 [ >string ] action ; + +: 'terminal' ( -- parser ) + "\"" token hide [ CHAR: " = not ] satisfy repeat1 "\"" token hide 3array seq [ first >string ] action ; + +: 'element' ( -- parser ) + 'non-terminal' 'terminal' 2array choice ; + +: 'sequence' ( -- parser ) + 'element' sp repeat1 ; + +: 'choice' ( -- parser ) + 'element' sp "|" token sp list-of [ ] action ; + +: 'repeat0' ( -- parser ) + "{" token sp hide + [ 'rhs' sp ] delay + "}" token sp hide + 3array seq ; + +: 'rhs' ( -- parser ) + 'repeat0' + 'choice' + 'sequence' + 'element' + 4array choice ; + +: 'rule' ( -- parser ) + 'non-terminal' + "=" token sp + 'rhs' + 3array seq ; diff --git a/extra/peg/ebnf/summary.txt b/extra/peg/ebnf/summary.txt new file mode 100644 index 0000000000..473cf4f3a2 --- /dev/null +++ b/extra/peg/ebnf/summary.txt @@ -0,0 +1 @@ +Grammar for parsing EBNF diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 7cc5aec845..a9e08f6024 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -216,3 +216,6 @@ PRIVATE> : delay ( parser -- parser ) delay-parser construct-boa init-parser ; + +: list-of ( items separator -- parser ) + hide over 2array seq repeat0 [ concat ] action 2array seq [ unclip 1vector swap first append ] action ; From ed359b66234c039f156427504e064df210520bd3 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 10:28:28 +1300 Subject: [PATCH 105/285] Syntax tree for ebnf --- extra/peg/ebnf/ebnf-tests.factor | 24 +++++++++++++++++++++--- extra/peg/ebnf/ebnf.factor | 28 ++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/extra/peg/ebnf/ebnf-tests.factor b/extra/peg/ebnf/ebnf-tests.factor index f7af6f98d3..0eeab7c4dc 100644 --- a/extra/peg/ebnf/ebnf-tests.factor +++ b/extra/peg/ebnf/ebnf-tests.factor @@ -12,6 +12,24 @@ IN: temporary "\"55\"" 'terminal' parse parse-result-ast ] unit-test -! { } [ -! "digit = \"0\" | \"1\" | \"2\"" 'rule' parse parse-result-ast -! ] unit-test \ No newline at end of file +{ + T{ ebnf-rule f + "digit" + T{ ebnf-choice f + V{ T{ ebnf-terminal f "1" } T{ ebnf-terminal f "2" } } + } + } +} [ + "digit = \"1\" | \"2\"" 'rule' parse parse-result-ast +] unit-test + +{ + T{ ebnf-rule f + "digit" + T{ ebnf-sequence f + V{ T{ ebnf-terminal f "1" } T{ ebnf-terminal f "2" } } + } + } +} [ + "digit = \"1\" \"2\"" 'rule' parse parse-result-ast +] unit-test \ No newline at end of file diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index c41e9d31a4..61eb7382c4 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -6,10 +6,14 @@ IN: peg.ebnf TUPLE: ebnf-non-terminal symbol ; TUPLE: ebnf-terminal symbol ; TUPLE: ebnf-choice options ; +TUPLE: ebnf-sequence elements ; +TUPLE: ebnf-rule symbol elements ; C: ebnf-non-terminal C: ebnf-terminal C: ebnf-choice +C: ebnf-sequence +C: ebnf-rule GENERIC: ebnf-compile ( ast -- quot ) @@ -25,7 +29,17 @@ M: ebnf-choice ebnf-compile ( ast -- quot ) ebnf-compile , ] each ] { } make , - [ call ] , \ map , + [ call ] , \ map , \ choice , + ] [ ] make ; + +M: ebnf-sequence ebnf-compile ( ast -- quot ) + [ + [ + ebnf-sequence-elements [ + ebnf-compile , + ] each + ] { } make , + [ call ] , \ map , \ seq , ] [ ] make ; DEFER: 'rhs' @@ -40,7 +54,9 @@ DEFER: 'rhs' 'non-terminal' 'terminal' 2array choice ; : 'sequence' ( -- parser ) - 'element' sp repeat1 ; + 'element' sp + "|" token sp ensure-not 2array seq [ first ] action + repeat1 [ ] action ; : 'choice' ( -- parser ) 'element' sp "|" token sp list-of [ ] action ; @@ -53,13 +69,13 @@ DEFER: 'rhs' : 'rhs' ( -- parser ) 'repeat0' - 'choice' 'sequence' + 'choice' 'element' 4array choice ; : 'rule' ( -- parser ) - 'non-terminal' - "=" token sp + 'non-terminal' [ ebnf-non-terminal-symbol ] action + "=" token sp hide 'rhs' - 3array seq ; + 3array seq [ first2 ] action ; From 38806885e639e6ca01b3c51bf8c4b0e4a7dc7109 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 11:07:17 +1300 Subject: [PATCH 106/285] Compile ebnf->factor --- extra/peg/ebnf/ebnf.factor | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 61eb7382c4..bb0e85c45a 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel arrays strings math.parser sequences namespaces peg ; +USING: kernel parser words arrays strings math.parser sequences namespaces peg ; IN: peg.ebnf TUPLE: ebnf-non-terminal symbol ; @@ -22,6 +22,11 @@ M: ebnf-terminal ebnf-compile ( ast -- quot ) ebnf-terminal-symbol , \ token , ] [ ] make ; +M: ebnf-non-terminal ebnf-compile ( ast -- quot ) + [ + ebnf-non-terminal-symbol in get lookup , + ] [ ] make ; + M: ebnf-choice ebnf-compile ( ast -- quot ) [ [ @@ -42,6 +47,12 @@ M: ebnf-sequence ebnf-compile ( ast -- quot ) [ call ] , \ map , \ seq , ] [ ] make ; +M: ebnf-rule ebnf-compile ( ast -- quot ) + [ + dup ebnf-rule-symbol , \ in , \ get , \ create , + ebnf-rule-elements ebnf-compile , \ define-compound , + ] [ ] make ; + DEFER: 'rhs' : 'non-terminal' ( -- parser ) From 16a0cc9eb1943469799a58ba9e0fc406d85a010c Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 11:25:34 +1300 Subject: [PATCH 107/285] add ebnf>quot --- extra/peg/ebnf/ebnf.factor | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index bb0e85c45a..a402a0fd73 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -8,12 +8,14 @@ TUPLE: ebnf-terminal symbol ; TUPLE: ebnf-choice options ; TUPLE: ebnf-sequence elements ; TUPLE: ebnf-rule symbol elements ; +TUPLE: ebnf rules ; C: ebnf-non-terminal C: ebnf-terminal C: ebnf-choice C: ebnf-sequence C: ebnf-rule +C: ebnf GENERIC: ebnf-compile ( ast -- quot ) @@ -24,7 +26,7 @@ M: ebnf-terminal ebnf-compile ( ast -- quot ) M: ebnf-non-terminal ebnf-compile ( ast -- quot ) [ - ebnf-non-terminal-symbol in get lookup , + ebnf-non-terminal-symbol , \ in , \ get , \ lookup , \ execute , ] [ ] make ; M: ebnf-choice ebnf-compile ( ast -- quot ) @@ -53,6 +55,13 @@ M: ebnf-rule ebnf-compile ( ast -- quot ) ebnf-rule-elements ebnf-compile , \ define-compound , ] [ ] make ; +M: ebnf ebnf-compile ( ast -- quot ) + [ + ebnf-rules [ + ebnf-compile % + ] each + ] [ ] make ; + DEFER: 'rhs' : 'non-terminal' ( -- parser ) @@ -90,3 +99,13 @@ DEFER: 'rhs' "=" token sp hide 'rhs' 3array seq [ first2 ] action ; + +: 'ebnf' ( -- parser ) + 'rule' sp ";" token sp hide list-of [ ] action ; + +: ebnf>quot ( string -- quot ) + 'ebnf' parse [ + parse-result-ast ebnf-compile + ] [ + f + ] if* ; \ No newline at end of file From 7a414869de3fad9315930ddcc6706632add45436 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 11:33:21 +1300 Subject: [PATCH 108/285] Support for repeat0 in ebnf --- extra/peg/ebnf/ebnf.factor | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index a402a0fd73..2f71ff961b 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -7,6 +7,7 @@ TUPLE: ebnf-non-terminal symbol ; TUPLE: ebnf-terminal symbol ; TUPLE: ebnf-choice options ; TUPLE: ebnf-sequence elements ; +TUPLE: ebnf-repeat0 group ; TUPLE: ebnf-rule symbol elements ; TUPLE: ebnf rules ; @@ -14,6 +15,7 @@ C: ebnf-non-terminal C: ebnf-terminal C: ebnf-choice C: ebnf-sequence +C: ebnf-repeat0 C: ebnf-rule C: ebnf @@ -49,6 +51,11 @@ M: ebnf-sequence ebnf-compile ( ast -- quot ) [ call ] , \ map , \ seq , ] [ ] make ; +M: ebnf-repeat0 ebnf-compile ( ast -- quot ) + [ + ebnf-repeat0-group ebnf-compile % \ repeat0 , + ] [ ] make ; + M: ebnf-rule ebnf-compile ( ast -- quot ) [ dup ebnf-rule-symbol , \ in , \ get , \ create , @@ -85,7 +92,7 @@ DEFER: 'rhs' "{" token sp hide [ 'rhs' sp ] delay "}" token sp hide - 3array seq ; + 3array seq [ first ] action ; : 'rhs' ( -- parser ) 'repeat0' From 88e93446b20b3d9a918bdf8e013fa6b5b641c02b Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 11:46:06 +1300 Subject: [PATCH 109/285] Add EBNF: word --- extra/peg/ebnf/ebnf.factor | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 2f71ff961b..5061e9ee3c 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -108,11 +108,13 @@ DEFER: 'rhs' 3array seq [ first2 ] action ; : 'ebnf' ( -- parser ) - 'rule' sp ";" token sp hide list-of [ ] action ; + 'rule' sp "." token sp hide list-of [ ] action ; : ebnf>quot ( string -- quot ) 'ebnf' parse [ parse-result-ast ebnf-compile ] [ f - ] if* ; \ No newline at end of file + ] if* ; + +: EBNF: ";" parse-tokens "" join ebnf>quot call ; parsing \ No newline at end of file From 4f0c40c05a191b03dc7d3df4bc0978ddebfd91bd Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 11:52:17 +1300 Subject: [PATCH 110/285] Change EBNF: to --- extra/peg/ebnf/ebnf.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 5061e9ee3c..8726581488 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -117,4 +117,4 @@ DEFER: 'rhs' f ] if* ; -: EBNF: ";" parse-tokens "" join ebnf>quot call ; parsing \ No newline at end of file +: " parse-tokens "" join ebnf>quot call ; parsing \ No newline at end of file From c455336da6012d85cfc4b182b331d0f00e4e4e3f Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 12:50:04 +1300 Subject: [PATCH 111/285] Add action rule to ebnf --- extra/peg/ebnf/ebnf.factor | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 8726581488..06e3c15163 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel parser words arrays strings math.parser sequences namespaces peg ; +USING: kernel parser words arrays strings math.parser sequences vectors namespaces peg ; IN: peg.ebnf TUPLE: ebnf-non-terminal symbol ; @@ -9,6 +9,7 @@ TUPLE: ebnf-choice options ; TUPLE: ebnf-sequence elements ; TUPLE: ebnf-repeat0 group ; TUPLE: ebnf-rule symbol elements ; +TUPLE: ebnf-action quot ; TUPLE: ebnf rules ; C: ebnf-non-terminal @@ -17,6 +18,7 @@ C: ebnf-choice C: ebnf-sequence C: ebnf-repeat0 C: ebnf-rule +C: ebnf-action C: ebnf GENERIC: ebnf-compile ( ast -- quot ) @@ -62,6 +64,19 @@ M: ebnf-rule ebnf-compile ( ast -- quot ) ebnf-rule-elements ebnf-compile , \ define-compound , ] [ ] make ; +M: ebnf-action ebnf-compile ( ast -- quot ) + [ + ebnf-action-quot , \ action , + ] [ ] make ; + +M: vector ebnf-compile ( ast -- quot ) + [ + [ ebnf-compile % ] each + ] [ ] make ; + +M: f ebnf-compile ( ast -- quot ) + drop [ ] ; + M: ebnf ebnf-compile ( ast -- quot ) [ ebnf-rules [ @@ -75,7 +90,7 @@ DEFER: 'rhs' CHAR: a CHAR: z range repeat1 [ >string ] action ; : 'terminal' ( -- parser ) - "\"" token hide [ CHAR: " = not ] satisfy repeat1 "\"" token hide 3array seq [ first >string ] action ; + "'" token hide [ CHAR: ' = not ] satisfy repeat1 "'" token hide 3array seq [ first >string ] action ; : 'element' ( -- parser ) 'non-terminal' 'terminal' 2array choice ; @@ -94,13 +109,20 @@ DEFER: 'rhs' "}" token sp hide 3array seq [ first ] action ; +: 'action' ( -- parser ) + "=>" token hide + "[" token sp hide + "]." token ensure-not [ drop t ] satisfy 2array seq [ first ] action repeat1 [ >string ] action + "]" token "." token ensure 2array seq sp hide + 4array seq [ "[ " swap first append " ]" append eval ] action ; + : 'rhs' ( -- parser ) 'repeat0' 'sequence' 'choice' - 'element' - 4array choice ; - + 'element' + 4array choice 'action' sp optional 2array seq ; + : 'rule' ( -- parser ) 'non-terminal' [ ebnf-non-terminal-symbol ] action "=" token sp hide @@ -117,4 +139,4 @@ DEFER: 'rhs' f ] if* ; -: " parse-tokens "" join ebnf>quot call ; parsing \ No newline at end of file +: " parse-tokens " " join dup . ebnf>quot call ; parsing \ No newline at end of file From e5e430be4f8defcaf80480371a22c5d59ae78ca5 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 12:52:05 +1300 Subject: [PATCH 112/285] Remove ebnf debug --- extra/peg/ebnf/ebnf.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 06e3c15163..343679ab9a 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -139,4 +139,4 @@ DEFER: 'rhs' f ] if* ; -: " parse-tokens " " join dup . ebnf>quot call ; parsing \ No newline at end of file +: " parse-tokens " " join ebnf>quot call ; parsing \ No newline at end of file From 35f96d1c8545ed38fb41dbf2349602ebca591201 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 13:03:16 +1300 Subject: [PATCH 113/285] Use words instead of quotations in ebnf actions --- extra/peg/ebnf/ebnf.factor | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 343679ab9a..cfbd4f9e23 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel parser words arrays strings math.parser sequences vectors namespaces peg ; +USING: kernel parser words arrays strings math.parser sequences quotations vectors namespaces peg ; IN: peg.ebnf TUPLE: ebnf-non-terminal symbol ; @@ -9,7 +9,7 @@ TUPLE: ebnf-choice options ; TUPLE: ebnf-sequence elements ; TUPLE: ebnf-repeat0 group ; TUPLE: ebnf-rule symbol elements ; -TUPLE: ebnf-action quot ; +TUPLE: ebnf-action word ; TUPLE: ebnf rules ; C: ebnf-non-terminal @@ -66,7 +66,7 @@ M: ebnf-rule ebnf-compile ( ast -- quot ) M: ebnf-action ebnf-compile ( ast -- quot ) [ - ebnf-action-quot , \ action , + ebnf-action-word search 1quotation , \ action , ] [ ] make ; M: vector ebnf-compile ( ast -- quot ) @@ -111,10 +111,8 @@ DEFER: 'rhs' : 'action' ( -- parser ) "=>" token hide - "[" token sp hide - "]." token ensure-not [ drop t ] satisfy 2array seq [ first ] action repeat1 [ >string ] action - "]" token "." token ensure 2array seq sp hide - 4array seq [ "[ " swap first append " ]" append eval ] action ; + [ blank? ] satisfy ensure-not [ drop t ] satisfy 2array seq [ first ] action repeat1 [ >string ] action sp + 2array seq [ first ] action ; : 'rhs' ( -- parser ) 'repeat0' From 28e9c0e6e062cab3a8ded3e0f1aa8b88b3956ebe Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 13:05:53 +1300 Subject: [PATCH 114/285] Fix ebnf tests --- extra/peg/ebnf/ebnf-tests.factor | 38 ++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/extra/peg/ebnf/ebnf-tests.factor b/extra/peg/ebnf/ebnf-tests.factor index 0eeab7c4dc..37b4867d34 100644 --- a/extra/peg/ebnf/ebnf-tests.factor +++ b/extra/peg/ebnf/ebnf-tests.factor @@ -9,27 +9,33 @@ IN: temporary ] unit-test { T{ ebnf-terminal f "55" } } [ - "\"55\"" 'terminal' parse parse-result-ast + "'55'" 'terminal' parse parse-result-ast +] unit-test + +{ + T{ ebnf-rule f + "digit" + V{ + T{ ebnf-choice f + V{ T{ ebnf-terminal f "1" } T{ ebnf-terminal f "2" } } + } + f + } + } +} [ + "digit = '1' | '2'" 'rule' parse parse-result-ast ] unit-test { T{ ebnf-rule f "digit" - T{ ebnf-choice f - V{ T{ ebnf-terminal f "1" } T{ ebnf-terminal f "2" } } + V{ + T{ ebnf-sequence f + V{ T{ ebnf-terminal f "1" } T{ ebnf-terminal f "2" } } + } + f } - } + } } [ - "digit = \"1\" | \"2\"" 'rule' parse parse-result-ast -] unit-test - -{ - T{ ebnf-rule f - "digit" - T{ ebnf-sequence f - V{ T{ ebnf-terminal f "1" } T{ ebnf-terminal f "2" } } - } - } -} [ - "digit = \"1\" \"2\"" 'rule' parse parse-result-ast + "digit = '1' '2'" 'rule' parse parse-result-ast ] unit-test \ No newline at end of file From 15b1533f20c91be419edd79f7fcef63775e1d243 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 15:14:11 +1300 Subject: [PATCH 115/285] Fix precedence between choice/sequence in ebnf --- extra/peg/ebnf/ebnf-tests.factor | 13 +++++++++++++ extra/peg/ebnf/ebnf.factor | 17 +++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/extra/peg/ebnf/ebnf-tests.factor b/extra/peg/ebnf/ebnf-tests.factor index 37b4867d34..56f0d63445 100644 --- a/extra/peg/ebnf/ebnf-tests.factor +++ b/extra/peg/ebnf/ebnf-tests.factor @@ -38,4 +38,17 @@ IN: temporary } } [ "digit = '1' '2'" 'rule' parse parse-result-ast +] unit-test + +{ + T{ ebnf-choice f + V{ + T{ ebnf-sequence f + V{ T{ ebnf-non-terminal f "one" } T{ ebnf-non-terminal f "two" } } + } + T{ ebnf-non-terminal f "three" } + } + } +} [ + "one two | three" 'choice' parse parse-result-ast ] unit-test \ No newline at end of file diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index cfbd4f9e23..9723316b33 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -97,12 +97,15 @@ DEFER: 'rhs' : 'sequence' ( -- parser ) 'element' sp - "|" token sp ensure-not 2array seq [ first ] action - repeat1 [ ] action ; - -: 'choice' ( -- parser ) - 'element' sp "|" token sp list-of [ ] action ; + repeat1 [ + dup length 1 = [ first ] [ ] if + ] action ; +: 'choice' ( -- parser ) + 'sequence' sp "|" token sp list-of [ + dup length 1 = [ first ] [ ] if + ] action ; + : 'repeat0' ( -- parser ) "{" token sp hide [ 'rhs' sp ] delay @@ -116,10 +119,8 @@ DEFER: 'rhs' : 'rhs' ( -- parser ) 'repeat0' - 'sequence' 'choice' - 'element' - 4array choice 'action' sp optional 2array seq ; + 2array choice 'action' sp optional 2array seq ; : 'rule' ( -- parser ) 'non-terminal' [ ebnf-non-terminal-symbol ] action From 0ef96c87d9a4085f9da25a6330c09964144826f7 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 15:26:25 +1300 Subject: [PATCH 116/285] Add grouping operators for ebnf --- extra/peg/ebnf/ebnf-tests.factor | 13 +++++++++++++ extra/peg/ebnf/ebnf.factor | 10 +++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/extra/peg/ebnf/ebnf-tests.factor b/extra/peg/ebnf/ebnf-tests.factor index 56f0d63445..13d0ce887e 100644 --- a/extra/peg/ebnf/ebnf-tests.factor +++ b/extra/peg/ebnf/ebnf-tests.factor @@ -51,4 +51,17 @@ IN: temporary } } [ "one two | three" 'choice' parse parse-result-ast +] unit-test + +{ + T{ ebnf-sequence f + V{ + T{ ebnf-non-terminal f "one" } + T{ ebnf-choice f + V{ T{ ebnf-non-terminal f "two" } T{ ebnf-non-terminal f "three" } } + } + } + } +} [ + "one (two | three)" 'choice' parse parse-result-ast ] unit-test \ No newline at end of file diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 9723316b33..4a1d7b341b 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -95,8 +95,16 @@ DEFER: 'rhs' : 'element' ( -- parser ) 'non-terminal' 'terminal' 2array choice ; +DEFER: 'choice' + +: 'group' ( -- parser ) + "(" token sp hide + [ 'choice' sp ] delay + ")" token sp hide + 3array seq [ first ] action ; + : 'sequence' ( -- parser ) - 'element' sp + 'element' sp 'group' sp 2array choice repeat1 [ dup length 1 = [ first ] [ ] if ] action ; From 3372ad8f685b87fb2e73fc2593429b75108d5345 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 15:27:35 +1300 Subject: [PATCH 117/285] Fix some peg breakage --- extra/peg/peg.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index a9e08f6024..5fa9435470 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel sequences strings namespaces math assocs shuffle vectors combinators.lib ; +USING: kernel sequences strings namespaces math assocs shuffle vectors arrays combinators.lib ; IN: peg TUPLE: parse-result remaining ast ; From d68a78c4a62c12552ca99aff83d5182ea1e0f23f Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 15:32:04 +1300 Subject: [PATCH 118/285] fix grouping of repeat0 in ebnf --- extra/peg/ebnf/ebnf-tests.factor | 20 ++++++++++++++++++++ extra/peg/ebnf/ebnf.factor | 18 ++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/extra/peg/ebnf/ebnf-tests.factor b/extra/peg/ebnf/ebnf-tests.factor index 13d0ce887e..a19bc0188c 100644 --- a/extra/peg/ebnf/ebnf-tests.factor +++ b/extra/peg/ebnf/ebnf-tests.factor @@ -64,4 +64,24 @@ IN: temporary } } [ "one (two | three)" 'choice' parse parse-result-ast +] unit-test + +{ + T{ ebnf-sequence f + V{ + T{ ebnf-non-terminal f "one" } + T{ ebnf-repeat0 f + T{ ebnf-sequence f + V{ + T{ ebnf-choice f + V{ T{ ebnf-non-terminal f "two" } T{ ebnf-non-terminal f "three" } } + } + T{ ebnf-non-terminal f "four" } + } + } + } + } + } +} [ + "one {(two | three) four}" 'choice' parse parse-result-ast ] unit-test \ No newline at end of file diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 4a1d7b341b..352390c5cc 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -103,8 +103,14 @@ DEFER: 'choice' ")" token sp hide 3array seq [ first ] action ; +: 'repeat0' ( -- parser ) + "{" token sp hide + [ 'choice' sp ] delay + "}" token sp hide + 3array seq [ first ] action ; + : 'sequence' ( -- parser ) - 'element' sp 'group' sp 2array choice + 'element' sp 'group' sp 'repeat0' sp 3array choice repeat1 [ dup length 1 = [ first ] [ ] if ] action ; @@ -114,21 +120,13 @@ DEFER: 'choice' dup length 1 = [ first ] [ ] if ] action ; -: 'repeat0' ( -- parser ) - "{" token sp hide - [ 'rhs' sp ] delay - "}" token sp hide - 3array seq [ first ] action ; - : 'action' ( -- parser ) "=>" token hide [ blank? ] satisfy ensure-not [ drop t ] satisfy 2array seq [ first ] action repeat1 [ >string ] action sp 2array seq [ first ] action ; : 'rhs' ( -- parser ) - 'repeat0' - 'choice' - 2array choice 'action' sp optional 2array seq ; + 'choice' 'action' sp optional 2array seq ; : 'rule' ( -- parser ) 'non-terminal' [ ebnf-non-terminal-symbol ] action From e0adc1a7fa609f325d0a7f53a842209ac5636a41 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 15:49:14 +1300 Subject: [PATCH 119/285] Add optional to ebnf --- extra/peg/ebnf/ebnf-tests.factor | 14 +++++++++++++- extra/peg/ebnf/ebnf.factor | 18 ++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/extra/peg/ebnf/ebnf-tests.factor b/extra/peg/ebnf/ebnf-tests.factor index a19bc0188c..a308b9af52 100644 --- a/extra/peg/ebnf/ebnf-tests.factor +++ b/extra/peg/ebnf/ebnf-tests.factor @@ -84,4 +84,16 @@ IN: temporary } } [ "one {(two | three) four}" 'choice' parse parse-result-ast -] unit-test \ No newline at end of file +] unit-test + +{ + T{ ebnf-sequence f + V{ + T{ ebnf-non-terminal f "one" } + T{ ebnf-optional f T{ ebnf-non-terminal f "two" } } + T{ ebnf-non-terminal f "three" } + } + } +} [ + "one [ two ] three" 'choice' parse parse-result-ast +] unit-test diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 352390c5cc..00615ccb51 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -8,6 +8,7 @@ TUPLE: ebnf-terminal symbol ; TUPLE: ebnf-choice options ; TUPLE: ebnf-sequence elements ; TUPLE: ebnf-repeat0 group ; +TUPLE: ebnf-optional elements ; TUPLE: ebnf-rule symbol elements ; TUPLE: ebnf-action word ; TUPLE: ebnf rules ; @@ -17,6 +18,7 @@ C: ebnf-terminal C: ebnf-choice C: ebnf-sequence C: ebnf-repeat0 +C: ebnf-optional C: ebnf-rule C: ebnf-action C: ebnf @@ -30,7 +32,8 @@ M: ebnf-terminal ebnf-compile ( ast -- quot ) M: ebnf-non-terminal ebnf-compile ( ast -- quot ) [ - ebnf-non-terminal-symbol , \ in , \ get , \ lookup , \ execute , + [ ebnf-non-terminal-symbol , \ search , \ execute , ] [ ] make + , \ delay , ] [ ] make ; M: ebnf-choice ebnf-compile ( ast -- quot ) @@ -58,6 +61,11 @@ M: ebnf-repeat0 ebnf-compile ( ast -- quot ) ebnf-repeat0-group ebnf-compile % \ repeat0 , ] [ ] make ; +M: ebnf-optional ebnf-compile ( ast -- quot ) + [ + ebnf-optional-elements ebnf-compile % \ optional , + ] [ ] make ; + M: ebnf-rule ebnf-compile ( ast -- quot ) [ dup ebnf-rule-symbol , \ in , \ get , \ create , @@ -109,8 +117,14 @@ DEFER: 'choice' "}" token sp hide 3array seq [ first ] action ; +: 'optional' ( -- parser ) + "[" token sp hide + [ 'choice' sp ] delay + "]" token sp hide + 3array seq [ first ] action ; + : 'sequence' ( -- parser ) - 'element' sp 'group' sp 'repeat0' sp 3array choice + 'element' sp 'group' sp 'repeat0' sp 'optional' sp 4array choice repeat1 [ dup length 1 = [ first ] [ ] if ] action ; From d3ac10aefc8aaaf61e4eca27492d625a8d68cb6f Mon Sep 17 00:00:00 2001 From: Chris Double Date: Wed, 28 Nov 2007 16:07:23 +1300 Subject: [PATCH 120/285] Redo PL/0 parser using ebnf --- extra/peg/ebnf/ebnf.factor | 4 +-- extra/peg/pl0/pl0.factor | 65 +++++++++++--------------------------- 2 files changed, 20 insertions(+), 49 deletions(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 00615ccb51..4c4c8cd0cc 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -27,12 +27,12 @@ GENERIC: ebnf-compile ( ast -- quot ) M: ebnf-terminal ebnf-compile ( ast -- quot ) [ - ebnf-terminal-symbol , \ token , + ebnf-terminal-symbol , \ token , \ sp , ] [ ] make ; M: ebnf-non-terminal ebnf-compile ( ast -- quot ) [ - [ ebnf-non-terminal-symbol , \ search , \ execute , ] [ ] make + [ ebnf-non-terminal-symbol , \ search , \ execute , \ sp , ] [ ] make , \ delay , ] [ ] make ; diff --git a/extra/peg/pl0/pl0.factor b/extra/peg/pl0/pl0.factor index 8a01057bfb..b37009238d 100644 --- a/extra/peg/pl0/pl0.factor +++ b/extra/peg/pl0/pl0.factor @@ -1,58 +1,29 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel arrays strings math.parser sequences peg ; +USING: kernel arrays strings math.parser sequences peg peg.ebnf ; IN: peg.pl0 #! Grammar for PL/0 based on http://en.wikipedia.org/wiki/PL/0 - -: 'ident' ( -- parser ) +: ident ( -- parser ) CHAR: a CHAR: z range CHAR: A CHAR: Z range 2array choice repeat1 [ >string ] action ; -: 'number' ( -- parser ) +: number ( -- parser ) CHAR: 0 CHAR: 9 range repeat1 [ string>number ] action ; -DEFER: 'factor' - -: 'term' ( -- parser ) - 'factor' "*" token "/" token 2array choice sp 'factor' sp 2array seq repeat0 2array seq ; - -: 'expression' ( -- parser ) - [ "+" token "-" token 2array choice sp optional 'term' sp 2dup 2array seq repeat0 3array seq ] delay ; - -: 'factor' ( -- parser ) - 'ident' 'number' "(" token hide 'expression' sp ")" token sp hide 3array seq 3array choice ; - -: 'condition' ( -- parser ) - "odd" token 'expression' sp 2array seq - 'expression' { "=" "#" "<=" "<" ">=" ">" } [ token ] map choice sp 'expression' sp 3array seq - 2array choice ; - -: 'statement' ( -- parser ) - [ - 'ident' ":=" token sp 'expression' sp 3array seq - "call" token 'ident' sp 2array seq - "begin" token 'statement' sp ";" token sp 'statement' sp 2array seq repeat0 "end" token sp 4array seq - "if" token 'condition' sp "then" token sp 'statement' sp 4array seq - 4array choice - "while" token 'condition' sp "do" token sp 'statement' sp 4array seq - 2array choice optional - ] delay ; - -: 'block' ( -- parser ) - [ - "const" token 'ident' sp "=" token sp 'number' sp 4array seq - "," token sp 'ident' sp "=" token sp 'number' sp 4array seq repeat0 - ";" token sp 3array seq optional - - "var" token 'ident' sp "," token sp 'ident' sp 2array seq repeat0 - ";" token sp 4array seq optional - - "procedure" token 'ident' sp ";" token sp 'block' sp 4array seq ";" token sp 2array seq repeat0 'statement' sp 2array seq - - 3array seq - ] delay ; - -: 'program' ( -- parser ) - 'block' "." token sp 2array seq ; +=' | '>') expression . +expression = ['+' | '-'] term {('+' | '-') term } . +term = factor {('*' | '/') factor } . +factor = ident | number | '(' expression ')' +EBNF> From 937993720016e9cc95f11609d6b0ca83bae60ad5 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 28 Nov 2007 02:12:42 -0500 Subject: [PATCH 121/285] Globs --- extra/globs/authors.txt | 1 + extra/globs/globs-tests.factor | 18 ++++++++ extra/globs/globs.factor | 42 +++++++++++++++++++ extra/globs/summary.txt | 1 + .../parser-combinators.factor | 20 ++++++--- 5 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 extra/globs/authors.txt create mode 100644 extra/globs/globs-tests.factor create mode 100644 extra/globs/globs.factor create mode 100644 extra/globs/summary.txt diff --git a/extra/globs/authors.txt b/extra/globs/authors.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/extra/globs/authors.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/extra/globs/globs-tests.factor b/extra/globs/globs-tests.factor new file mode 100644 index 0000000000..8021128810 --- /dev/null +++ b/extra/globs/globs-tests.factor @@ -0,0 +1,18 @@ +IN: temporary +USING: tools.test globs ; + +[ f ] [ "abd" "fdf" glob-matches? ] unit-test +[ f ] [ "fdsafas" "?" glob-matches? ] unit-test +[ t ] [ "fdsafas" "*as" glob-matches? ] unit-test +[ t ] [ "fdsafas" "*a*" glob-matches? ] unit-test +[ t ] [ "fdsafas" "*a?" glob-matches? ] unit-test +[ t ] [ "fdsafas" "*?" glob-matches? ] unit-test +[ f ] [ "fdsafas" "*s?" glob-matches? ] unit-test +[ t ] [ "a" "[abc]" glob-matches? ] unit-test +[ f ] [ "a" "[^abc]" glob-matches? ] unit-test +[ t ] [ "d" "[^abc]" glob-matches? ] unit-test +[ f ] [ "foo.java" "*.{xml,txt}" glob-matches? ] unit-test +[ t ] [ "foo.txt" "*.{xml,txt}" glob-matches? ] unit-test +[ t ] [ "foo.xml" "*.{xml,txt}" glob-matches? ] unit-test +[ f ] [ "foo." "*.{,xml,txt}" glob-matches? ] unit-test +[ t ] [ "foo.{" "*.{" glob-matches? ] unit-test diff --git a/extra/globs/globs.factor b/extra/globs/globs.factor new file mode 100644 index 0000000000..bcc6b572fc --- /dev/null +++ b/extra/globs/globs.factor @@ -0,0 +1,42 @@ +! Copyright (C) 2007 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: parser-combinators regexp lazy-lists sequences kernel +promises ; +IN: globs + + [ token ] <@ ; + +: 'escaped-char' + "\\" token any-char-parser &> [ 1token ] <@ ; + +: 'escaped-string' + 'string' 'escaped-char' <|> ; + +DEFER: 'term' + +: 'glob' ( -- parser ) + 'term' <*> [ ] <@ ; + +: 'union' ( -- parser ) + 'glob' "," token nonempty-list-of "{" "}" surrounded-by + [ ] <@ ; + +LAZY: 'term' + 'union' + 'character-class' <|> + "?" token [ drop any-char-parser ] <@ <|> + "*" token [ drop any-char-parser <*> ] <@ <|> + 'escaped-string' <|> ; + +PRIVATE> + +: 'glob' just parse-1 just ; + +: glob-matches? ( input glob -- ? ) + parse nil? not ; diff --git a/extra/globs/summary.txt b/extra/globs/summary.txt new file mode 100644 index 0000000000..e97b9b28f7 --- /dev/null +++ b/extra/globs/summary.txt @@ -0,0 +1 @@ +Unix shell-style glob pattern matching diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index 80d25c1bb7..04032db19f 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -13,10 +13,10 @@ M: promise parse ( input parser -- list ) TUPLE: parse-result parsed unparsed ; : parse-1 ( input parser -- result ) - parse dup nil? [ - "Parse error" throw + dupd parse dup nil? [ + "Cannot parse " rot append throw ] [ - car parse-result-parsed + nip car parse-result-parsed ] if ; C: parse-result @@ -93,6 +93,9 @@ TUPLE: and-parser parsers ; 2array ] if and-parser construct-boa ; +: ( parsers -- parser ) + dup length 1 = [ first ] [ and-parser construct-boa ] if ; + : and-parser-parse ( list p1 -- list ) swap [ dup parse-result-unparsed rot parse @@ -111,15 +114,20 @@ M: and-parser parse ( input parser -- list ) and-parser-parsers unclip swapd parse [ [ and-parser-parse ] reduce ] 2curry promise ; -TUPLE: or-parser p1 p2 ; +TUPLE: or-parser parsers ; -C: <|> or-parser ( parser1 parser2 -- parser ) +: ( parsers -- parser ) + dup length 1 = [ first ] [ or-parser construct-boa ] if ; + +: <|> ( parser1 parser2 -- parser ) + 2array ; M: or-parser parse ( input parser1 -- list ) #! Return the combined list resulting from the parses #! of parser1 and parser2 being applied to the same #! input. This implements the choice parsing operator. - [ or-parser-p1 ] keep or-parser-p2 >r dupd parse swap r> parse lappend ; + or-parser-parsers 0 swap seq>list + [ parse ] lmap-with lconcat ; : left-trim-slice ( string -- string ) #! Return a new string without any leading whitespace From 2332fd746eba96e7221013e21f17713291969089 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 28 Nov 2007 02:13:02 -0500 Subject: [PATCH 122/285] Tweak :edit command --- extra/ui/tools/debugger/debugger.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/ui/tools/debugger/debugger.factor b/extra/ui/tools/debugger/debugger.factor index 0e7addb157..a7c173799a 100644 --- a/extra/ui/tools/debugger/debugger.factor +++ b/extra/ui/tools/debugger/debugger.factor @@ -52,7 +52,7 @@ debugger "gestures" f { \ :help H{ { +nullary+ t } { +listener+ t } } define-command -\ :edit H{ { +nullary+ t } } define-command +\ :edit H{ { +nullary+ t } { +listener+ t } } define-command debugger "toolbar" f { { T{ key-down f f "s" } com-traceback } From 022cce01c24c069db78ce25e0497cfb7f14ff4aa Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 28 Nov 2007 02:13:11 -0500 Subject: [PATCH 123/285] Changelog for 0.91 --- extra/help/handbook/Untitled-15 | 57 +++++++++++++++++++++++++++ extra/help/handbook/handbook.factor | 61 ++++++++++++++++++++++++++++- 2 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 extra/help/handbook/Untitled-15 diff --git a/extra/help/handbook/Untitled-15 b/extra/help/handbook/Untitled-15 new file mode 100644 index 0000000000..20a5c621aa --- /dev/null +++ b/extra/help/handbook/Untitled-15 @@ -0,0 +1,57 @@ +{ $subheading "Performance" } +{ $list + { "Continuations are now supported by the static stack effect system. This means that the " { $link infer } " word and the optimizing compiler now both support code which uses continuations." } + { "Many words which previously ran in the interpreter, such as error handling and I/O, are now compiled to optimized machine code." } + { "A non-optimizing, just-in-time compiler replaces the interpreter with no loss in functionality or introspective ability." } + { "The non-optimizing compiler compiles quotations the first time they are called, generating a series of stack pushes and subroutine calls." } + { "The optimizing compiler now performs some more representation inference. Alien pointers are unboxed where possible. This improves performance of the " { $vocab-link "ogg.player" } " Ogg Theora video player considerably." } + { "The queue of sleeping tasks is now a sorted priority queue. This improves performance considerably when there is a large number of sleeping threads (Doug Coleman)" } + { "Improved hash code algorithm for sequences" } + { "New, efficient implementations of " { $link bit? } " and " { $link log2 } " runs in constant time for large bignums" } + { "New " { $link big-random } " word for generating large random numbers quickly" } + { "Improved profiler no longer has to be explicitly enabled and disabled with a recompile step; instead, the " { $link profile } " word can be used at any time, and it dynamically patches all words in the code heap to increment call counts. There is no overhead when the profiler is not in use." } +} +{ $subheading "IO" } +{ $list + { "The " { $link "stream-protocol" } " has changed" } + { "New " { $link os-envs } " word to get the current set of environment variables" } + { "Redesigned " { $vocab-link "io.launcher" } " supports passing environment variables to the child process" } + { { $link } " implemented on Windows (Doug Coleman)" } + { "More robust Windows CE native I/O" } + { "Updated " { $vocab-link "io.mmap" } " for new module system, now supports Windows CE (Doug Coleman)" } + { { $vocab-link "io.sniffer" } " - packet sniffer library (Doug Coleman, Elie Chaftari)" } + { { $vocab-link "io.server" } " - improved logging support, logs to a file by default" } + { { $vocab-link "io.files" } " - several new file system manipulation words added" } + { { $vocab-link "tar" } " - tar file extraction in pure Factor (Doug Coleman)" } + { { $vocab-link "unix.linux" } ", " { $vocab-link "raptor" } " - ``Raptor Linux'', a set of alien bindings to low-level Linux features, such as network interface configuration, file system mounting/unmounting, etc, together with experimental boot scripts intended to entirely replace " { $snippet "/sbin/init" } ", " { $vocab-link "/etc/inittab" } " and " { $snippet "/etc/init.d/" } "." } +} +{ $subheading "Tools" } +{ $list + { "Graphical deploy tool added - see " { $link "ui.tools.deploy" } } + { "The deploy tool now supports Windows" } + { { $vocab-link "network-clipboard" } " - clipboard synchronization with a simple TCP/IP protocol" } +} +{ $subheading "UI" } +{ $list + { { $vocab-link "cairo" } " - updated for new module system, new features (Sampo Vuori)" } + { { $vocab-link "springies" } " - physics simulation UI demo (Eduardo Cavazos)" } + { { $vocab-link "ui.gadgets.buttons" } " - added check box and radio button gadgets" } + { "Double- and triple-click-drag now supported in the editor gadget to select words or lines at a time" } + { "Windows can be closed on request now using " { $link close-window } } + { "New icons (Elie Chaftari)" } +} +{ $subheading "Other" } +{ $list + { "The " { $snippet "queues" } " vocabulary has been removed because its functionality is a subset of " { $vocab-link "dlists" } } + { "The " { $vocab-link "http.server.responder.cgi" } " vocabulary implements CGI support for the Factor HTTP server." } + { "The optimizing compiler no longer depends on the number tower and it is possible to bootstrap a minimal image by just passing " { $snippet "-include=compiler" } " to stage 2 bootstrap." } + { { $vocab-link "benchmarks.knucleotide" } " - new benchmark (Eric Mertens)" } + { { $vocab-link "channels" } " - concurrent message passing over message channels" } + { { $vocab-link "destructors" } " - deterministic scope-based resource deallocation (Doug Coleman)" } + { { $vocab-link "dlists" } " - various updates (Doug Coleman)" } + { { $vocab-link "editors.notepadpp" } " - Notepad++ integration (Doug Coleman)" } + { { $vocab-link "heaps" } " - updated for new module system and cleaned up (Doug Coleman)" } + { { $vocab-link "peg" } " - Parser Expression Grammars, a new appoach to parser construction, similar to parser combinators (Chris Double)" } + { { $vocab-link "regexp" } " - revived from " { $snippet "unmaintained/" } " and completely redesigned (Doug Coleman)" } + { { $vocab-link "tuple.lib" } " - some utility words for working with tuples (Doug Coleman)" } +} diff --git a/extra/help/handbook/handbook.factor b/extra/help/handbook/handbook.factor index d1b48d9955..ef25e91191 100755 --- a/extra/help/handbook/handbook.factor +++ b/extra/help/handbook/handbook.factor @@ -1,7 +1,7 @@ USING: help help.markup help.syntax help.topics namespaces words sequences classes assocs vocabs kernel arrays prettyprint.backend kernel.private io tools.browser -generic ; +generic math tools.profiler system ui ; IN: help.handbook ARTICLE: "conventions" "Conventions" @@ -222,6 +222,63 @@ ARTICLE: "handbook" "Factor documentation" USING: io.files io.sockets float-arrays inference ; ARTICLE: "changes" "Changes in the latest release" +{ $heading "Factor 0.91" } +{ $subheading "Performance" } +{ $list + { "Continuations are now supported by the static stack effect system. This means that the " { $link infer } " word and the optimizing compiler now both support code which uses continuations." } + { "Many words which previously ran in the interpreter, such as error handling and I/O, are now compiled to optimized machine code." } + { "A non-optimizing, just-in-time compiler replaces the interpreter with no loss in functionality or introspective ability." } + { "The non-optimizing compiler compiles quotations the first time they are called, generating a series of stack pushes and subroutine calls. It offers a 33%-50% performance increase over the interpreter." } + { "The optimizing compiler now performs some more representation inference. Alien pointers are unboxed where possible. This improves performance of the " { $vocab-link "ogg.player" } " Ogg Theora video player." } + { "The queue of sleeping tasks is now a sorted priority queue. This reduces overhead for workloads involving large numbers of sleeping threads (Doug Coleman)" } + { "Improved hash code algorithm for sequences" } + { "New, efficient implementations of " { $link bit? } " and " { $link log2 } " runs in constant time for large bignums" } + { "New " { $link big-random } " word for generating large random numbers quickly" } + { "Improved profiler no longer has to be explicitly enabled and disabled with a full recompile; instead, the " { $link profile } " word can be used at any time, and it dynamically patches words to increment call counts. There is no overhead when the profiler is not in use." } +} +{ $subheading "IO" } +{ $list + { "More robust Windows CE native I/O" } + { "New " { $link os-envs } " word to get the current set of environment variables" } + { "Redesigned " { $vocab-link "io.launcher" } " supports passing environment variables to the child process" } + { { $link } " implemented on Windows (Doug Coleman)" } + { "Updated " { $vocab-link "io.mmap" } " for new module system, now supports Windows CE (Doug Coleman)" } + { { $vocab-link "io.sniffer" } " - packet sniffer library (Doug Coleman, Elie Chaftari)" } + { { $vocab-link "io.server" } " - improved logging support, logs to a file by default" } + { { $vocab-link "io.files" } " - several new file system manipulation words added" } + { { $vocab-link "tar" } " - tar file extraction in pure Factor (Doug Coleman)" } + { { $vocab-link "unix.linux" } ", " { $vocab-link "raptor" } " - ``Raptor Linux'', a set of alien bindings to low-level Linux features, such as network interface configuration, file system mounting/unmounting, etc, together with experimental boot scripts intended to entirely replace " { $snippet "/sbin/init" } ", " { $vocab-link "/etc/inittab" } " and " { $snippet "/etc/init.d/" } " (Eduardo Cavazos)." } +} +{ $subheading "Tools" } +{ $list + { "Graphical deploy tool added - see " { $link "ui.tools.deploy" } } + { "The deploy tool now supports Windows" } + { { $vocab-link "network-clipboard" } " - clipboard synchronization with a simple TCP/IP protocol" } +} +{ $subheading "UI" } +{ $list + { { $vocab-link "cairo" } " - updated for new module system, new features (Sampo Vuori)" } + { { $vocab-link "springies" } " - physics simulation UI demo (Eduardo Cavazos)" } + { { $vocab-link "ui.gadgets.buttons" } " - added check box and radio button gadgets" } + { "Double- and triple-click-drag now supported in the editor gadget to select words or lines at a time" } + { "Windows can be closed on request now using " { $link close-window } } + { "New icons (Elie Chaftari)" } +} +{ $subheading "Other" } +{ $list + { "The " { $snippet "queues" } " vocabulary has been removed because its functionality is a subset of " { $vocab-link "dlists" } } + { "The " { $vocab-link "webapps.cgi" } " vocabulary implements CGI support for the Factor HTTP server." } + { "The optimizing compiler no longer depends on the number tower and it is possible to bootstrap a minimal image by just passing " { $snippet "-include=compiler" } " to stage 2 bootstrap." } + { { $vocab-link "benchmark.knucleotide" } " - new benchmark (Eric Mertens)" } + { { $vocab-link "channels" } " - concurrent message passing over message channels" } + { { $vocab-link "destructors" } " - deterministic scope-based resource deallocation (Doug Coleman)" } + { { $vocab-link "dlists" } " - various updates (Doug Coleman)" } + { { $vocab-link "editors.notepadpp" } " - Notepad++ integration (Doug Coleman)" } + { { $vocab-link "heaps" } " - updated for new module system and cleaned up (Doug Coleman)" } + { { $vocab-link "peg" } " - Parser Expression Grammars, a new appoach to parser construction, similar to parser combinators (Chris Double)" } + { { $vocab-link "regexp" } " - revived from " { $snippet "unmaintained/" } " and completely redesigned (Doug Coleman)" } + { { $vocab-link "tuple.lib" } " - some utility words for working with tuples (Doug Coleman)" } +} { $heading "Factor 0.90" } { $subheading "Core" } { $list @@ -249,7 +306,7 @@ ARTICLE: "changes" "Changes in the latest release" "Most existing libraries were improved when ported to the new module system; the most notable changes include:" { $list { { $vocab-link "asn1" } ": ASN1 parser and writer. (Elie Chaftari)" } - { { $vocab-link "benchmarks" } ": new set of benchmarks." } + { { $vocab-link "benchmark" } ": new set of benchmarks." } { { $vocab-link "cfdg" } ": Context-free design grammar implementation; see " { $url "http://www.chriscoyne.com/cfdg/" } ". (Eduardo Cavazos)" } { { $vocab-link "cryptlib" } ": Cryptlib library binding. (Elie Chaftari)" } { { $vocab-link "cryptlib.streams" } ": Streams which perform SSL encryption and decryption. (Matthew Willis)" } From cafefa868724728215c6c8ff23853cd873a0adf2 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Wed, 28 Nov 2007 10:49:43 -0500 Subject: [PATCH 124/285] extra/delegate module, defining consultation and mimicry --- extra/delegate/author.txt | 1 + extra/delegate/delegate-docs.factor | 52 ++++++++++++++++++++ extra/delegate/delegate-tests.factor | 26 ++++++++++ extra/delegate/delegate.factor | 73 ++++++++++++++++++++++++++++ extra/delegate/summary.txt | 1 + 5 files changed, 153 insertions(+) create mode 100644 extra/delegate/author.txt create mode 100644 extra/delegate/delegate-docs.factor create mode 100644 extra/delegate/delegate-tests.factor create mode 100644 extra/delegate/delegate.factor create mode 100644 extra/delegate/summary.txt diff --git a/extra/delegate/author.txt b/extra/delegate/author.txt new file mode 100644 index 0000000000..f990dd0ed2 --- /dev/null +++ b/extra/delegate/author.txt @@ -0,0 +1 @@ +Daniel Ehrenberg diff --git a/extra/delegate/delegate-docs.factor b/extra/delegate/delegate-docs.factor new file mode 100644 index 0000000000..5ceeac42bb --- /dev/null +++ b/extra/delegate/delegate-docs.factor @@ -0,0 +1,52 @@ +USING: delegate help.syntax help.markup ; + +HELP: define-protocol +{ $values { "wordlist" "a sequence of words" } { "protocol" "a word for the new protocol" } } +{ $description "Defines a symbol as a protocol." } +{ $notes "Usually, " { $link POSTPONE: PROTOCOL: } " should be used instead. This is only for runtime use." } ; + +HELP: PROTOCOL: +{ $syntax "PROTOCOL: protocol-name words... ;" } +{ $description "Defines an explicit protocol, which can be used as a basis for delegation or mimicry." } ; + +{ define-protocol POSTPONE: PROTOCOL: } related-words + +HELP: define-consult +{ $values { "class" "a class" } { "group" "a protocol, generic word or tuple class" } { "quot" "a quotation" } } +{ $description "Defines a class to consult, using the given quotation, on the generic words contained in the group." } +{ $notes "Usually, " { $link POSTPONE: CONSULT: } " should be used instead. This is only for runtime use." } ; + +HELP: CONSULT: +{ $syntax "CONSULT: group class getter... ;" } +{ $values { "group" "a protocol, generic word or tuple class" } { "class" "a class" } { "getter" "code to get where the method should be forwarded" } } +{ $description "Defines a class to consult, using the given code, on the generic words contained in the group. This means that, when one of the words in the group is called on an object of this class, the quotation will be called, and then the generic word called again. If the getter is empty, this will cause an infinite loop. Consultation overwrites the existing methods, but others can be defined afterwards." } ; + +{ define-consult POSTPONE: CONSULT: } related-words + +HELP: define-mimic +{ $values { "group" "a protocol, generic word or tuple class" } { "mimicker" "a class" } { "mimicked" "a class" } } +{ $description "For the generic words in the group, the given mimicker copies the methods of the mimicked. This only works for the methods that have already been defined when the word is called." } +{ $notes "Usually, " { $link POSTPONE: MIMIC: } " should be used instead. This is only for runtime use." } ; + +HELP: MIMIC: +{ $syntax "MIMIC: group mimicker mimicked" } +{ $values { "group" "a protocol, generic word or tuple class" } { "mimicker" "a class" } { "mimicked" "a class" } } +{ $description "For the generic words in the group, the given mimicker copies the methods of the mimicked. This only works for the methods that have already been defined when the syntax is used. Mimicking overwrites existing methods." } ; + +HELP: group-words +{ $values { "group" "a group" } { "words" "an array of words" } } +{ $description "Given a protocol, generic word or tuple class, this returns the corresponding generic words that this group contains." } ; + +ARTICLE: { "delegate" "intro" } "Delegation module" +"This vocabulary defines methods for consultation and mimicry, independent of the current Factor object system; it is a replacement for Factor's builtin delegation system. Fundamental to the concept of generic word groups, which can be specific protocols, generic words or tuple slot accessors. Fundamentally, a group is a word which has a method for " { $link group-words } ". To define a group as a set of words, use" +{ $subsection POSTPONE: PROTOCOL: } +{ $subsection define-protocol } +"One method of object extension which this vocabulary defines is consultation. This is slightly different from the current Factor concept of delegation, in that instead of delegating for all generic words not implemented, only generic words included in a specific group are consulted. Additionally, instead of using a single hard-coded delegate slot, you can specify any quotation to execute in order to retrieve who to consult. The literal syntax and defining word are" +{ $subsection POSTPONE: CONSULT: } +{ $subsection define-consult } +"Another object extension mechanism is mimicry. This is the copying of methods in a group from one class to another. For certain applications, this is more appropriate than delegation, as it avoids the slicing problem. It is inappropriate for tuple slots, however. The literal syntax and defining word are" +{ $subsection POSTPONE: MIMIC: } +{ $subsection define-mimic } ; + +IN: delegate +ABOUT: { "delegate" "intro" } diff --git a/extra/delegate/delegate-tests.factor b/extra/delegate/delegate-tests.factor new file mode 100644 index 0000000000..01ef33b922 --- /dev/null +++ b/extra/delegate/delegate-tests.factor @@ -0,0 +1,26 @@ +USING: delegate kernel arrays tools.test ; + +TUPLE: hello this that ; +C: hello + +TUPLE: goodbye these those ; +C: goodbye + +GENERIC: foo ( x -- y ) +GENERIC: bar ( a -- b ) +PROTOCOL: baz foo bar ; + +CONSULT: baz goodbye goodbye-these ; +M: hello foo hello-this ; +M: hello bar dup hello? swap hello-that 2array ; + +GENERIC: bing ( c -- d ) +CONSULT: hello goodbye goodbye-these ; +M: hello bing dup hello? swap hello-that 2array ; +MIMIC: bing goodbye hello + +[ 1 { t 0 } ] [ 1 0 [ foo ] keep bar ] unit-test +[ { t 0 } ] [ 1 0 bing ] unit-test +[ 1 ] [ 1 0 f foo ] unit-test +[ { t 0 } ] [ 1 0 f bar ] unit-test +[ { f 0 } ] [ 1 0 f bing ] unit-test diff --git a/extra/delegate/delegate.factor b/extra/delegate/delegate.factor new file mode 100644 index 0000000000..c232354600 --- /dev/null +++ b/extra/delegate/delegate.factor @@ -0,0 +1,73 @@ +! Copyright (C) 2007 Daniel Ehrenberg +! See http://factorcode.org/license.txt for BSD license. +USING: parser generic kernel classes words slots io definitions +sequences sequences.private assocs prettyprint.sections arrays ; +IN: delegate + +: define-protocol ( wordlist protocol -- ) + swap { } like "protocol-words" set-word-prop ; + +: PROTOCOL: + CREATE dup reset-generic dup define-symbol + parse-definition swap define-protocol ; parsing + +PREDICATE: word protocol "protocol-words" word-prop ; + +GENERIC: group-words ( group -- words ) + +M: protocol group-words + "protocol-words" word-prop ; + +M: generic group-words + 1array ; + +M: tuple-class group-words + "slots" word-prop 1 tail ! The first slot is the delegate + ! 1 tail should be removed when the delegate slot is removed + dup [ slot-spec-reader ] map + swap [ slot-spec-writer ] map append ; + +: spin ( x y z -- z y x ) + swap rot ; + +: define-consult-method ( word class quot -- ) + pick add spin define-method ; + +: define-consult ( class group quot -- ) + >r group-words r> + swapd [ define-consult-method ] 2curry each ; + +: CONSULT: + scan-word scan-word parse-definition swapd define-consult ; parsing + +PROTOCOL: sequence-protocol + clone clone-like like new new-resizable nth nth-unsafe + set-nth set-nth-unsafe length immutable set-length lengthen ; + +PROTOCOL: assoc-protocol + at* assoc-size >alist assoc-find set-at + delete-at clear-assoc new-assoc assoc-like ; + +PROTOCOL: stream-protocol + stream-close stream-read1 stream-read stream-read-until + stream-flush stream-write1 stream-write stream-format + stream-nl make-span-stream make-block-stream stream-readln + make-cell-stream stream-write-table set-timeout ; + +PROTOCOL: definition-protocol + where set-where forget uses redefined* + synopsis* definer definition ; + +PROTOCOL: prettyprint-section-protocol + section-fits? indent-section? unindent-first-line? + newline-after? short-section? short-section long-section +
delegate>block add-section ; + +: define-mimic ( group mimicker mimicked -- ) + >r >r group-words r> r> [ + pick "methods" word-prop at method-def + spin define-method + ] 2curry each ; + +: MIMIC: + scan-word scan-word scan-word define-mimic ; parsing diff --git a/extra/delegate/summary.txt b/extra/delegate/summary.txt new file mode 100644 index 0000000000..ef49220ac4 --- /dev/null +++ b/extra/delegate/summary.txt @@ -0,0 +1 @@ +Delegation and mimicking on top of the Factor object system From b7c7541936ab2dade72493e6e7a1328c53f2f2a5 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Wed, 28 Nov 2007 13:56:21 -0500 Subject: [PATCH 125/285] Bug fix in define-mimic --- extra/delegate/delegate.factor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extra/delegate/delegate.factor b/extra/delegate/delegate.factor index c232354600..8dc3e3720e 100644 --- a/extra/delegate/delegate.factor +++ b/extra/delegate/delegate.factor @@ -65,8 +65,8 @@ PROTOCOL: prettyprint-section-protocol : define-mimic ( group mimicker mimicked -- ) >r >r group-words r> r> [ - pick "methods" word-prop at method-def - spin define-method + pick "methods" word-prop at + [ method-def spin define-method ] [ 3drop ] if* ] 2curry each ; : MIMIC: From ede01d8398b5c15e998ea429655a29b26ecba0fd Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 28 Nov 2007 14:04:29 -0500 Subject: [PATCH 126/285] Fixes --- core/kernel/kernel-docs.factor | 2 +- extra/tools/browser/browser-docs.factor | 4 ++++ extra/tools/browser/browser.factor | 4 ---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/kernel/kernel-docs.factor b/core/kernel/kernel-docs.factor index 84ee4fe5cf..de3c0ead3e 100644 --- a/core/kernel/kernel-docs.factor +++ b/core/kernel/kernel-docs.factor @@ -32,7 +32,7 @@ $nl { $subsection >r } { $subsection r> } "The top of the data stack is ``hidden'' between " { $link >r } " and " { $link r> } ":" -{ $example "1 2 3 >r .s r>" "2\n1" } +{ $example "1 2 3 >r .s r>" "1\n2" } "Words must not leave objects on the retain stack, nor expect values to be there on entry. The retain stack is for local storage within a word only, and occurrences of " { $link >r } " and " { $link r> } " must be balanced inside a single quotation. One exception is the following trick involving " { $link if } "; values may be pushed on the retain stack before the condition value is computed, as long as both branches of the " { $link if } " pop the values off the retain stack before returning:" { $code ": foo ( m ? n -- m+n/n )" diff --git a/extra/tools/browser/browser-docs.factor b/extra/tools/browser/browser-docs.factor index 61ad58f5b3..db0e5942f5 100644 --- a/extra/tools/browser/browser-docs.factor +++ b/extra/tools/browser/browser-docs.factor @@ -1,6 +1,10 @@ USING: help.markup help.syntax io strings ; IN: tools.browser +ARTICLE: "vocab-index" "Vocabulary index" +{ $tags,authors } +{ $describe-vocab "" } ; + ARTICLE: "tools.browser" "Vocabulary browser" "Getting and setting vocabulary meta-data:" { $subsection vocab-summary } diff --git a/extra/tools/browser/browser.factor b/extra/tools/browser/browser.factor index 5342022b54..97d3c968cb 100644 --- a/extra/tools/browser/browser.factor +++ b/extra/tools/browser/browser.factor @@ -303,10 +303,6 @@ C: vocab-author "Authors" $heading all-authors authors. ; -ARTICLE: "vocab-index" "Vocabulary index" -{ $tags,authors } -{ $describe-vocab "" } ; - M: vocab-spec article-title vocab-name " vocabulary" append ; M: vocab-spec article-name vocab-name ; From 33d38e2c3154a3f5097d310b9ae2ed374b77a09e Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 28 Nov 2007 14:39:45 -0500 Subject: [PATCH 127/285] Ooops --- extra/help/handbook/Untitled-15 | 57 --------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 extra/help/handbook/Untitled-15 diff --git a/extra/help/handbook/Untitled-15 b/extra/help/handbook/Untitled-15 deleted file mode 100644 index 20a5c621aa..0000000000 --- a/extra/help/handbook/Untitled-15 +++ /dev/null @@ -1,57 +0,0 @@ -{ $subheading "Performance" } -{ $list - { "Continuations are now supported by the static stack effect system. This means that the " { $link infer } " word and the optimizing compiler now both support code which uses continuations." } - { "Many words which previously ran in the interpreter, such as error handling and I/O, are now compiled to optimized machine code." } - { "A non-optimizing, just-in-time compiler replaces the interpreter with no loss in functionality or introspective ability." } - { "The non-optimizing compiler compiles quotations the first time they are called, generating a series of stack pushes and subroutine calls." } - { "The optimizing compiler now performs some more representation inference. Alien pointers are unboxed where possible. This improves performance of the " { $vocab-link "ogg.player" } " Ogg Theora video player considerably." } - { "The queue of sleeping tasks is now a sorted priority queue. This improves performance considerably when there is a large number of sleeping threads (Doug Coleman)" } - { "Improved hash code algorithm for sequences" } - { "New, efficient implementations of " { $link bit? } " and " { $link log2 } " runs in constant time for large bignums" } - { "New " { $link big-random } " word for generating large random numbers quickly" } - { "Improved profiler no longer has to be explicitly enabled and disabled with a recompile step; instead, the " { $link profile } " word can be used at any time, and it dynamically patches all words in the code heap to increment call counts. There is no overhead when the profiler is not in use." } -} -{ $subheading "IO" } -{ $list - { "The " { $link "stream-protocol" } " has changed" } - { "New " { $link os-envs } " word to get the current set of environment variables" } - { "Redesigned " { $vocab-link "io.launcher" } " supports passing environment variables to the child process" } - { { $link } " implemented on Windows (Doug Coleman)" } - { "More robust Windows CE native I/O" } - { "Updated " { $vocab-link "io.mmap" } " for new module system, now supports Windows CE (Doug Coleman)" } - { { $vocab-link "io.sniffer" } " - packet sniffer library (Doug Coleman, Elie Chaftari)" } - { { $vocab-link "io.server" } " - improved logging support, logs to a file by default" } - { { $vocab-link "io.files" } " - several new file system manipulation words added" } - { { $vocab-link "tar" } " - tar file extraction in pure Factor (Doug Coleman)" } - { { $vocab-link "unix.linux" } ", " { $vocab-link "raptor" } " - ``Raptor Linux'', a set of alien bindings to low-level Linux features, such as network interface configuration, file system mounting/unmounting, etc, together with experimental boot scripts intended to entirely replace " { $snippet "/sbin/init" } ", " { $vocab-link "/etc/inittab" } " and " { $snippet "/etc/init.d/" } "." } -} -{ $subheading "Tools" } -{ $list - { "Graphical deploy tool added - see " { $link "ui.tools.deploy" } } - { "The deploy tool now supports Windows" } - { { $vocab-link "network-clipboard" } " - clipboard synchronization with a simple TCP/IP protocol" } -} -{ $subheading "UI" } -{ $list - { { $vocab-link "cairo" } " - updated for new module system, new features (Sampo Vuori)" } - { { $vocab-link "springies" } " - physics simulation UI demo (Eduardo Cavazos)" } - { { $vocab-link "ui.gadgets.buttons" } " - added check box and radio button gadgets" } - { "Double- and triple-click-drag now supported in the editor gadget to select words or lines at a time" } - { "Windows can be closed on request now using " { $link close-window } } - { "New icons (Elie Chaftari)" } -} -{ $subheading "Other" } -{ $list - { "The " { $snippet "queues" } " vocabulary has been removed because its functionality is a subset of " { $vocab-link "dlists" } } - { "The " { $vocab-link "http.server.responder.cgi" } " vocabulary implements CGI support for the Factor HTTP server." } - { "The optimizing compiler no longer depends on the number tower and it is possible to bootstrap a minimal image by just passing " { $snippet "-include=compiler" } " to stage 2 bootstrap." } - { { $vocab-link "benchmarks.knucleotide" } " - new benchmark (Eric Mertens)" } - { { $vocab-link "channels" } " - concurrent message passing over message channels" } - { { $vocab-link "destructors" } " - deterministic scope-based resource deallocation (Doug Coleman)" } - { { $vocab-link "dlists" } " - various updates (Doug Coleman)" } - { { $vocab-link "editors.notepadpp" } " - Notepad++ integration (Doug Coleman)" } - { { $vocab-link "heaps" } " - updated for new module system and cleaned up (Doug Coleman)" } - { { $vocab-link "peg" } " - Parser Expression Grammars, a new appoach to parser construction, similar to parser combinators (Chris Double)" } - { { $vocab-link "regexp" } " - revived from " { $snippet "unmaintained/" } " and completely redesigned (Doug Coleman)" } - { { $vocab-link "tuple.lib" } " - some utility words for working with tuples (Doug Coleman)" } -} From 74e8fea55a7cebaf9a672108708d81c3ece8e71b Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Wed, 28 Nov 2007 15:33:58 -0500 Subject: [PATCH 128/285] Inverse change --- extra/inverse/inverse.factor | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/extra/inverse/inverse.factor b/extra/inverse/inverse.factor index 4d85318c1b..bc9a3f9f60 100644 --- a/extra/inverse/inverse.factor +++ b/extra/inverse/inverse.factor @@ -4,15 +4,6 @@ tuples namespaces vectors bit-arrays byte-arrays strings sbufs math.functions macros ; IN: inverse -: (repeat) ( from to quot -- ) - pick pick >= [ - 3drop - ] [ - [ swap >r call 1+ r> ] keep (repeat) - ] if ; inline - -: repeat ( n quot -- ) 0 -rot (repeat) ; inline - TUPLE: fail ; : fail ( -- * ) \ fail construct-empty throw ; M: fail summary drop "Unification failed" ; @@ -33,11 +24,6 @@ M: fail summary drop "Unification failed" ; >r dupd "pop-length" set-word-prop r> "pop-inverse" set-word-prop ; -DEFER: [undo] - -: make-inverse ( word -- quot ) - word-def [undo] ; - TUPLE: no-inverse word ; : no-inverse ( word -- * ) \ no-inverse construct-empty throw ; M: no-inverse summary @@ -70,9 +56,11 @@ M: no-inverse summary GENERIC: inverse ( revquot word -- revquot* quot ) +DEFER: [undo] + M: word inverse dup "inverse" word-prop [ ] - [ dup primitive? [ no-inverse ] [ make-inverse ] if ] ?if ; + [ dup primitive? [ no-inverse ] [ word-def [undo] ] if ] ?if ; : undo-literal ( object -- quot ) [ =/fail ] curry ; @@ -100,7 +88,7 @@ M: pop-inverse inverse MACRO: undo ( quot -- ) [undo] ; -! Inversions of selected words +! Inverse of selected words \ swap [ swap ] define-inverse \ dup [ [ =/fail ] keep ] define-inverse From 89bbd21362e4b268a0f55ef27a6e7d37b863ae52 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Thu, 29 Nov 2007 12:35:45 +1300 Subject: [PATCH 129/285] Add packrat caching to peg --- extra/peg/peg.factor | 64 +++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 5fa9435470..8940fc87c6 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -1,14 +1,16 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel sequences strings namespaces math assocs shuffle vectors arrays combinators.lib ; +USING: kernel sequences strings namespaces math assocs shuffle + vectors arrays combinators.lib ; IN: peg TUPLE: parse-result remaining ast ; -GENERIC: parse ( state parser -- result ) +GENERIC: (parse) ( state parser -- result ) ( remaining ast -- parse-result ) @@ -24,18 +26,48 @@ TUPLE: parser id ; : init-parser ( parser -- parser ) get-next-id parser construct-boa over set-delegate ; +: from ( slice-or-string -- index ) + dup slice? [ slice-from ] [ drop 0 ] if ; + +: get-cached ( input parser -- result ) + [ from ] dip parser-id packrat-cache get at at ; + +: put-cached ( result input parser -- ) + parser-id dup packrat-cache get at [ + nip + ] [ + H{ } clone dup >r swap packrat-cache get set-at r> + ] if* + [ from ] dip set-at ; + +PRIVATE> + +: parse ( input parser -- result ) + packrat-cache get [ + 2dup get-cached [ + [ (parse) dup ] 2keep put-cached + ] unless* + ] [ + (parse) + ] if ; + +: packrat-parse ( input parser -- result ) + H{ } clone packrat-cache [ parse ] with-variable ; + +r length tail-slice r> ] [ 2drop f ] if ; - + TUPLE: satisfy-parser quot ; -M: satisfy-parser parse ( state parser -- result ) +M: satisfy-parser (parse) ( state parser -- result ) over empty? [ 2drop f ] [ @@ -48,7 +80,7 @@ M: satisfy-parser parse ( state parser -- result ) TUPLE: range-parser min max ; -M: range-parser parse ( state parser -- result ) +M: range-parser (parse) ( state parser -- result ) over empty? [ 2drop f ] [ @@ -77,7 +109,7 @@ TUPLE: seq-parser parsers ; drop ] if ; -M: seq-parser parse ( state parser -- result ) +M: seq-parser (parse) ( state parser -- result ) seq-parser-parsers [ V{ } clone ] dip (seq-parser) ; TUPLE: choice-parser parsers ; @@ -93,7 +125,7 @@ TUPLE: choice-parser parsers ; ] if* ] if ; -M: choice-parser parse ( state parser -- result ) +M: choice-parser (parse) ( state parser -- result ) choice-parser-parsers (choice-parser) ; TUPLE: repeat0-parser p1 ; @@ -111,7 +143,7 @@ TUPLE: repeat0-parser p1 ; { parse-result-remaining parse-result-ast } get-slots 1vector ; -M: repeat0-parser parse ( state parser -- result ) +M: repeat0-parser (parse) ( state parser -- result ) repeat0-parser-p1 2dup parse [ nipd clone-result (repeat-parser) ] [ @@ -120,17 +152,17 @@ M: repeat0-parser parse ( state parser -- result ) TUPLE: repeat1-parser p1 ; -M: repeat1-parser parse ( state parser -- result ) +M: repeat1-parser (parse) ( state parser -- result ) repeat1-parser-p1 tuck parse dup [ clone-result (repeat-parser) ] [ nip ] if ; TUPLE: optional-parser p1 ; -M: optional-parser parse ( state parser -- result ) +M: optional-parser (parse) ( state parser -- result ) dupd optional-parser-p1 parse swap f or ; TUPLE: ensure-parser p1 ; -M: ensure-parser parse ( state parser -- result ) +M: ensure-parser (parse) ( state parser -- result ) dupd ensure-parser-p1 parse [ ignore ] [ @@ -139,7 +171,7 @@ M: ensure-parser parse ( state parser -- result ) TUPLE: ensure-not-parser p1 ; -M: ensure-not-parser parse ( state parser -- result ) +M: ensure-not-parser (parse) ( state parser -- result ) dupd ensure-not-parser-p1 parse [ drop f ] [ @@ -148,7 +180,7 @@ M: ensure-not-parser parse ( state parser -- result ) TUPLE: action-parser p1 quot ; -M: action-parser parse ( state parser -- result ) +M: action-parser (parse) ( state parser -- result ) tuck action-parser-p1 parse dup [ dup parse-result-ast rot action-parser-quot call swap [ set-parse-result-ast ] keep @@ -165,12 +197,12 @@ M: action-parser parse ( state parser -- result ) TUPLE: sp-parser p1 ; -M: sp-parser parse ( state parser -- result ) +M: sp-parser (parse) ( state parser -- result ) [ left-trim-slice ] dip sp-parser-p1 parse ; TUPLE: delay-parser quot ; -M: delay-parser parse ( state parser -- result ) +M: delay-parser (parse) ( state parser -- result ) delay-parser-quot call parse ; PRIVATE> From f94c280e06250a21c1a9b180dcc745fa15376385 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Thu, 29 Nov 2007 12:49:51 +1300 Subject: [PATCH 130/285] Fix pl0 tests --- extra/peg/pl0/pl0-tests.factor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extra/peg/pl0/pl0-tests.factor b/extra/peg/pl0/pl0-tests.factor index e40c984660..cec7b24cd0 100644 --- a/extra/peg/pl0/pl0-tests.factor +++ b/extra/peg/pl0/pl0-tests.factor @@ -5,9 +5,9 @@ USING: kernel tools.test peg peg.pl0 ; IN: temporary { "abc" } [ - "abc" 'ident' parse parse-result-ast + "abc" ident parse parse-result-ast ] unit-test { 55 } [ - "55abc" 'number' parse parse-result-ast + "55abc" number parse parse-result-ast ] unit-test From 0fb6ce87e2714cb8bea0ed5db6a2ad6d7178a58c Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Wed, 28 Nov 2007 22:52:22 -0500 Subject: [PATCH 131/285] RSS cleanups --- extra/rss/rss-tests.factor | 9 ++++++--- extra/rss/rss.factor | 29 +++++++++++++---------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/extra/rss/rss-tests.factor b/extra/rss/rss-tests.factor index 643c2ecf51..18aa8440b9 100644 --- a/extra/rss/rss-tests.factor +++ b/extra/rss/rss-tests.factor @@ -1,5 +1,9 @@ -USING: rss io.files tools.test ; -IN: temporary +USING: rss io kernel io.files tools.test ; + +: load-news-file ( filename -- feed ) + #! Load an news syndication file and process it, returning + #! it as an feed tuple. + read-feed ; [ T{ feed @@ -34,4 +38,3 @@ IN: temporary } } } ] [ "extra/rss/atom.xml" resource-path load-news-file ] unit-test -[ " & & hi" ] [ " & & hi" &>& ] unit-test diff --git a/extra/rss/rss.factor b/extra/rss/rss.factor index 458f09642f..8a9be3f9f6 100644 --- a/extra/rss/rss.factor +++ b/extra/rss/rss.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2006 Chris Double, Daniel Ehrenberg. ! See http://factorcode.org/license.txt for BSD license. IN: rss -USING: xml.utilities kernel promises parser-combinators assocs +USING: xml.utilities kernel assocs strings sequences xml.data xml.writer io.streams.string combinators xml xml.entities io.files io http.client namespaces xml.generator hashtables ; @@ -62,23 +62,17 @@ C: entry children>string ] map ; -: feed ( xml -- feed ) +: xml>feed ( xml -- feed ) dup name-tag { { "RDF" [ rss1.0 ] } { "rss" [ rss2.0 ] } { "feed" [ atom1.0 ] } } case ; -: read-feed ( string -- feed ) - ! &>& ! this will be uncommented when parser-combinators are fixed - [ string>xml ] with-html-entities feed ; +: read-feed ( stream -- feed ) + [ read-xml ] with-html-entities xml>feed ; -: load-news-file ( filename -- feed ) - #! Load an news syndication file and process it, returning - #! it as an feed tuple. - [ contents read-feed ] keep stream-close ; - -: news-get ( url -- feed ) +: download-feed ( url -- feed ) #! Retrieve an news syndication file, return as a feed tuple. http-get rot 200 = [ nip read-feed @@ -90,7 +84,7 @@ C: entry : simple-tag, ( content name -- ) [ , ] tag, ; -: (generate-atom) ( entry -- ) +: entry, ( entry -- ) "entry" [ dup entry-title "title" simple-tag, "link" over entry-link "href" associate contained*, @@ -98,9 +92,12 @@ C: entry entry-description "content" simple-tag, ] tag, ; -: generate-atom ( feed -- xml ) - "feed" [ +: feed>xml ( feed -- xml ) + "feed" { { "xmlns" "http://www.w3.org/2005/Atom" } } [ dup feed-title "title" simple-tag, "link" over feed-link "href" associate contained*, - feed-entries [ (generate-atom) ] each - ] make-xml ; + feed-entries [ entry, ] each + ] make-xml* ; + +: write-feed ( feed -- xml ) + feed>xml write-xml ; From a4461ae40834ca48418f9117dca72b99c9535f76 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Thu, 29 Nov 2007 17:24:02 +1300 Subject: [PATCH 132/285] Tidy up ebnf compilation --- extra/peg/ebnf/ebnf.factor | 147 +++++++++++++++++++++---------------- 1 file changed, 85 insertions(+), 62 deletions(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index 4c4c8cd0cc..fea31ce94b 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -1,6 +1,7 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel parser words arrays strings math.parser sequences quotations vectors namespaces peg ; +USING: kernel parser words arrays strings math.parser sequences + quotations vectors namespaces math assocs continuations peg ; IN: peg.ebnf TUPLE: ebnf-non-terminal symbol ; @@ -23,74 +24,77 @@ C: ebnf-rule C: ebnf-action C: ebnf -GENERIC: ebnf-compile ( ast -- quot ) +SYMBOL: parsers +SYMBOL: non-terminals +SYMBOL: last-parser -M: ebnf-terminal ebnf-compile ( ast -- quot ) +: reset-parser-generation ( -- ) + V{ } clone parsers set + H{ } clone non-terminals set + f last-parser set ; + +: store-parser ( parser -- number ) + parsers get [ push ] keep length 1- ; + +: get-parser ( index -- parser ) + parsers get nth ; + +: non-terminal-index ( name -- number ) + dup non-terminals get at [ + nip + ] [ + f store-parser [ swap non-terminals get set-at ] keep + ] if* ; + +GENERIC: (generate-parser) ( ast -- id ) + +: generate-parser ( ast -- id ) + (generate-parser) dup last-parser set ; + +M: ebnf-terminal (generate-parser) ( ast -- id ) + ebnf-terminal-symbol token sp store-parser ; + +M: ebnf-non-terminal (generate-parser) ( ast -- id ) [ - ebnf-terminal-symbol , \ token , \ sp , - ] [ ] make ; + ebnf-non-terminal-symbol dup non-terminal-index , + parsers get , \ nth , [ search ] [ 2drop f ] recover , \ or , + ] [ ] make delay sp store-parser ; -M: ebnf-non-terminal ebnf-compile ( ast -- quot ) - [ - [ ebnf-non-terminal-symbol , \ search , \ execute , \ sp , ] [ ] make - , \ delay , - ] [ ] make ; +M: ebnf-choice (generate-parser) ( ast -- id ) + ebnf-choice-options [ + generate-parser get-parser + ] map choice store-parser ; -M: ebnf-choice ebnf-compile ( ast -- quot ) - [ - [ - ebnf-choice-options [ - ebnf-compile , - ] each - ] { } make , - [ call ] , \ map , \ choice , - ] [ ] make ; +M: ebnf-sequence (generate-parser) ( ast -- id ) + ebnf-sequence-elements [ + generate-parser get-parser + ] map seq store-parser ; -M: ebnf-sequence ebnf-compile ( ast -- quot ) - [ - [ - ebnf-sequence-elements [ - ebnf-compile , - ] each - ] { } make , - [ call ] , \ map , \ seq , - ] [ ] make ; +M: ebnf-repeat0 (generate-parser) ( ast -- id ) + ebnf-repeat0-group generate-parser get-parser repeat0 store-parser ; -M: ebnf-repeat0 ebnf-compile ( ast -- quot ) - [ - ebnf-repeat0-group ebnf-compile % \ repeat0 , - ] [ ] make ; +M: ebnf-optional (generate-parser) ( ast -- id ) + ebnf-optional-elements generate-parser get-parser optional store-parser ; -M: ebnf-optional ebnf-compile ( ast -- quot ) - [ - ebnf-optional-elements ebnf-compile % \ optional , - ] [ ] make ; +M: ebnf-rule (generate-parser) ( ast -- id ) + dup ebnf-rule-symbol non-terminal-index swap + ebnf-rule-elements generate-parser get-parser ! nt-id body + swap [ parsers get set-nth ] keep ; -M: ebnf-rule ebnf-compile ( ast -- quot ) - [ - dup ebnf-rule-symbol , \ in , \ get , \ create , - ebnf-rule-elements ebnf-compile , \ define-compound , - ] [ ] make ; +M: ebnf-action (generate-parser) ( ast -- id ) + ebnf-action-word search 1quotation + last-parser get swap action generate-parser ; -M: ebnf-action ebnf-compile ( ast -- quot ) - [ - ebnf-action-word search 1quotation , \ action , - ] [ ] make ; +M: vector (generate-parser) ( ast -- id ) + [ generate-parser ] map peek ; -M: vector ebnf-compile ( ast -- quot ) - [ - [ ebnf-compile % ] each - ] [ ] make ; +M: f (generate-parser) ( ast -- id ) + drop last-parser get ; -M: f ebnf-compile ( ast -- quot ) - drop [ ] ; - -M: ebnf ebnf-compile ( ast -- quot ) - [ - ebnf-rules [ - ebnf-compile % - ] each - ] [ ] make ; +M: ebnf (generate-parser) ( ast -- id ) + ebnf-rules [ + generate-parser + ] map peek ; DEFER: 'rhs' @@ -124,7 +128,12 @@ DEFER: 'choice' 3array seq [ first ] action ; : 'sequence' ( -- parser ) - 'element' sp 'group' sp 'repeat0' sp 'optional' sp 4array choice + [ + 'element' sp , + 'group' sp , + 'repeat0' sp , + 'optional' sp , + ] { } make choice repeat1 [ dup length 1 = [ first ] [ ] if ] action ; @@ -133,12 +142,12 @@ DEFER: 'choice' 'sequence' sp "|" token sp list-of [ dup length 1 = [ first ] [ ] if ] action ; - + : 'action' ( -- parser ) "=>" token hide [ blank? ] satisfy ensure-not [ drop t ] satisfy 2array seq [ first ] action repeat1 [ >string ] action sp 2array seq [ first ] action ; - + : 'rhs' ( -- parser ) 'choice' 'action' sp optional 2array seq ; @@ -153,7 +162,21 @@ DEFER: 'choice' : ebnf>quot ( string -- quot ) 'ebnf' parse [ - parse-result-ast ebnf-compile + parse-result-ast [ + reset-parser-generation + generate-parser drop + [ + non-terminals get + [ + get-parser [ + swap , \ in , \ get , \ create , + 1quotation , \ define-compound , + ] [ + drop + ] if* + ] assoc-each + ] [ ] make + ] with-scope ] [ f ] if* ; From 8ad78b3d0f5ad6c501832ad018234523aa4b0775 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 28 Nov 2007 23:34:11 -0500 Subject: [PATCH 133/285] Importing extra/xmode (port of jEdit's 'XMode' syntax highlighting engine) --- extra/xmode/catalog/catalog-tests.factor | 9 + extra/xmode/catalog/catalog.factor | 55 + extra/xmode/code2html/code2html.factor | 45 + extra/xmode/code2html/stylesheet.css | 63 + .../keyword-map/keyword-map-tests.factor | 30 + extra/xmode/keyword-map/keyword-map.factor | 38 + extra/xmode/loader/loader.factor | 176 + extra/xmode/marker/context/context.factor | 19 + extra/xmode/marker/marker-tests.factor | 68 + extra/xmode/marker/marker.factor | 286 + extra/xmode/marker/state/state.factor | 65 + extra/xmode/modes/actionscript.xml | 829 ++ extra/xmode/modes/ada95.xml | 224 + extra/xmode/modes/antlr.xml | 98 + extra/xmode/modes/apacheconf.xml | 1007 +++ extra/xmode/modes/apdl.xml | 7536 +++++++++++++++++ extra/xmode/modes/applescript.xml | 280 + extra/xmode/modes/asp.xml | 518 ++ extra/xmode/modes/aspect-j.xml | 168 + extra/xmode/modes/assembly-m68k.xml | 508 ++ extra/xmode/modes/assembly-macro32.xml | 577 ++ extra/xmode/modes/assembly-mcs51.xml | 237 + extra/xmode/modes/assembly-parrot.xml | 138 + extra/xmode/modes/assembly-r2000.xml | 259 + extra/xmode/modes/assembly-x86.xml | 863 ++ extra/xmode/modes/awk.xml | 115 + extra/xmode/modes/b.xml | 203 + extra/xmode/modes/batch.xml | 172 + extra/xmode/modes/bbj.xml | 308 + extra/xmode/modes/bcel.xml | 320 + extra/xmode/modes/bibtex.xml | 960 +++ extra/xmode/modes/c.xml | 401 + extra/xmode/modes/catalog | 483 ++ extra/xmode/modes/chill.xml | 134 + extra/xmode/modes/cil.xml | 385 + extra/xmode/modes/clips.xml | 434 + extra/xmode/modes/cobol.xml | 998 +++ extra/xmode/modes/coldfusion.xml | 645 ++ extra/xmode/modes/cplusplus.xml | 122 + extra/xmode/modes/csharp.xml | 189 + extra/xmode/modes/css.xml | 679 ++ extra/xmode/modes/csv.xml | 140 + extra/xmode/modes/cvs-commit.xml | 25 + extra/xmode/modes/d.xml | 213 + extra/xmode/modes/django.xml | 136 + extra/xmode/modes/doxygen.xml | 313 + extra/xmode/modes/dsssl.xml | 153 + extra/xmode/modes/eiffel.xml | 115 + extra/xmode/modes/embperl.xml | 51 + extra/xmode/modes/erlang.xml | 266 + extra/xmode/modes/factor.xml | 99 + extra/xmode/modes/fhtml.xml | 25 + extra/xmode/modes/forth.xml | 153 + extra/xmode/modes/fortran.xml | 249 + extra/xmode/modes/foxpro.xml | 1858 ++++ extra/xmode/modes/freemarker.xml | 205 + extra/xmode/modes/gettext.xml | 58 + extra/xmode/modes/gnuplot.xml | 270 + extra/xmode/modes/groovy.xml | 262 + extra/xmode/modes/haskell.xml | 180 + extra/xmode/modes/hex.xml | 20 + extra/xmode/modes/hlsl.xml | 479 ++ extra/xmode/modes/htaccess.xml | 563 ++ extra/xmode/modes/html.xml | 174 + extra/xmode/modes/i4gl.xml | 665 ++ extra/xmode/modes/icon.xml | 198 + extra/xmode/modes/idl.xml | 106 + extra/xmode/modes/inform.xml | 205 + extra/xmode/modes/ini.xml | 20 + extra/xmode/modes/inno-setup.xml | 406 + extra/xmode/modes/interlis.xml | 262 + extra/xmode/modes/io.xml | 153 + extra/xmode/modes/java.xml | 273 + extra/xmode/modes/javacc.xml | 39 + extra/xmode/modes/javascript.xml | 572 ++ extra/xmode/modes/jcl.xml | 67 + extra/xmode/modes/jhtml.xml | 144 + extra/xmode/modes/jmk.xml | 67 + extra/xmode/modes/jsp.xml | 257 + extra/xmode/modes/latex.xml | 2361 ++++++ extra/xmode/modes/lilypond.xml | 819 ++ extra/xmode/modes/lisp.xml | 1038 +++ extra/xmode/modes/literate-haskell.xml | 37 + extra/xmode/modes/lotos.xml | 125 + extra/xmode/modes/lua.xml | 238 + extra/xmode/modes/mail.xml | 35 + extra/xmode/modes/makefile.xml | 101 + extra/xmode/modes/maple.xml | 735 ++ extra/xmode/modes/ml.xml | 180 + extra/xmode/modes/modula3.xml | 178 + extra/xmode/modes/moin.xml | 111 + extra/xmode/modes/mqsc.xml | 231 + extra/xmode/modes/myghty.xml | 130 + extra/xmode/modes/mysql.xml | 244 + extra/xmode/modes/netrexx.xml | 414 + extra/xmode/modes/nqc.xml | 219 + extra/xmode/modes/nsis2.xml | 480 ++ extra/xmode/modes/objective-c.xml | 119 + extra/xmode/modes/objectrexx.xml | 246 + extra/xmode/modes/occam.xml | 260 + extra/xmode/modes/omnimark.xml | 455 + extra/xmode/modes/pascal.xml | 221 + extra/xmode/modes/patch.xml | 18 + extra/xmode/modes/perl.xml | 732 ++ extra/xmode/modes/php.xml | 4832 +++++++++++ extra/xmode/modes/pike.xml | 242 + extra/xmode/modes/pl-sql.xml | 502 ++ extra/xmode/modes/pl1.xml | 597 ++ extra/xmode/modes/pop11.xml | 262 + extra/xmode/modes/postscript.xml | 97 + extra/xmode/modes/povray.xml | 518 ++ extra/xmode/modes/powerdynamo.xml | 464 + extra/xmode/modes/progress.xml | 3748 ++++++++ extra/xmode/modes/prolog.xml | 195 + extra/xmode/modes/props.xml | 27 + extra/xmode/modes/psp.xml | 126 + extra/xmode/modes/ptl.xml | 32 + extra/xmode/modes/pvwave.xml | 722 ++ extra/xmode/modes/pyrex.xml | 38 + extra/xmode/modes/python.xml | 396 + extra/xmode/modes/quake.xml | 485 ++ extra/xmode/modes/rcp.xml | 318 + extra/xmode/modes/rd.xml | 70 + extra/xmode/modes/rebol.xml | 546 ++ extra/xmode/modes/redcode.xml | 126 + extra/xmode/modes/relax-ng-compact.xml | 74 + extra/xmode/modes/rest.xml | 135 + extra/xmode/modes/rfc.xml | 28 + extra/xmode/modes/rhtml.xml | 108 + extra/xmode/modes/rib.xml | 219 + extra/xmode/modes/rpmspec.xml | 130 + extra/xmode/modes/rtf.xml | 20 + extra/xmode/modes/ruby.xml | 462 + extra/xmode/modes/rview.xml | 217 + extra/xmode/modes/sas.xml | 318 + extra/xmode/modes/scheme.xml | 236 + extra/xmode/modes/sdl_pr.xml | 228 + extra/xmode/modes/sgml.xml | 47 + extra/xmode/modes/shellscript.xml | 163 + extra/xmode/modes/shtml.xml | 117 + extra/xmode/modes/slate.xml | 43 + extra/xmode/modes/smalltalk.xml | 78 + extra/xmode/modes/smi-mib.xml | 131 + extra/xmode/modes/splus.xml | 82 + extra/xmode/modes/sql-loader.xml | 122 + extra/xmode/modes/sqr.xml | 152 + extra/xmode/modes/squidconf.xml | 227 + extra/xmode/modes/ssharp.xml | 145 + extra/xmode/modes/svn-commit.xml | 22 + extra/xmode/modes/swig.xml | 35 + extra/xmode/modes/tcl.xml | 682 ++ extra/xmode/modes/tex.xml | 107 + extra/xmode/modes/texinfo.xml | 20 + extra/xmode/modes/text.xml | 11 + extra/xmode/modes/tpl.xml | 89 + extra/xmode/modes/tsql.xml | 1013 +++ extra/xmode/modes/tthtml.xml | 266 + extra/xmode/modes/twiki.xml | 153 + extra/xmode/modes/typoscript.xml | 81 + extra/xmode/modes/uscript.xml | 161 + extra/xmode/modes/vbscript.xml | 739 ++ extra/xmode/modes/velocity.xml | 116 + extra/xmode/modes/verilog.xml | 219 + extra/xmode/modes/vhdl.xml | 195 + extra/xmode/modes/xml.xml | 161 + extra/xmode/modes/xq.xml | 462 + extra/xmode/modes/xsl.xml | 436 + extra/xmode/modes/zpt.xml | 173 + extra/xmode/rules/rules-tests.factor | 6 + extra/xmode/rules/rules.factor | 129 + extra/xmode/tokens/tokens.factor | 21 + extra/xmode/utilities/test.xml | 1 + extra/xmode/utilities/utilities-tests.factor | 53 + extra/xmode/utilities/utilities.factor | 58 + extra/xmode/xmode.dtd | 166 + 175 files changed, 63212 insertions(+) create mode 100644 extra/xmode/catalog/catalog-tests.factor create mode 100644 extra/xmode/catalog/catalog.factor create mode 100644 extra/xmode/code2html/code2html.factor create mode 100644 extra/xmode/code2html/stylesheet.css create mode 100644 extra/xmode/keyword-map/keyword-map-tests.factor create mode 100644 extra/xmode/keyword-map/keyword-map.factor create mode 100644 extra/xmode/loader/loader.factor create mode 100644 extra/xmode/marker/context/context.factor create mode 100644 extra/xmode/marker/marker-tests.factor create mode 100644 extra/xmode/marker/marker.factor create mode 100644 extra/xmode/marker/state/state.factor create mode 100644 extra/xmode/modes/actionscript.xml create mode 100644 extra/xmode/modes/ada95.xml create mode 100644 extra/xmode/modes/antlr.xml create mode 100644 extra/xmode/modes/apacheconf.xml create mode 100644 extra/xmode/modes/apdl.xml create mode 100644 extra/xmode/modes/applescript.xml create mode 100644 extra/xmode/modes/asp.xml create mode 100644 extra/xmode/modes/aspect-j.xml create mode 100644 extra/xmode/modes/assembly-m68k.xml create mode 100644 extra/xmode/modes/assembly-macro32.xml create mode 100644 extra/xmode/modes/assembly-mcs51.xml create mode 100644 extra/xmode/modes/assembly-parrot.xml create mode 100644 extra/xmode/modes/assembly-r2000.xml create mode 100644 extra/xmode/modes/assembly-x86.xml create mode 100644 extra/xmode/modes/awk.xml create mode 100644 extra/xmode/modes/b.xml create mode 100644 extra/xmode/modes/batch.xml create mode 100644 extra/xmode/modes/bbj.xml create mode 100644 extra/xmode/modes/bcel.xml create mode 100644 extra/xmode/modes/bibtex.xml create mode 100644 extra/xmode/modes/c.xml create mode 100644 extra/xmode/modes/catalog create mode 100644 extra/xmode/modes/chill.xml create mode 100644 extra/xmode/modes/cil.xml create mode 100644 extra/xmode/modes/clips.xml create mode 100644 extra/xmode/modes/cobol.xml create mode 100644 extra/xmode/modes/coldfusion.xml create mode 100644 extra/xmode/modes/cplusplus.xml create mode 100644 extra/xmode/modes/csharp.xml create mode 100644 extra/xmode/modes/css.xml create mode 100644 extra/xmode/modes/csv.xml create mode 100644 extra/xmode/modes/cvs-commit.xml create mode 100644 extra/xmode/modes/d.xml create mode 100644 extra/xmode/modes/django.xml create mode 100644 extra/xmode/modes/doxygen.xml create mode 100644 extra/xmode/modes/dsssl.xml create mode 100644 extra/xmode/modes/eiffel.xml create mode 100644 extra/xmode/modes/embperl.xml create mode 100644 extra/xmode/modes/erlang.xml create mode 100644 extra/xmode/modes/factor.xml create mode 100644 extra/xmode/modes/fhtml.xml create mode 100644 extra/xmode/modes/forth.xml create mode 100644 extra/xmode/modes/fortran.xml create mode 100644 extra/xmode/modes/foxpro.xml create mode 100644 extra/xmode/modes/freemarker.xml create mode 100644 extra/xmode/modes/gettext.xml create mode 100644 extra/xmode/modes/gnuplot.xml create mode 100644 extra/xmode/modes/groovy.xml create mode 100644 extra/xmode/modes/haskell.xml create mode 100644 extra/xmode/modes/hex.xml create mode 100644 extra/xmode/modes/hlsl.xml create mode 100644 extra/xmode/modes/htaccess.xml create mode 100644 extra/xmode/modes/html.xml create mode 100644 extra/xmode/modes/i4gl.xml create mode 100644 extra/xmode/modes/icon.xml create mode 100644 extra/xmode/modes/idl.xml create mode 100644 extra/xmode/modes/inform.xml create mode 100644 extra/xmode/modes/ini.xml create mode 100644 extra/xmode/modes/inno-setup.xml create mode 100644 extra/xmode/modes/interlis.xml create mode 100644 extra/xmode/modes/io.xml create mode 100644 extra/xmode/modes/java.xml create mode 100644 extra/xmode/modes/javacc.xml create mode 100644 extra/xmode/modes/javascript.xml create mode 100644 extra/xmode/modes/jcl.xml create mode 100644 extra/xmode/modes/jhtml.xml create mode 100644 extra/xmode/modes/jmk.xml create mode 100644 extra/xmode/modes/jsp.xml create mode 100644 extra/xmode/modes/latex.xml create mode 100644 extra/xmode/modes/lilypond.xml create mode 100644 extra/xmode/modes/lisp.xml create mode 100644 extra/xmode/modes/literate-haskell.xml create mode 100644 extra/xmode/modes/lotos.xml create mode 100644 extra/xmode/modes/lua.xml create mode 100644 extra/xmode/modes/mail.xml create mode 100644 extra/xmode/modes/makefile.xml create mode 100644 extra/xmode/modes/maple.xml create mode 100644 extra/xmode/modes/ml.xml create mode 100644 extra/xmode/modes/modula3.xml create mode 100644 extra/xmode/modes/moin.xml create mode 100644 extra/xmode/modes/mqsc.xml create mode 100644 extra/xmode/modes/myghty.xml create mode 100644 extra/xmode/modes/mysql.xml create mode 100644 extra/xmode/modes/netrexx.xml create mode 100644 extra/xmode/modes/nqc.xml create mode 100644 extra/xmode/modes/nsis2.xml create mode 100644 extra/xmode/modes/objective-c.xml create mode 100644 extra/xmode/modes/objectrexx.xml create mode 100644 extra/xmode/modes/occam.xml create mode 100644 extra/xmode/modes/omnimark.xml create mode 100644 extra/xmode/modes/pascal.xml create mode 100644 extra/xmode/modes/patch.xml create mode 100644 extra/xmode/modes/perl.xml create mode 100644 extra/xmode/modes/php.xml create mode 100644 extra/xmode/modes/pike.xml create mode 100644 extra/xmode/modes/pl-sql.xml create mode 100644 extra/xmode/modes/pl1.xml create mode 100644 extra/xmode/modes/pop11.xml create mode 100644 extra/xmode/modes/postscript.xml create mode 100644 extra/xmode/modes/povray.xml create mode 100644 extra/xmode/modes/powerdynamo.xml create mode 100644 extra/xmode/modes/progress.xml create mode 100644 extra/xmode/modes/prolog.xml create mode 100644 extra/xmode/modes/props.xml create mode 100644 extra/xmode/modes/psp.xml create mode 100644 extra/xmode/modes/ptl.xml create mode 100644 extra/xmode/modes/pvwave.xml create mode 100644 extra/xmode/modes/pyrex.xml create mode 100644 extra/xmode/modes/python.xml create mode 100644 extra/xmode/modes/quake.xml create mode 100644 extra/xmode/modes/rcp.xml create mode 100644 extra/xmode/modes/rd.xml create mode 100644 extra/xmode/modes/rebol.xml create mode 100644 extra/xmode/modes/redcode.xml create mode 100644 extra/xmode/modes/relax-ng-compact.xml create mode 100644 extra/xmode/modes/rest.xml create mode 100644 extra/xmode/modes/rfc.xml create mode 100644 extra/xmode/modes/rhtml.xml create mode 100644 extra/xmode/modes/rib.xml create mode 100644 extra/xmode/modes/rpmspec.xml create mode 100644 extra/xmode/modes/rtf.xml create mode 100644 extra/xmode/modes/ruby.xml create mode 100644 extra/xmode/modes/rview.xml create mode 100644 extra/xmode/modes/sas.xml create mode 100644 extra/xmode/modes/scheme.xml create mode 100644 extra/xmode/modes/sdl_pr.xml create mode 100644 extra/xmode/modes/sgml.xml create mode 100644 extra/xmode/modes/shellscript.xml create mode 100644 extra/xmode/modes/shtml.xml create mode 100644 extra/xmode/modes/slate.xml create mode 100644 extra/xmode/modes/smalltalk.xml create mode 100644 extra/xmode/modes/smi-mib.xml create mode 100644 extra/xmode/modes/splus.xml create mode 100644 extra/xmode/modes/sql-loader.xml create mode 100644 extra/xmode/modes/sqr.xml create mode 100644 extra/xmode/modes/squidconf.xml create mode 100644 extra/xmode/modes/ssharp.xml create mode 100644 extra/xmode/modes/svn-commit.xml create mode 100644 extra/xmode/modes/swig.xml create mode 100644 extra/xmode/modes/tcl.xml create mode 100644 extra/xmode/modes/tex.xml create mode 100644 extra/xmode/modes/texinfo.xml create mode 100644 extra/xmode/modes/text.xml create mode 100644 extra/xmode/modes/tpl.xml create mode 100644 extra/xmode/modes/tsql.xml create mode 100644 extra/xmode/modes/tthtml.xml create mode 100644 extra/xmode/modes/twiki.xml create mode 100644 extra/xmode/modes/typoscript.xml create mode 100644 extra/xmode/modes/uscript.xml create mode 100644 extra/xmode/modes/vbscript.xml create mode 100644 extra/xmode/modes/velocity.xml create mode 100644 extra/xmode/modes/verilog.xml create mode 100644 extra/xmode/modes/vhdl.xml create mode 100644 extra/xmode/modes/xml.xml create mode 100644 extra/xmode/modes/xq.xml create mode 100644 extra/xmode/modes/xsl.xml create mode 100644 extra/xmode/modes/zpt.xml create mode 100644 extra/xmode/rules/rules-tests.factor create mode 100644 extra/xmode/rules/rules.factor create mode 100644 extra/xmode/tokens/tokens.factor create mode 100644 extra/xmode/utilities/test.xml create mode 100644 extra/xmode/utilities/utilities-tests.factor create mode 100644 extra/xmode/utilities/utilities.factor create mode 100644 extra/xmode/xmode.dtd diff --git a/extra/xmode/catalog/catalog-tests.factor b/extra/xmode/catalog/catalog-tests.factor new file mode 100644 index 0000000000..e5d049de72 --- /dev/null +++ b/extra/xmode/catalog/catalog-tests.factor @@ -0,0 +1,9 @@ +IN: temporary +USING: xmode.catalog tools.test hashtables assocs +kernel sequences io ; + +[ t ] [ modes hashtable? ] unit-test + +[ ] [ + modes keys [ dup print load-mode drop reset-modes ] each +] unit-test diff --git a/extra/xmode/catalog/catalog.factor b/extra/xmode/catalog/catalog.factor new file mode 100644 index 0000000000..cde9c6b025 --- /dev/null +++ b/extra/xmode/catalog/catalog.factor @@ -0,0 +1,55 @@ +USING: xmode.loader xmode.utilities namespaces +assocs sequences kernel io.files xml memoize words globs ; +IN: xmode.catalog + +TUPLE: mode file file-name-glob first-line-glob ; + +r + mode construct-empty { + { "FILE" f set-mode-file } + { "FILE_NAME_GLOB" f set-mode-file-name-glob } + { "FIRST_LINE_GLOB" f set-mode-first-line-glob } + } init-from-tag r> + rot set-at ; + +TAGS> + +: parse-modes-tag ( tag -- modes ) + H{ } clone [ + swap child-tags [ parse-mode-tag ] curry* each + ] keep ; + +: load-catalog ( -- modes ) + "extra/xmode/modes/catalog" resource-path + read-xml parse-modes-tag ; + +: modes ( -- ) + \ modes get-global [ + load-catalog dup \ modes set-global + ] unless* ; + +: reset-catalog ( -- ) + f \ modes set-global ; + +MEMO: load-mode ( name -- rule-sets ) + modes at mode-file + "extra/xmode/modes/" swap append + resource-path parse-mode ; + +: reset-modes ( -- ) + \ load-mode "memoize" word-prop clear-assoc ; + +: ?glob-matches ( string glob/f -- ? ) + dup [ glob-matches? ] [ 2drop f ] if ; + +: suitable-mode? ( file-name first-line mode -- ? ) + tuck mode-first-line-glob ?glob-matches + [ 2drop t ] [ mode-file-name-glob ?glob-matches ] if ; + +: find-mode ( file-name first-line -- mode ) + modes + [ nip >r 2dup r> suitable-mode? ] assoc-find + 2drop >r 2drop r> [ "text" ] unless* ; diff --git a/extra/xmode/code2html/code2html.factor b/extra/xmode/code2html/code2html.factor new file mode 100644 index 0000000000..02bf74dc23 --- /dev/null +++ b/extra/xmode/code2html/code2html.factor @@ -0,0 +1,45 @@ +USING: xmode.tokens xmode.marker +xmode.catalog kernel html html.elements io io.files +sequences words ; +IN: xmode.code2html + +: htmlize-tokens ( tokens -- ) + [ + dup token-str swap token-id [ + write + ] [ + write + ] if* + ] each ; + +: htmlize-line ( line-context line rules -- line-context' ) + tokenize-line htmlize-tokens ; + +: htmlize-lines ( lines rules -- ) +
 f -rot [ htmlize-line nl ] curry each drop 
; + +: default-stylesheet ( -- ) + ; + +: htmlize-file ( path -- ) + dup lines dup empty? [ 2drop ] [ + swap dup ".html" append [ + [ + + + dup write + default-stylesheet + + + over first + find-mode + load-mode + htmlize-lines + + + ] with-html-stream + ] with-stream + ] if ; diff --git a/extra/xmode/code2html/stylesheet.css b/extra/xmode/code2html/stylesheet.css new file mode 100644 index 0000000000..4cd4f8bfc1 --- /dev/null +++ b/extra/xmode/code2html/stylesheet.css @@ -0,0 +1,63 @@ +.NULL { +color: #000000; +} +.COMMENT1 { +color: #cc0000; +} +.COMMENT2 { +color: #ff8400; +} +.COMMENT3 { +color: #6600cc; +} +.COMMENT4 { +color: #cc6600; +} +.DIGIT { +color: #ff0000; +} +.FUNCTION { +color: #9966ff; +} +.INVALID { +background: #ffffcc; +color: #ff0066; +} +.KEYWORD1 { +color: #006699; +font-weight: bold; +} +.KEYWORD2 { +color: #009966; +font-weight: bold; +} +.KEYWORD3 { +color: #0099ff; +font-weight: bold; +} +.KEYWORD4 { +color: #66ccff; +font-weight: bold; +} +.LABEL { +color: #02b902; +} +.LITERAL1 { +color: #ff00cc; +} +.LITERAL2 { +color: #cc00cc; +} +.LITERAL3 { +color: #9900cc; +} +.LITERAL4 { +color: #6600cc; +} +.MARKUP { +color: #0000ff; +} +.OPERATOR { +color: #000000; +font-weight: bold; +} diff --git a/extra/xmode/keyword-map/keyword-map-tests.factor b/extra/xmode/keyword-map/keyword-map-tests.factor new file mode 100644 index 0000000000..9fbe9110e8 --- /dev/null +++ b/extra/xmode/keyword-map/keyword-map-tests.factor @@ -0,0 +1,30 @@ +IN: temporary +USING: xmode.keyword-map xmode.tokens +tools.test namespaces assocs kernel strings ; + +f dup "k" set + +{ + { "int" KEYWORD1 } + { "void" KEYWORD2 } + { "size_t" KEYWORD3 } +} update + +[ 3 ] [ "k" get assoc-size ] unit-test +[ KEYWORD1 ] [ "int" "k" get at ] unit-test +[ "_" ] [ "k" get keyword-map-no-word-sep* >string ] unit-test +[ ] [ LITERAL1 "x-y" "k" get set-at ] unit-test +[ "-_" ] [ "k" get keyword-map-no-word-sep* >string ] unit-test + +t dup "k" set +{ + { "Foo" KEYWORD1 } + { "bbar" KEYWORD2 } + { "BAZ" KEYWORD3 } +} update + +[ KEYWORD1 ] [ "fOo" "k" get at ] unit-test + +[ KEYWORD2 ] [ "BBAR" "k" get at ] unit-test + +[ KEYWORD3 ] [ "baz" "k" get at ] unit-test diff --git a/extra/xmode/keyword-map/keyword-map.factor b/extra/xmode/keyword-map/keyword-map.factor new file mode 100644 index 0000000000..b75c24393c --- /dev/null +++ b/extra/xmode/keyword-map/keyword-map.factor @@ -0,0 +1,38 @@ +USING: kernel strings assocs sequences hashtables sorting ; +IN: xmode.keyword-map + +! Based on org.gjt.sp.jedit.syntax.KeywordMap +TUPLE: keyword-map no-word-sep ignore-case? ; + +: ( ignore-case? -- map ) + H{ } clone { set-keyword-map-ignore-case? set-delegate } + keyword-map construct ; + +: invalid-no-word-sep f swap set-keyword-map-no-word-sep ; + +: handle-case ( key keyword-map -- key assoc ) + [ keyword-map-ignore-case? [ >upper ] when ] keep + delegate ; + +M: keyword-map at* handle-case at* ; + +M: keyword-map set-at + [ handle-case set-at ] keep invalid-no-word-sep ; + +M: keyword-map clear-assoc + [ delegate clear-assoc ] keep invalid-no-word-sep ; + +M: keyword-map assoc-find >r delegate r> assoc-find ; + +M: keyword-map >alist delegate >alist ; + +: (keyword-map-no-word-sep) + keys concat [ alpha? not ] subset prune natural-sort ; + +: keyword-map-no-word-sep* ( keyword-map -- str ) + dup keyword-map-no-word-sep [ ] [ + dup (keyword-map-no-word-sep) + dup rot set-keyword-map-no-word-sep + ] ?if ; + +INSTANCE: keyword-map assoc diff --git a/extra/xmode/loader/loader.factor b/extra/xmode/loader/loader.factor new file mode 100644 index 0000000000..a287efdd4b --- /dev/null +++ b/extra/xmode/loader/loader.factor @@ -0,0 +1,176 @@ +USING: xmode.tokens xmode.rules +xmode.keyword-map xml.data xml.utilities xml assocs +kernel combinators sequences math.parser namespaces parser +xmode.utilities regexp io.files ; +IN: xmode.loader + +! Based on org.gjt.sp.jedit.XModeHandler + +! Attribute utilities +: string>boolean ( string -- ? ) "TRUE" = ; + +: string>match-type ( string -- obj ) + { + { "RULE" [ f ] } + { "CONTEXT" [ t ] } + [ string>token ] + } case ; + +: string>rule-set-name "MAIN" or ; + +! PROP, PROPS +: parse-prop-tag ( tag -- key value ) + "NAME" over at "VALUE" rot at ; + +: parse-props-tag ( tag -- assoc ) + child-tags + [ parse-prop-tag ] H{ } map>assoc ; + +: position-attrs ( tag -- at-line-start? at-whitespace-end? at-word-start? ) + ! XXX Wrong logic! + { "AT_LINE_START" "AT_WHITESPACE_END" "AT_WORD_START" } + swap [ at string>boolean ] curry map first3 ; + +: parse-literal-matcher ( tag -- matcher ) + dup children>string swap position-attrs ; + +: parse-regexp-matcher ( tag -- matcher ) + ! XXX + dup children>string swap position-attrs ; + +! SPAN's children + + +! RULES and its children +number swap set-rule-set-terminate-char ; + +: (parse-rule-tag) ( rule-set tag specs class -- ) + construct-rule swap init-from-tag swap add-rule ; inline + +: RULE: + scan scan-word + parse-definition { } make + swap [ (parse-rule-tag) ] 2curry (TAG:) ; parsing + +: shared-tag-attrs + { "TYPE" string>token set-rule-body-token } , ; inline + +: delegate-attr + { "DELEGATE" f set-rule-delegate } , ; + +: regexp-attr + { "HASH_CHAR" f set-rule-chars } , ; + +: match-type-attr + { "MATCH_TYPE" string>match-type set-rule-match-token } , ; + +: span-attrs + { "NO_LINE_BREAK" string>boolean set-rule-no-line-break? } , + { "NO_WORD_BREAK" string>boolean set-rule-no-word-break? } , + { "NO_ESCAPE" string>boolean set-rule-no-escape? } , ; + +: literal-start + [ parse-literal-matcher swap set-rule-start ] , ; + +: regexp-start + [ parse-regexp-matcher swap set-rule-start ] , ; + +: literal-end + [ parse-literal-matcher swap set-rule-end ] , ; + +RULE: SEQ seq-rule + shared-tag-attrs delegate-attr literal-start ; + +RULE: SEQ_REGEXP seq-rule + shared-tag-attrs delegate-attr regexp-attr regexp-start ; + +: parse-begin/end-tags + [ + ! XXX: handle position attrs on span tag itself + child-tags [ parse-begin/end-tag ] curry* each + ] , ; + +: init-span-tag [ drop init-span ] , ; + +: init-eol-span-tag [ drop init-eol-span ] , ; + +RULE: SPAN span-rule + shared-tag-attrs delegate-attr match-type-attr span-attrs parse-begin/end-tags init-span-tag ; + +RULE: SPAN_REGEXP span-rule + shared-tag-attrs delegate-attr match-type-attr span-attrs regexp-attr parse-begin/end-tags init-span-tag ; + +RULE: EOL_SPAN eol-span-rule + shared-tag-attrs delegate-attr match-type-attr literal-start init-eol-span-tag ; + +RULE: EOL_SPAN_REGEXP eol-span-rule + shared-tag-attrs delegate-attr match-type-attr regexp-attr regexp-start init-eol-span-tag ; + +RULE: MARK_FOLLOWING mark-following-rule + shared-tag-attrs match-type-attr literal-start ; + +RULE: MARK_PREVIOUS mark-previous-rule + shared-tag-attrs match-type-attr literal-start ; + +: parse-keyword-tag + dup name-tag string>token swap children>string rot set-at ; + +TAG: KEYWORDS ( rule-set tag -- key value ) + >r rule-set-keywords r> + child-tags [ parse-keyword-tag ] curry* each ; + +TAGS> + +: (parse-rules-tag) ( tag -- rule-set ) + + { + { "SET" string>rule-set-name set-rule-set-name } + { "IGNORE_CASE" string>boolean set-rule-set-ignore-case? } + { "HIGHLIGHT_DIGITS" string>boolean set-rule-set-highlight-digits? } + { "DIGIT_RE" f set-rule-set-digit-re } ! XXX + { "ESCAPE" f add-escape-rule } + { "DEFAULT" string>token set-rule-set-default } + { "NO_WORD_SEP" f set-rule-set-no-word-sep } + } init-from-tag ; + +: parse-rules-tag ( tag -- rule-set ) + dup (parse-rules-tag) [ + swap child-tags [ + parse-rule-tag + ] curry* each + ] keep ; + +: merge-rule-set-props ( props rule-set -- ) + [ rule-set-props union ] keep set-rule-set-props ; + +! Top-level entry points +: parse-mode-tag ( tag -- rule-sets ) + dup "RULES" tags-named [ + parse-rules-tag dup rule-set-name swap + ] H{ } map>assoc + swap "PROPS" tag-named [ + parse-props-tag over values + [ merge-rule-set-props ] curry* each + ] when* ; + +: parse-mode ( stream -- rule-sets ) + read-xml parse-mode-tag ; diff --git a/extra/xmode/marker/context/context.factor b/extra/xmode/marker/context/context.factor new file mode 100644 index 0000000000..8023e1d321 --- /dev/null +++ b/extra/xmode/marker/context/context.factor @@ -0,0 +1,19 @@ +USING: kernel ; +IN: xmode.marker.context + +! Based on org.gjt.sp.jedit.syntax.TokenMarker.LineContext +TUPLE: line-context +parent +in-rule +in-rule-set +end +; + +: ( ruleset parent -- line-context ) + { set-line-context-in-rule-set set-line-context-parent } + line-context construct ; + +M: line-context clone + (clone) + dup line-context-parent clone + over set-line-context-parent ; diff --git a/extra/xmode/marker/marker-tests.factor b/extra/xmode/marker/marker-tests.factor new file mode 100644 index 0000000000..6c66f958a6 --- /dev/null +++ b/extra/xmode/marker/marker-tests.factor @@ -0,0 +1,68 @@ +USING: xmode.tokens xmode.catalog +xmode.marker tools.test kernel ; +IN: temporary + +[ + { + T{ token f "//" COMMENT2 } + T{ token f " " COMMENT2 } + T{ token f "hello" COMMENT2 } + T{ token f " " COMMENT2 } + T{ token f "world" COMMENT2 } + } +] [ f "// hello world" "java" load-mode tokenize-line nip ] unit-test + + +[ + { + T{ token f "hello" f } + T{ token f " " f } + T{ token f "world" f } + T{ token f ":" f } + } +] [ f "hello world:" "java" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "hello_world" LABEL } + T{ token f ":" OPERATOR } + } +] [ f "hello_world:" "java" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "\t" f } + T{ token f "hello_world" LABEL } + T{ token f ":" OPERATOR } + } +] [ f "\thello_world:" "java" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "" KEYWORD2 } + } +] [ + f "" "xml" load-mode tokenize-line nip +] unit-test + +[ + { + T{ token f "" KEYWORD2 } + } +] [ + f "" "xml" load-mode tokenize-line nip +] unit-test diff --git a/extra/xmode/marker/marker.factor b/extra/xmode/marker/marker.factor new file mode 100644 index 0000000000..c155f8e11c --- /dev/null +++ b/extra/xmode/marker/marker.factor @@ -0,0 +1,286 @@ +IN: xmode.marker +USING: kernel namespaces xmode.rules xmode.tokens +xmode.marker.state xmode.marker.context +xmode.utilities xmode.catalog sequences math +assocs combinators combinators.lib strings regexp splitting ; + +! Based on org.gjt.sp.jedit.syntax.TokenMarker + +: current-keyword ( -- string ) + last-offset get position get line get subseq ; + +: keyword-number? ( keyword -- ? ) + { + [ current-rule-set rule-set-highlight-digits? ] + [ dup [ digit? ] contains? ] + [ + dup [ digit? ] all? [ + current-rule-set rule-set-digit-re dup + [ dupd 2drop f ] [ drop f ] if + ] unless* + ] + } && nip ; + +: mark-number ( keyword -- id ) + keyword-number? DIGIT and ; + +: mark-keyword ( keyword -- id ) + current-keywords at ; + +: add-remaining-token ( -- ) + current-rule-set rule-set-default prev-token, ; + +: mark-token ( -- ) + current-keyword + dup mark-number [ ] [ mark-keyword ] ?if + [ prev-token, ] when* ; + +: check-terminate-char ( -- ) + current-rule-set rule-set-terminate-char [ + position get <= [ + terminated? on + ] when + ] when* ; + +: current-char ( -- char ) + position get line get nth ; + +GENERIC: perform-rule ( rule -- ) + +: ... ; + +M: escape-rule perform-rule ( rule -- ) ... ; + +: find-escape-rule ( -- rule ) + context get dup + line-context-in-rule-set rule-set-escape-rule + [ ] [ line-context-parent find-escape-rule ] ?if ; + +: check-escape-rule ( rule -- ) + #! Unlike jEdit, we keep checking parents until we find + #! an escape rule. + dup rule-no-escape? [ drop ] [ + drop + ! find-escape-rule + ! current-rule-set rule-set-escape-rule [ + ! find-escape-rule + ! ] [ + ! + ! ] if* + ] if ; + +GENERIC: match-position ( rule -- n ) + +M: mark-previous-rule match-position drop last-offset get ; + +M: rule match-position drop position get ; + +: can-match-here? ( matcher rule -- ? ) + match-position { + [ over ] + [ over matcher-at-line-start? over zero? implies ] + [ over matcher-at-whitespace-end? over whitespace-end get = implies ] + [ over matcher-at-word-start? over last-offset get = implies ] + } && 2nip ; + +: matches-not-mark-following? ... ; + +GENERIC: text-matches? ( position text -- match-count/f ) + +M: string text-matches? + ! XXX ignore case + >r line get swap tail-slice r> + [ head? ] keep length and ; + +! M: regexp text-matches? ... ; + +: rule-start-matches? ( rule -- match-count/f ) + dup rule-start tuck swap can-match-here? [ + position get swap matcher-text text-matches? + ] [ + drop f + ] if ; + +: rule-end-matches? ( rule -- match-count/f ) + dup mark-following-rule? [ + dup rule-end swap can-match-here? 0 and + ] [ + dup rule-end tuck swap can-match-here? [ + position get swap matcher-text + context get line-context-end or + text-matches? + ] [ + drop f + ] if + ] if ; + +GENERIC: handle-rule-start ( match-count rule -- ) + +GENERIC: handle-rule-end ( match-count rule -- ) + +: check-every-rule ( -- ? ) + current-char current-rule-set get-rules + [ rule-start-matches? ] map-find + dup [ handle-rule-start t ] [ 2drop f ] if ; + +: ?end-rule ( -- ) + current-rule [ + dup rule-end-matches? + dup [ swap handle-rule-end ] [ 2drop ] if + ] when* ; + +: handle-escape-rule ( rule -- ) + ?end-rule + ; +! ... process escape ... ; + +: rule-match-token* ( rule -- id ) + dup rule-match-token { + { f [ dup rule-body-token ] } + { t [ current-rule-set rule-set-default ] } + [ ] + } case nip ; + +: resolve-delegate ( name -- rules ) + dup string? [ + "::" split1 [ swap load-mode at ] [ rule-sets get at ] if* + ] when ; + +M: seq-rule handle-rule-start + ?end-rule + mark-token + add-remaining-token + tuck rule-body-token next-token, + rule-delegate [ resolve-delegate push-context ] when* ; + +UNION: abstract-span-rule span-rule eol-span-rule ; + +M: abstract-span-rule handle-rule-start + ?end-rule + mark-token + add-remaining-token + tuck rule-match-token* next-token, + ! ... end subst ... + dup context get set-line-context-in-rule + rule-delegate resolve-delegate push-context ; + +M: span-rule handle-rule-end + 2drop ; + +M: mark-following-rule handle-rule-start + ?end-rule + mark-token add-remaining-token + tuck rule-match-token* next-token, + f context get set-line-context-end + context get set-line-context-in-rule ; + +M: mark-previous-rule handle-rule-start + ?end-rule + mark-token + dup rule-body-token prev-token, + rule-match-token* next-token, ; + +: do-escaped + escaped? get [ + escaped? off + ... + ] when ; + +: check-end-delegate ( -- ? ) + context get line-context-parent [ + line-context-in-rule [ + dup rule-end-matches? dup [ + [ + swap handle-rule-end + ?end-rule + mark-token + add-remaining-token + ] keep context get line-context-parent line-context-in-rule rule-match-token* next-token, + pop-context + seen-whitespace-end? on t + ] [ 2drop f ] if + ] [ f ] if* + ] [ f ] if* ; + +: handle-no-word-break ( -- ) + context get line-context-parent [ + line-context-in-rule dup rule-no-word-break? [ + rule-match-token prev-token, + pop-context + ] [ drop ] if + ] when* ; + +: check-rule ( -- ) + ?end-rule + handle-no-word-break + mark-token + add-remaining-token ; + +: (check-word-break) ( -- ) + check-rule + + 1 current-rule-set rule-set-default next-token, ; + +: check-word-break ( -- ? ) + current-char dup blank? [ + drop + + seen-whitespace-end? get [ + position get 1+ whitespace-end set + ] unless + + (check-word-break) + + ] [ + dup alpha? [ + drop + ] [ + dup current-rule-set dup short. rule-set-no-word-sep* dup . member? [ + "A: " write write1 nl + ] [ + "B: " write write1 nl + (check-word-break) + ] if + ] if + + seen-whitespace-end? on + ] if + escaped? off + delegate-end-escaped? off t ; + + +: mark-token-loop ( -- ) + position get line get length < [ + check-terminate-char + + { + [ check-end-delegate ] + [ check-every-rule ] + [ check-word-break ] + } || drop + + position inc + mark-token-loop + ] when ; + +: mark-remaining ( -- ) + line get length position set + check-rule ; + +: unwind-no-line-break ( -- ) + context get line-context-parent [ + line-context-in-rule rule-no-line-break? + terminated? get or [ + pop-context + unwind-no-line-break + ] when + ] when* ; + +: tokenize-line ( line-context line rules -- line-context' seq ) + [ + init-token-marker + mark-token-loop + mark-remaining + unwind-no-line-break + context get + ] { } make ; diff --git a/extra/xmode/marker/state/state.factor b/extra/xmode/marker/state/state.factor new file mode 100644 index 0000000000..26379501bd --- /dev/null +++ b/extra/xmode/marker/state/state.factor @@ -0,0 +1,65 @@ +USING: xmode.marker.context xmode.rules +xmode.tokens namespaces kernel sequences assocs math ; +IN: xmode.marker.state + +! Based on org.gjt.sp.jedit.syntax.TokenMarker + +SYMBOL: rule-sets +SYMBOL: line +SYMBOL: last-offset +SYMBOL: position +SYMBOL: context + +SYMBOL: whitespace-end +SYMBOL: seen-whitespace-end? + +SYMBOL: escaped? +SYMBOL: delegate-end-escaped? +SYMBOL: terminated? + +: current-rule ( -- rule ) + context get line-context-in-rule ; + +: current-rule-set ( -- rule ) + context get line-context-in-rule-set ; + +: current-keywords ( -- keyword-map ) + current-rule-set rule-set-keywords ; + +: token, ( from to id -- ) + pick pick = [ 3drop ] [ >r line get subseq r> , ] if ; + +: prev-token, ( id -- ) + >r last-offset get position get r> token, + position get last-offset set ; + +: next-token, ( len id -- ) + >r position get 2dup + r> token, + position get + dup 1- position set last-offset set ; + +: get-rule-set ( name -- rule-set ) + rule-sets get at ; + +: main-rule-set ( -- rule-set ) + "MAIN" get-rule-set ; + +: push-context ( rules -- ) + context [ ] change ; + +: pop-context ( -- ) + context get line-context-parent + dup context set + f swap set-line-context-in-rule ; + +: terminal-rule-set ( -- rule-set ) + get-rule-set rule-set-default standard-rule-set + push-context ; + +: init-token-marker ( prev-context line rules -- ) + rule-sets set + line set + 0 position set + 0 last-offset set + 0 whitespace-end set + [ clone ] [ main-rule-set f ] if* + context set ; diff --git a/extra/xmode/modes/actionscript.xml b/extra/xmode/modes/actionscript.xml new file mode 100644 index 0000000000..387258d868 --- /dev/null +++ b/extra/xmode/modes/actionscript.xml @@ -0,0 +1,829 @@ + + + + + + + + + + + + + + + + + + + + + + /* + */ + + + + " + " + + + + ' + ' + + + ( + ) + + // + ) + ( + + = + ! + >= + <= + + + - + / + * + > + < + % + & + | + ^ + ~ + . + } + { + , + ; + ] + [ + ? + : + : + + + + add + and + break + continue + delete + do + else + eq + for + function + ge + gt + if + ifFrameLoaded + in + le + lt + ne + new + not + on + onClipEvent + or + return + this + tellTarget + typeof + var + void + while + with + + + Array + Boolean + Color + Date + Function + Key + MovieClip + Math + Mouse + Number + Object + Selection + Sound + String + XML + XMLNode + XMLSocket + + + NaN + Infinity + false + null + true + undefined + + + Boolean + call + Date + escape + eval + fscommand + getProperty + getTimer + getURL + getVersion + gotoAndPlay + gotoAndStop + #include + int + isFinite + isNaN + loadMovie + loadMovieNum + loadVariables + loadVariablesNum + maxscroll + newline + nextFrame + nextScene + Number + parseFloat + parseInt + play + prevFrame + prevScene + print + printAsBitmap + printAsBitmapNum + printNum + random + removeMovieClip + scroll + setProperty + startDrag + stop + stopAllSounds + stopDrag + String + targetPath + tellTarget + toggleHighQuality + trace + unescape + unloadMovie + unloadMovieNum + updateAfterEvent + + + prototype + clearInterval + getVersion + length + __proto__ + __constructor__ + ASSetPropFlags + setInterval + setI + MMExecute + + + attachMovie + createEmptyMovieClip + createTextField + duplicateMovieClip + getBounds + getBytesLoaded + getBytesTotal + getDepth + globalToLocal + hitTest + localToGlobal + setMask + swapDepths + attachAudio + getInstanceAtDepth + getNextHighestDepth + getSWFVersion + getTextSnapshot + getSWFVersion + getSWFVersion + + + beginFill + beginGradientFill + clear + curveTo + endFill + lineStyle + lineTo + moveTo + + + enabled + focusEnabled + hitArea + tabChildren + tabEnabled + tabIndex + trackAsMenu + menu + useHandCursor + + + onData + onDragOut + onDragOver + onEnterFrame + onKeyDown + onKeyUp + onKillFocus + onLoad + onMouseDown + onMouseMove + onMouseUp + onPress + onRelease + onReleaseOutside + onRollOut + onRollOver + onSetFocus + onUnload + + + MovieClipLoader + getProgress + loadClip + onLoadComplete + onLoadError + onLoadInit + onLoadProgress + onLoadStart + unloadClip + + + PrintJob + addPage + + + Camera + activityLevel + bandwidth + currentFps + fps + index + motionLevel + motionTimeOut + muted + name + names + onActivity + onStatus + quality + setMode + setMotionLevel + setQuality + + + Microphone + gain + rate + setGain + setRate + setSilenceLevel + setUseEchoSuppression + silenceLevel + silenceTimeout + useEchoSuppression + + + ContextMenu + builtInItems + copy + customItems + hideBuiltInItems + onSelect + caption + ContextMenuItem + separatorBefore + visible + + + Error + visible + message + + + instanceof + #endinitclip + #initclip + + + _alpha + _currentframe + _droptarget + _focusrect + _framesloaded + _height + _name + _quality + _rotation + _soundbuftime + _target + _totalframes + _url + _visible + _width + _x + _xmouse + _xscale + _y + _ymouse + _yscale + _parent + _root + _level + _lockroot + _accProps + + + + sortOn + toString + splice + sort + slice + shift + reverse + push + join + pop + concat + unshift + + + arguments + callee + caller + valueOf + + + getDate + getDay + getFullYear + getHours + getMilliseconds + getMinutes + getMonth + getSeconds + getTime + getTimezoneOffset + getUTCDate + getUTCDay + getUTCFullYear + getUTCHours + getUTCMilliseconds + getUTCMinutes + getUTCMonth + getUTCSeconds + getYear + setDate + setFullYear + setHours + setMilliseconds + setMinutes + setMonth + setSeconds + setTime + setUTCDate + setUTCFullYear + setUTCHours + setUTCMilliseconds + setUTCMinutes + setUTCMonth + setUTCSeconds + setYear + UTC + + + _global + apply + + + abs + acos + asin + atan + atan2 + ceil + cos + exp + floor + log + max + min + pow + round + sin + sqrt + tan + + E + LN2 + LN10 + LOG2E + LOG10E + PI + SQRT1_2 + SQRT2 + + + MAX_VALUE + MIN_VALUE + NEGATIVE_INFINITY + POSITIVE_INFINITY + + + addProperty + registerClass + unwatch + watch + + + charAt + charCodeAt + fromCharCode + lastIndexOf + indexOf + split + substr + substring + toLowerCase + toUpperCase + + + Accessibility + isActive + updateProperties + + + + System + capabilities + exactSettings + setClipboard + showSettings + useCodepage + avHardwareDisable + hasAccessibility + hasAudio + hasAudioEncoder + hasMP3 + hasVideoEncoder + pixelAspectRatio + screenColor + screenDPI + screenResolutionX + screenResolutionY + hasEmbeddedVideo + hasPrinting + hasScreenBroadcast + hasScreenPlayback + hasStreamingAudio + hasStreamingVideo + isDebugger + language + manufacturer + os + playerType + serverString + localFileReadDisable + version + + security + + + getRGB + getTransform + setRGB + setTransform + + + addListener + getAscii + isDown + getCode + isToggled + removeListener + BACKSPACE + CAPSLOCK + CONTROL + DELETEKEY + DOWN + END + ENTER + ESCAPE + HOME + INSERT + LEFT + PGDN + PGUP + SHIFT + RIGHT + SPACE + TAB + UP + + + hide + show + onMouseWheel + + + getBeginIndex + getCaretIndex + getEndIndex + getFocus + setFocus + setSelection + + + SharedObject + data + flush + getLocal + getSize + + + attachSound + getVolume + loadSound + setPan + getPan + setVolume + start + duration + position + onSoundComplete + id3 + onID3 + + + Video + deblocking + smoothing + + + Stage + align + height + scaleMode + showMenu + width + onResize + + + getFontList + getNewTextFormat + getTextFormat + removeTextField + replaceSel + setNewTextFormat + setTextFormat + autoSize + background + backgroundColor + border + borderColor + bottomScroll + embedFonts + hscroll + html + htmlText + maxChars + maxhscroll + multiline + password + restrict + selectable + text + textColor + textHeight + textWidth + type + variable + wordWrap + onChanged + onScroller + TextField + mouseWheelEnabled + replaceText + + + StyleSheet + getStyle + getStyleNames + parseCSS + setStyle + styleSheet + + + TextFormat + getTextExtent + blockIndent + bold + bullet + color + font + indent + italic + leading + leftMargin + rightMargin + size + tabStops + target + underline + url + + + TextSnapshot + findText + getCount + getSelected + getSelectedText + hitTestTextNearPos + getText + setSelectColor + setSelected + + + LoadVars + load + send + sendAndLoad + contentType + loaded + addRequestHeader + + + LocalConnection + allowDomain + allowInsecureDomain + domain + + + appendChild + cloneNode + createElement + createTextNode + hasChildNodes + insertBefore + parseXML + removeNode + attributes + childNodes + docTypeDecl + firstChild + ignoreWhite + lastChild + nextSibling + nodeName + nodeType + nodeValue + parentNode + previousSibling + status + xmlDecl + close + connect + onClose + onConnect + onXML + + + CustomActions + onUpdate + uninstall + list + install + get + + + NetConnection + + + NetStream + bufferLength + bufferTime + bytesLoaded + bytesTotal + pause + seek + setBufferTime + time + + + DataGlue + bindFormatFunction + bindFormatStrings + getDebugConfig + getDebugID + getService + setCredentials + setDebugID + getDebug + setDebug + createGatewayConnection + NetServices + setDefaultGatewayURL + addItem + addItemAt + addView + filter + getColumnNames + getItemAt + getLength + getNumberAvailable + isFullyPopulated + isLocal + removeAll + removeItemAt + replaceItemAt + setDeliveryMode + setField + sortItemsBy + + + chr + mbchr + mblength + mbord + mbsubstring + ord + _highquality + + + + + + abstract + boolean + byte + case + catch + char + class + const + debugger + default + + double + enum + export + extends + final + finally + float + goto + implements + + import + instanceof + int + interface + long + native + package + private + Void + protected + public + dynamic + + short + static + super + switch + synchronized + throw + throws + transient + try + volatile + + + diff --git a/extra/xmode/modes/ada95.xml b/extra/xmode/modes/ada95.xml new file mode 100644 index 0000000000..a6d15500a4 --- /dev/null +++ b/extra/xmode/modes/ada95.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + -- + + + " + " + + + ) + ( + .. + .all + := + /= + => + = + <> + << + >> + >= + <= + > + < + & + + + - + / + ** + * + + 'access + 'address + 'adjacent + 'aft + 'alignment + 'base + 'bit_order + 'body_version + 'callable + 'caller + 'ceiling + 'class + 'component_size + 'composed + 'constrained + 'copy_size + 'count + 'definite + 'delta + 'denorm + 'digits + 'exponent + 'external_tag + 'first + 'first_bit + 'floor + 'fore + 'fraction + 'genetic + 'identity + 'image + 'input + 'last + 'last_bit + 'leading_part + 'length + 'machine + 'machine_emax + 'machine_emin + 'machine_mantissa + 'machine_overflows + 'machine_radix + 'machine_rounds + 'max + 'max_size_in_storage_elements + 'min + 'model + 'model_emin + 'model_epsilon + 'model_mantissa + 'model_small + 'modulus + 'output + 'partition_id + 'pos + 'position + 'pred + 'range + 'read + 'remainder + 'round + 'rounding + 'safe_first + 'safe_last + 'scale + 'scaling + 'signed_zeros + 'size + 'small + 'storage_pool + 'storage_size + 'succ + 'tag + 'terminated + 'truncation + 'unbiased_rounding + 'unchecked_access + 'val + 'valid + 'value + 'version + 'wide_image + 'wide_value + 'wide_width + 'width + 'write + + + ' + ' + + + + + entry + function + procedure + + abort + abs + abstract + accept + access + aliased + all + and + array + at + begin + body + case + constant + declare + delay + delta + digits + do + else + elsif + end + exception + exit + for + goto + if + in + is + limited + loop + mod + new + not + or + others + out + package + pragma + private + protected + raise + range + record + rem + renames + requeue + return + select + separate + string + subtype + tagged + task + terminate + then + type + until + use + when + while + with + xor + + + + + address + boolean + character + duration + float + integer + latin_1 + natural + positive + string + time + + + false + null + true + + + diff --git a/extra/xmode/modes/antlr.xml b/extra/xmode/modes/antlr.xml new file mode 100644 index 0000000000..1e5dd1206a --- /dev/null +++ b/extra/xmode/modes/antlr.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + /** + */ + + + /* + */ + + // + + " + " + + | + : + + header + options + tokens + abstract + break + case + catch + continue + default + do + else + extends + final + finally + for + if + implements + instanceof + native + new + private + protected + public + return + static + switch + synchronized + throw + throws + transient + try + volatile + while + package + import + + boolean + byte + char + class + double + float + int + interface + long + short + void + + assert + strictfp + + false + null + super + this + true + + goto + const + + + diff --git a/extra/xmode/modes/apacheconf.xml b/extra/xmode/modes/apacheconf.xml new file mode 100644 index 0000000000..1c16a35199 --- /dev/null +++ b/extra/xmode/modes/apacheconf.xml @@ -0,0 +1,1007 @@ + + + + + + + + + + + + # + + + " + " + + + + ]*>]]> + ]]> + + + + ]*>]]> + ]]> + + + + AcceptMutex + AcceptPathInfo + AccessFileName + Action + AddAlt + AddAltByEncoding + AddAltByType + AddCharset + AddDefaultCharset + AddDescription + AddEncoding + AddHandler + AddIcon + AddIconByEncoding + AddIconByType + AddInputFilter + AddLanguage + AddModuleInfo + AddOutputFilter + AddOutputFilterByType + AddType + Alias + AliasMatch + AllowCONNECT + AllowEncodedSlashes + AuthDigestNcCheck + AuthDigestShmemSize + AuthLDAPCharsetConfig + BS2000Account + BrowserMatch + BrowserMatchNoCase + CacheDefaultExpire + CacheDirLength + CacheDirLevels + CacheDisable + CacheEnable + CacheExpiryCheck + CacheFile + CacheForceCompletion + CacheGcClean + CacheGcDaily + CacheGcInterval + CacheGcMemUsage + CacheGcUnused + CacheIgnoreCacheControl + CacheIgnoreNoLastMod + CacheLastModifiedFactor + CacheMaxExpire + CacheMaxFileSize + CacheMinFileSize + CacheNegotiatedDocs + CacheRoot + CacheSize + CacheTimeMargin + CharsetDefault + CharsetOptions + CharsetSourceEnc + CheckSpelling + ChildPerUserID + ContentDigest + CookieDomain + CookieExpires + CookieLog + CookieName + CookieStyle + CookieTracking + CoreDumpDirectory + CustomLog + DavDepthInfinity + DavLockDB + DavMinTimeout + DefaultIcon + DefaultLanguage + DefaultType + DeflateBufferSize + DeflateCompressionLevel + DeflateFilterNote + DeflateMemLevel + DeflateWindowSize + DirectoryIndex + DirectorySlash + DocumentRoot + EnableExceptionHook + EnableMMAP + EnableSendfile + ErrorDocument + ErrorLog + Example + ExpiresActive + ExpiresByType + ExpiresDefault + ExtFilterDefine + ExtendedStatus + FileETag + ForceLanguagePriority + ForensicLog + Group + Header + HeaderName + HostnameLookups + ISAPIAppendLogToErrors + ISAPIAppendLogToQuery + ISAPICacheFile + ISAPIFakeAsync + ISAPILogNotSupported + ISAPIReadAheadBuffer + IdentityCheck + ImapBase + ImapDefault + ImapMenu + Include + IndexIgnore + IndexOptions + IndexOrderDefault + KeepAlive + KeepAliveTimeout + LDAPCacheEntries + LDAPCacheTTL + LDAPOpCacheEntries + LDAPOpCacheTTL + LDAPSharedCacheFile + LDAPSharedCacheSize + LDAPTrustedCA + LDAPTrustedCAType + LanguagePriority + LimitInternalRecursion + LimitRequestBody + LimitRequestFields + LimitRequestFieldsize + LimitRequestLine + LimitXMLRequestBody + Listen + ListenBacklog + LoadFile + LoadModule + LockFile + LogFormat + LogLevel + MCacheMaxObjectCount + MCacheMaxObjectSize + MCacheMaxStreamingBuffer + MCacheMinObjectSize + MCacheRemovalAlgorithm + MCacheSize + MMapFile + MaxClients + MaxKeepAliveRequests + MaxMemFree + MaxRequestsPerChild + MaxRequestsPerThread + MaxSpareServers + MaxSpareThreads + MaxThreads + MaxThreadsPerChild + MetaDir + MetaFiles + MetaSuffix + MimeMagicFile + MinSpareServers + MinSpareThreads + MultiviewsMatch + NWSSLTrustedCerts + NWSSLUpgradeable + NameVirtualHost + NoProxy + NumServers + Options + PassEnv + PidFile + ProtocolEcho + ProxyBadHeader + ProxyBlock + ProxyDomain + ProxyErrorOverride + ProxyIOBufferSize + ProxyMaxForwards + ProxyPass + ProxyPassReverse + ProxyPreserveHost + ProxyReceiveBufferSize + ProxyRemote + ProxyRemoteMatch + ProxyRequests + ProxyTimeout + ProxyVia + RLimitCPU + RLimitMEM + RLimitNPROC + ReadmeName + Redirect + RedirectMatch + RedirectPermanent + RedirectTemp + RequestHeader + RewriteBase + RewriteCond + RewriteEngine + RewriteLock + RewriteLog + RewriteLogLevel + RewriteMap + RewriteOptions + RewriteRule + SSIEndTag + SSIErrorMsg + SSIStartTag + SSITimeFormat + SSIUndefinedEcho + SSLCACertificateFile + SSLCACertificatePath + SSLCARevocationFile + SSLCARevocationPath + SSLCertificateChainFile + SSLCertificateFile + SSLCertificateKeyFile + SSLCipherSuite + SSLEngine + SSLMutex + SSLOptions + SSLPassPhraseDialog + SSLProtocol + SSLProxyCACertificateFile + SSLProxyCACertificatePath + SSLProxyCARevocationFile + SSLProxyCARevocationPath + SSLProxyCipherSuite + SSLProxyEngine + SSLProxyMachineCertificateFile + SSLProxyMachineCertificatePath + SSLProxyProtocol + SSLProxyVerify + SSLProxyVerifyDepth + SSLRandomSeed + SSLSessionCache + SSLSessionCacheTimeout + SSLVerifyClient + SSLVerifyDepth + ScoreBoardFile + Script + ScriptAlias + ScriptAliasMatch + ScriptInterpreterSource + ScriptLog + ScriptLogBuffer + ScriptLogLength + ScriptSock + SecureListen + SendBufferSize + ServerAdmin + ServerLimit + ServerName + ServerRoot + ServerSignature + ServerTokens + SetEnv + SetEnvIf + SetEnvIfNoCase + SetHandler + SetInputFilter + SetOutputFilter + StartServers + StartThreads + SuexecUserGroup + ThreadLimit + ThreadStackSize + ThreadsPerChild + TimeOut + TransferLog + TypesConfig + UnsetEnv + UseCanonicalName + User + UserDir + VirtualDocumentRoot + VirtualDocumentRootIP + VirtualScriptAlias + VirtualScriptAliasIP + Win32DisableAcceptEx + XBitHack + + + AddModule + ClearModuleList + ServerType + Port + + Off + On + None + + + + + + # + + + " + " + + + + ]*>]]> + ]]> + + + + ]*>]]> + ]]> + + + + + AcceptMutex + AcceptPathInfo + AccessFileName + Action + AddAlt + AddAltByEncoding + AddAltByType + AddCharset + AddDefaultCharset + AddDescription + AddEncoding + AddHandler + AddIcon + AddIconByEncoding + AddIconByType + AddInputFilter + AddLanguage + AddModuleInfo + AddOutputFilter + AddOutputFilterByType + AddType + Alias + AliasMatch + Allow + AllowCONNECT + AllowEncodedSlashes + AllowOverride + Anonymous + Anonymous_Authoritative + Anonymous_LogEmail + Anonymous_MustGiveEmail + Anonymous_NoUserID + Anonymous_VerifyEmail + AuthAuthoritative + AuthDBMAuthoritative + AuthDBMGroupFile + AuthDBMType + AuthDBMUserFile + AuthDigestAlgorithm + AuthDigestDomain + AuthDigestFile + AuthDigestGroupFile + AuthDigestNcCheck + AuthDigestNonceFormat + AuthDigestNonceLifetime + AuthDigestQop + AuthDigestShmemSize + AuthGroupFile + AuthLDAPAuthoritative + AuthLDAPBindDN + AuthLDAPBindPassword + AuthLDAPCharsetConfig + AuthLDAPCompareDNOnServer + AuthLDAPDereferenceAliases + AuthLDAPEnabled + AuthLDAPFrontPageHack + AuthLDAPGroupAttribute + AuthLDAPGroupAttributeIsDN + AuthLDAPRemoteUserIsDN + AuthLDAPUrl + AuthName + AuthType + AuthUserFile + BS2000Account + BrowserMatch + BrowserMatchNoCase + CGIMapExtension + CacheDefaultExpire + CacheDirLength + CacheDirLevels + CacheDisable + CacheEnable + CacheExpiryCheck + CacheFile + CacheForceCompletion + CacheGcClean + CacheGcDaily + CacheGcInterval + CacheGcMemUsage + CacheGcUnused + CacheIgnoreCacheControl + CacheIgnoreNoLastMod + CacheLastModifiedFactor + CacheMaxExpire + CacheMaxFileSize + CacheMinFileSize + CacheNegotiatedDocs + CacheRoot + CacheSize + CacheTimeMargin + CharsetDefault + CharsetOptions + CharsetSourceEnc + CheckSpelling + ChildPerUserID + ContentDigest + CookieDomain + CookieExpires + CookieLog + CookieName + CookieStyle + CookieTracking + CoreDumpDirectory + CustomLog + Dav + DavDepthInfinity + DavLockDB + DavMinTimeout + DefaultIcon + DefaultLanguage + DefaultType + DeflateBufferSize + DeflateCompressionLevel + DeflateFilterNote + DeflateMemLevel + DeflateWindowSize + Deny + DirectoryIndex + DirectorySlash + DocumentRoot + EnableMMAP + EnableSendfile + ErrorDocument + ErrorLog + Example + ExpiresActive + ExpiresByType + ExpiresDefault + ExtFilterDefine + ExtFilterOptions + ExtendedStatus + FileETag + ForceLanguagePriority + ForceType + Group + Header + HeaderName + HostnameLookups + ISAPIAppendLogToErrors + ISAPIAppendLogToQuery + ISAPICacheFile + ISAPIFakeAsync + ISAPILogNotSupported + ISAPIReadAheadBuffer + IdentityCheck + ImapBase + ImapDefault + ImapMenu + Include + IndexIgnore + IndexOptions + IndexOrderDefault + KeepAlive + KeepAliveTimeout + LDAPCacheEntries + LDAPCacheTTL + LDAPOpCacheEntries + LDAPOpCacheTTL + LDAPSharedCacheSize + LDAPTrustedCA + LDAPTrustedCAType + LanguagePriority + LimitInternalRecursion + LimitRequestBody + LimitRequestFields + LimitRequestFieldsize + LimitRequestLine + LimitXMLRequestBody + Listen + ListenBacklog + LoadFile + LoadModule + LockFile + LogFormat + LogLevel + MCacheMaxObjectCount + MCacheMaxObjectSize + MCacheMaxStreamingBuffer + MCacheMinObjectSize + MCacheRemovalAlgorithm + MCacheSize + MMapFile + MaxClients + MaxKeepAliveRequests + MaxMemFree + MaxRequestsPerChild + MaxRequestsPerThread + MaxSpareServers + MaxSpareThreads + MaxThreads + MaxThreadsPerChild + MetaDir + MetaFiles + MetaSuffix + MimeMagicFile + MinSpareServers + MinSpareThreads + ModMimeUsePathInfo + MultiviewsMatch + NWSSLTrustedCerts + NameVirtualHost + NoProxy + NumServers + Options + Order + PassEnv + PidFile + ProtocolEcho + ProxyBadHeader + ProxyBlock + ProxyDomain + ProxyErrorOverride + ProxyIOBufferSize + ProxyMaxForwards + ProxyPass + ProxyPassReverse + ProxyPreserveHost + ProxyReceiveBufferSize + ProxyRemote + ProxyRemoteMatch + ProxyRequests + ProxyTimeout + ProxyVia + RLimitCPU + RLimitMEM + RLimitNPROC + ReadmeName + Redirect + RedirectMatch + RedirectPermanent + RedirectTemp + RemoveCharset + RemoveEncoding + RemoveHandler + RemoveInputFilter + RemoveLanguage + RemoveOutputFilter + RemoveType + RequestHeader + Require + RewriteBase + RewriteCond + RewriteEngine + RewriteLock + RewriteLog + RewriteLogLevel + RewriteMap + RewriteOptions + RewriteRule + SSIEndTag + SSIErrorMsg + SSIStartTag + SSITimeFormat + SSIUndefinedEcho + SSLCACertificateFile + SSLCACertificatePath + SSLCARevocationFile + SSLCARevocationPath + SSLCertificateChainFile + SSLCertificateFile + SSLCertificateKeyFile + SSLCipherSuite + SSLEngine + SSLMutex + SSLOptions + SSLPassPhraseDialog + SSLProtocol + SSLProxyCACertificateFile + SSLProxyCACertificatePath + SSLProxyCARevocationFile + SSLProxyCARevocationPath + SSLProxyCipherSuite + SSLProxyEngine + SSLProxyMachineCertificateFile + SSLProxyMachineCertificatePath + SSLProxyProtocol + SSLProxyVerify + SSLProxyVerifyDepth + SSLRandomSeed + SSLRequire + SSLRequireSSL + SSLSessionCache + SSLSessionCacheTimeout + SSLVerifyClient + SSLVerifyDepth + Satisfy + ScoreBoardFile + Script + ScriptAlias + ScriptAliasMatch + ScriptInterpreterSource + ScriptLog + ScriptLogBuffer + ScriptLogLength + ScriptSock + SecureListen + SendBufferSize + ServerAdmin + ServerLimit + ServerName + ServerRoot + ServerSignature + ServerTokens + SetEnv + SetEnvIf + SetEnvIfNoCase + SetHandler + SetInputFilter + SetOutputFilter + StartServers + StartThreads + SuexecUserGroup + ThreadLimit + ThreadStackSize + ThreadsPerChild + TimeOut + TransferLog + TypesConfig + UnsetEnv + UseCanonicalName + User + UserDir + VirtualDocumentRoot + VirtualDocumentRootIP + VirtualScriptAlias + VirtualScriptAliasIP + XBitHack + + + AddModule + ClearModuleList + + + SVNPath + SVNParentPath + SVNIndexXSLT + + + PythonHandler + PythonDebug + + All + ExecCGI + FollowSymLinks + Includes + IncludesNOEXEC + Indexes + MultiViews + None + Off + On + SymLinksIfOwnerMatch + from + + + + + + # + + + ]*>]]> + ]]> + + + + " + " + + + + AcceptMutex + AcceptPathInfo + AccessFileName + Action + AddAlt + AddAltByEncoding + AddAltByType + AddCharset + AddDefaultCharset + AddDescription + AddEncoding + AddHandler + AddIcon + AddIconByEncoding + AddIconByType + AddInputFilter + AddLanguage + AddModuleInfo + AddOutputFilter + AddOutputFilterByType + AddType + Alias + AliasMatch + AllowCONNECT + AllowEncodedSlashes + AssignUserID + AuthDigestNcCheck + AuthDigestShmemSize + AuthLDAPCharsetConfig + BS2000Account + BrowserMatch + BrowserMatchNoCase + CacheDefaultExpire + CacheDirLength + CacheDirLevels + CacheDisable + CacheEnable + CacheExpiryCheck + CacheFile + CacheForceCompletion + CacheGcClean + CacheGcDaily + CacheGcInterval + CacheGcMemUsage + CacheGcUnused + CacheIgnoreCacheControl + CacheIgnoreNoLastMod + CacheLastModifiedFactor + CacheMaxExpire + CacheMaxFileSize + CacheMinFileSize + CacheNegotiatedDocs + CacheRoot + CacheSize + CacheTimeMargin + CharsetDefault + CharsetOptions + CharsetSourceEnc + CheckSpelling + ChildPerUserID + ContentDigest + CookieDomain + CookieExpires + CookieLog + CookieName + CookieStyle + CookieTracking + CoreDumpDirectory + CustomLog + DavDepthInfinity + DavLockDB + DavMinTimeout + DefaultIcon + DefaultLanguage + DefaultType + DeflateBufferSize + DeflateCompressionLevel + DeflateFilterNote + DeflateMemLevel + DeflateWindowSize + DirectoryIndex + DirectorySlash + DocumentRoot + EnableMMAP + EnableSendfile + ErrorDocument + ErrorLog + Example + ExpiresActive + ExpiresByType + ExpiresDefault + ExtFilterDefine + ExtendedStatus + FileETag + ForceLanguagePriority + ForensicLog + Group + Header + HeaderName + HostnameLookups + ISAPIAppendLogToErrors + ISAPIAppendLogToQuery + ISAPICacheFile + ISAPIFakeAsync + ISAPILogNotSupported + ISAPIReadAheadBuffer + IdentityCheck + ImapBase + ImapDefault + ImapMenu + Include + IndexIgnore + IndexOptions + IndexOrderDefault + JkMount + KeepAlive + KeepAliveTimeout + LDAPCacheEntries + LDAPCacheTTL + LDAPOpCacheEntries + LDAPOpCacheTTL + LDAPSharedCacheSize + LDAPTrustedCA + LDAPTrustedCAType + LanguagePriority + LimitInternalRecursion + LimitRequestBody + LimitRequestFields + LimitRequestFieldsize + LimitRequestLine + LimitXMLRequestBody + Listen + ListenBacklog + LoadFile + LoadModule + LockFile + LogFormat + LogLevel + MCacheMaxObjectCount + MCacheMaxObjectSize + MCacheMaxStreamingBuffer + MCacheMinObjectSize + MCacheRemovalAlgorithm + MCacheSize + MMapFile + MaxClients + MaxKeepAliveRequests + MaxMemFree + MaxRequestsPerChild + MaxRequestsPerThread + MaxSpareServers + MaxSpareThreads + MaxThreads + MaxThreadsPerChild + MetaDir + MetaFiles + MetaSuffix + MimeMagicFile + MinSpareServers + MinSpareThreads + MultiviewsMatch + NWSSLTrustedCerts + NameVirtualHost + NoProxy + NumServers + Options + PassEnv + PidFile + ProtocolEcho + ProxyBadHeader + ProxyBlock + ProxyDomain + ProxyErrorOverride + ProxyIOBufferSize + ProxyMaxForwards + ProxyPass + ProxyPassReverse + ProxyPreserveHost + ProxyReceiveBufferSize + ProxyRemote + ProxyRemoteMatch + ProxyRequests + ProxyTimeout + ProxyVia + RLimitCPU + RLimitMEM + RLimitNPROC + ReadmeName + Redirect + RedirectMatch + RedirectPermanent + RedirectTemp + RemoveCharset + RemoveEncoding + RemoveHandler + RemoveInputFilter + RemoveLanguage + RemoveOutputFilter + RemoveType + RequestHeader + RewriteBase + RewriteCond + RewriteEngine + RewriteLock + RewriteLog + RewriteLogLevel + RewriteMap + RewriteOptions + RewriteRule + SSIEndTag + SSIErrorMsg + SSIStartTag + SSITimeFormat + SSIUndefinedEcho + SSLCACertificateFile + SSLCACertificatePath + SSLCARevocationFile + SSLCARevocationPath + SSLCertificateChainFile + SSLCertificateFile + SSLCertificateKeyFile + SSLCipherSuite + SSLEngine + SSLMutex + SSLOptions + SSLPassPhraseDialog + SSLProtocol + SSLProxyCACertificateFile + SSLProxyCACertificatePath + SSLProxyCARevocationFile + SSLProxyCARevocationPath + SSLProxyCipherSuite + SSLProxyEngine + SSLProxyMachineCertificateFile + SSLProxyMachineCertificatePath + SSLProxyProtocol + SSLProxyVerify + SSLProxyVerifyDepth + SSLRandomSeed + SSLSessionCache + SSLSessionCacheTimeout + SSLVerifyClient + SSLVerifyDepth + ScoreBoardFile + Script + ScriptAlias + ScriptAliasMatch + ScriptInterpreterSource + ScriptLog + ScriptLogBuffer + ScriptLogLength + ScriptSock + SecureListen + SendBufferSize + ServerAdmin + ServerAlias + ServerLimit + ServerName + ServerPath + ServerRoot + ServerSignature + ServerTokens + SetEnv + SetEnvIf + SetEnvIfNoCase + SetHandler + SetInputFilter + SetOutputFilter + StartServers + StartThreads + SuexecUserGroup + ThreadLimit + ThreadStackSize + ThreadsPerChild + TimeOut + TransferLog + TypesConfig + UnsetEnv + UseCanonicalName + User + UserDir + VirtualDocumentRoot + VirtualDocumentRootIP + VirtualScriptAlias + VirtualScriptAliasIP + XBitHack + + Off + On + None + + + + diff --git a/extra/xmode/modes/apdl.xml b/extra/xmode/modes/apdl.xml new file mode 100644 index 0000000000..d66f8bf7ec --- /dev/null +++ b/extra/xmode/modes/apdl.xml @@ -0,0 +1,7536 @@ + + + + + + + + + + + + + + + + : + + + ! + + + + ' + ' + + + + + *ABBR + *ABB + *AFUN + *AFU + *ASK + *CFCLOS + *CFC + *CFOPEN + *CFO + *CFWRITE + *CFW + *CREATE + *CRE + *CYCLE + *CYC + *DEL + *DIM + *DO + *ELSEIF + *ELSE + *ENDDO + *ENDIF + *END + *EVAL + *EVA + *EXIT + *EXI + *GET + *GO + *IF + *LIST + *LIS + *MFOURI + *MFO + *MFUN + *MFU + *MOONEY + *MOO + *MOPER + *MOP + *MSG + *REPEAT + *REP + *SET + *STATUS + *STA + *TREAD + *TRE + *ULIB + *ULI + *USE + *VABS + *VAB + *VCOL + *VCO + *VCUM + *VCU + *VEDIT + *VED + *VFACT + *VFA + *VFILL + *VFI + *VFUN + *VFU + *VGET + *VGE + *VITRP + *VIT + *VLEN + *VLE + *VMASK + *VMA + *VOPER + *VOP + *VPLOT + *VPL + *VPUT + *VPU + *VREAD + *VRE + *VSCFUN + *VSC + *VSTAT + *VST + *VWRITE + *VWR + + + + + + /ANFILE + /ANF + /ANGLE + /ANG + /ANNOT + /ANN + /ANUM + /ANU + /ASSIGN + /ASS + /AUTO + /AUT + /AUX15 + /AUX2 + /AUX + /AXLAB + /AXL + /BATCH + /BAT + /CLABEL + /CLA + /CLEAR + /CLE + /CLOG + /CLO + /CMAP + /CMA + /COLOR + /COL + /COM + /CONFIG + /CONTOUR + /CON + /COPY + /COP + /CPLANE + /CPL + /CTYPE + /CTY + /CVAL + /CVA + /DELETE + /DEL + /DEVDISP + /DEVICE + /DEV + /DIST + /DIS + /DSCALE + /DSC + /DV3D + /DV3 + /EDGE + /EDG + /EFACET + /EFA + /EOF + /ERASE + /ERA + /ESHAPE + /ESH + /EXIT + /EXI + /EXPAND + /EXP + /FACET + /FAC + /FDELE + /FDE + /FILNAME + /FIL + /FOCUS + /FOC + /FORMAT + /FOR + /FTYPE + /FTY + /GCMD + /GCM + /GCOLUMN + /GCO + /GFILE + /GFI + /GFORMAT + /GFO + /GLINE + /GLI + /GMARKER + /GMA + /GOLIST + /GOL + /GOPR + /GOP + /GO + /GRAPHICS + /GRA + /GRESUME + /GRE + /GRID + /GRI + /GROPT + /GRO + /GRTYP + /GRT + /GSAVE + /GSA + /GST + /GTHK + /GTH + /GTYPE + /GTY + /HEADER + /HEA + /INPUT + /INP + /LARC + /LAR + /LIGHT + /LIG + /LINE + /LIN + /LSPEC + /LSP + /LSYMBOL + /LSY + /MENU + /MEN + /MPLIB + /MPL + /MREP + /MRE + /MSTART + /MST + /NERR + /NER + /NOERASE + /NOE + /NOLIST + /NOL + /NOPR + /NOP + /NORMAL + /NOR + /NUMBER + /NUM + /OPT + /OUTPUT + /OUt + /PAGE + /PAG + /PBC + /PBF + /PCIRCLE + /PCI + /PCOPY + /PCO + /PLOPTS + /PLO + /PMACRO + /PMA + /PMETH + /PME + /PMORE + /PMO + /PNUM + /PNU + /POLYGON + /POL + /POST26 + /POST1 + /POS + /PREP7 + /PRE + /PSEARCH + /PSE + /PSF + /PSPEC + /PSP + /PSTATUS + /PST + /PSYMB + /PSY + /PWEDGE + /PWE + /QUIT + /QUI + /RATIO + /RAT + /RENAME + /REN + /REPLOT + /REP + /RESET + /RES + /RGB + /RUNST + /RUN + /SECLIB + /SEC + /SEG + /SHADE + /SHA + /SHOWDISP + /SHOW + /SHO + /SHRINK + /SHR + /SOLU + /SOL + /SSCALE + /SSC + /STATUS + /STA + /STITLE + /STI + /SYP + /SYS + /TITLE + /TIT + /TLABEL + /TLA + /TRIAD + /TRI + /TRLCY + /TRL + /TSPEC + /TSP + /TYPE + /TYP + /UCMD + /UCM + /UIS + /UI + /UNITS + /UNI + /USER + /USE + /VCONE + /VCO + /VIEW + /VIE + /VSCALE + /VSC + /VUP + /WAIT + /WAI + /WINDOW + /WIN + /XRANGE + /XRA + /YRANGE + /YRA + /ZOOM + /ZOO + + + + + + - + $ + = + ( + ) + , + ; + * + / + + + %C + %G + %I + %/ + + + + % + % + + + + + + + A + AADD + AADD + AATT + AATT + ABBR + ABBRES + ABBS + ABBSAV + ABS + ACCA + ACCAT + ACEL + ACEL + ACLE + ACLEAR + ADAP + ADAPT + ADD + ADDA + ADDAM + ADEL + ADELE + ADGL + ADGL + ADRA + ADRAG + AFIL + AFILLT + AFLI + AFLIST + AFSU + AFSURF + AGEN + AGEN + AGLU + AGLUE + AINA + AINA + AINP + AINP + AINV + AINV + AL + ALIS + ALIST + ALLS + ALLSEL + ALPF + ALPFILL + ALPH + ALPHAD + AMAP + AMAP + AMES + AMESH + ANCN + ANCNTR + ANCU + ANCUT + ANDA + ANDATA + ANDS + ANDSCL + ANDY + ANDYNA + ANFL + ANFLOW + ANIM + ANIM + ANIS + ANISOS + ANMO + ANMODE + ANOR + ANORM + ANTI + ANTIME + ANTY + ANTYPE + AOFF + AOFFST + AOVL + AOVLAP + APLO + APLOT + APPE + APPEND + APTN + APTN + ARCL + ARCLEN + ARCO + ARCOLLAPSE + ARCT + ARCTRM + ARDE + ARDETACH + AREA + AREAS + AREF + AREFINE + AREV + AREVERSE + ARFI + ARFILL + ARME + ARMERGE + AROT + AROTAT + ARSC + ARSCALE + ARSP + ARSPLIT + ARSY + ARSYM + ASBA + ASBA + ASBL + ASBL + ASBV + ASBV + ASBW + ASBW + ASEL + ASEL + ASKI + ASKIN + ASLL + ASLL + ASLV + ASLV + ASUB + ASUB + ASUM + ASUM + ATAN + ATAN + ATRA + ATRAN + ATYP + ATYPE + AUTO + AUTOTS + AVPR + AVPRIN + AVRE + AVRES + BELL + BELLOW + BEND + BEND + BETA + BETAD + BF + BFA + BFAD + BFADELE + BFAL + BFALIST + BFCU + BFCUM + BFDE + BFDELE + BFE + BFEC + BFECUM + BFED + BFEDELE + BFEL + BFELIST + BFES + BFESCAL + BFIN + BFINT + BFK + BFKD + BFKDELE + BFKL + BFKLIST + BFL + BFLD + BFLDELE + BFLI + BFLIST + BFLL + BFLLIST + BFSC + BFSCALE + BFTR + BFTRAN + BFUN + BFUNIF + BFV + BFVD + BFVDELE + BFVL + BFVLIST + BIOO + BIOOPT + BIOT + BIOT + BLC4 + BLC4 + BLC5 + BLC5 + BLOC + BLOCK + BOOL + BOOL + BOPT + BOPTN + BRAN + BRANCH + BSPL + BSPLIN + BTOL + BTOL + BUCO + BUCOPT + CALC + CALC + CBDO + CBDOF + CDRE + CDREAD + CDWR + CDWRITE + CE + CECM + CECMOD + CECY + CECYC + CEDE + CEDELE + CEIN + CEINTF + CELI + CELIST + CENT + CENTER + CEQN + CEQN + CERI + CERIG + CESG + CESGEN + CFAC + CFACT + CGLO + CGLOC + CGOM + CGOMGA + CHEC + CHECK + CHKM + CHKMSH + CIRC + CIRCLE + CLOC + CLOCAL + CLOG + CLOG + CLRM + CLRMSHLN + CM + CMDE + CMDELE + CMED + CMEDIT + CMGR + CMGRP + CMLI + CMLIST + CMPL + CMPLOT + CMSE + CMSEL + CNVT + CNVTOL + CON4 + CON4 + CONE + CONE + CONJ + CONJUG + COUP + COUPLE + COVA + COVAL + CP + CPDE + CPDELE + CPIN + CPINTF + CPLG + CPLGEN + CPLI + CPLIST + CPNG + CPNGEN + CPSG + CPSGEN + CQC + CRPL + CRPLIM + CS + CSCI + CSCIR + CSDE + CSDELE + CSKP + CSKP + CSLI + CSLIST + CSWP + CSWPLA + CSYS + CSYS + CURR2D + CURR + CUTC + CUTCONTROL + CVAR + CVAR + CYCG + CYCGEN + CYCS + CYCSOL + CYL4 + CYL4 + CYL5 + CYL5 + CYLI + CYLIND + D + DA + DADE + DADELE + DALI + DALIST + DATA + DATA + DATA + DATADEF + DCGO + DCGOMG + DCUM + DCUM + DDEL + DDELE + DEAC + DEACT + DEFI + DEFINE + DELT + DELTIM + DERI + DERIV + DESI + DESIZE + DESO + DESOL + DETA + DETAB + DIG + DIGI + DIGIT + DISP + DISPLAY + DK + DKDE + DKDELE + DKLI + DKLIST + DL + DLDE + DLDELE + DLIS + DLIST + DLLI + DLLIST + DMOV + DMOVE + DMPR + DMPRAT + DNSO + DNSOL + DOF + DOFS + DOFSEL + DOME + DOMEGA + DSCA + DSCALE + DSET + DSET + DSUM + DSUM + DSUR + DSURF + DSYM + DSYM + DSYS + DSYS + DTRA + DTRAN + DUMP + DUMP + DYNO + DYNOPT + E + EALI + EALIVE + EDBO + EDBOUND + EDBV + EDBVIS + EDCD + EDCDELE + EDCG + EDCGEN + EDCL + EDCLIST + EDCO + EDCONTACT + EDCP + EDCPU + EDCR + EDCRB + EDCS + EDCSC + EDCT + EDCTS + EDCU + EDCURVE + EDDA + EDDAMP + EDDR + EDDRELAX + EDEL + EDELE + EDEN + EDENERGY + EDFP + EDFPLOT + EDHG + EDHGLS + EDHI + EDHIST + EDHT + EDHTIME + EDIN + EDINT + EDIV + EDIVELO + EDLC + EDLCS + EDLD + EDLDPLOT + EDLO + EDLOAD + EDMP + EDMP + EDND + EDNDTSD + EDNR + EDNROT + EDOP + EDOPT + EDOU + EDOUT + EDRE + EDREAD + EDRS + EDRST + EDSH + EDSHELL + EDSO + EDSOLV + EDST + EDSTART + EDWE + EDWELD + EDWR + EDWRITE + EGEN + EGEN + EINT + EINTF + EKIL + EKILL + ELEM + ELEM + ELIS + ELIST + EMAG + EMAGERR + EMF + EMID + EMID + EMIS + EMIS + EMOD + EMODIF + EMOR + EMORE + EMSY + EMSYM + EMUN + EMUNIT + EN + ENGE + ENGEN + ENOR + ENORM + ENSY + ENSYM + EPLO + EPLOT + EQSL + EQSLV + ERAS + ERASE + EREA + EREAD + EREF + EREFINE + ERES + ERESX + ERNO + ERNORM + ERRA + ERRANG + ESEL + ESEL + ESIZ + ESIZE + ESLA + ESLA + ESLL + ESLL + ESLN + ESLN + ESLV + ESLV + ESOL + ESOL + ESOR + ESORT + ESTI + ESTIF + ESUR + ESURF + ESYM + ESYM + ESYS + ESYS + ET + ETAB + ETABLE + ETCH + ETCHG + ETDE + ETDELE + ETLI + ETLIST + ETYP + ETYPE + EUSO + EUSORT + EWRI + EWRITE + EXP + EXPA + EXPA + EXPAND + EXPASS + EXPS + EXPSOL + EXTO + EXTOPT + EXTR + EXTREM + FATI + FATIGUE + FCUM + FCUM + FDEL + FDELE + FE + FEBO + FEBODY + FECO + FECONS + FEFO + FEFOR + FELI + FELIST + FESU + FESURF + FILE + FILE + FILE + FILE + FILEAUX2 + FILEDISP + FILL + FILL + FILL + FILLDATA + FINI + FINISH + FITE + FITEM + FK + FKDE + FKDELE + FKLI + FKLIST + FL + FLAN + FLANGE + FLDA + FLDATA + FLDATA10 + FLDATA11 + FLDATA12 + FLDATA13 + FLDATA14 + FLDATA15 + FLDATA16 + FLDATA17 + FLDATA18 + FLDATA19 + FLDATA1 + FLDATA20 + FLDATA20A + FLDATA21 + FLDATA22 + FLDATA23 + FLDATA24 + FLDATA24A + FLDATA24B + FLDATA24C + FLDATA24D + FLDATA25 + FLDATA26 + FLDATA27 + FLDATA28 + FLDATA29 + FLDATA2 + FLDATA30 + FLDATA31 + FLDATA32 + FLDATA33 + FLDATA37 + FLDATA3 + FLDATA4 + FLDATA4A + FLDATA5 + FLDATA6 + FLDATA7 + FLDATA8 + FLDATA9 + FLDATA + FLIS + FLIST + FLLI + FLLIST + FLOC + FLOCHECK + FLOT + FLOTRAN + FLRE + FLREAD + FLST + FLST + FLUX + FLUXV + FMAG + FMAG + FMAGBC + FMAGSUM + FOR2 + FOR2D + FORC + FORCE + FORM + FORM + FP + FPLI + FPLIST + FREQ + FREQ + FS + FSCA + FSCALE + FSDE + FSDELE + FSLI + FSLIST + FSNO + FSNODE + FSPL + FSPLOT + FSSE + FSSECT + FSUM + FSUM + FTCA + FTCALC + FTRA + FTRAN + FTSI + FTSIZE + FTWR + FTWRITE + FVME + FVMESH + GAP + GAPF + GAPFINISH + GAPL + GAPLIST + GAPM + GAPMERGE + GAPO + GAPOPT + GAPP + GAPPLOT + GAUG + GAUGE + GCGE + GCGEN + GENO + GENOPT + GEOM + GEOM + GEOM + GEOMETRY + GP + GPDE + GPDELE + GPLI + GPLIST + GPLO + GPLOT + GRP + GSUM + GSUM + HARF + HARFRQ + HELP + HELP + HELP + HELPDISP + HFSW + HFSWEEP + HMAG + HMAGSOLV + HPGL + HPGL + HPTC + HPTCREATE + HPTD + HPTDELETE + HRCP + HRCPLX + HREX + HREXP + HROP + HROPT + HROU + HROUT + IC + ICDE + ICDELE + ICLI + ICLIST + IGES + IGES + IGESIN + IGESOUT + IMAG + IMAGIN + IMME + IMMED + IMPD + IMPD + INRE + INRES + INRT + INRTIA + INT1 + INT1 + INTS + INTSRF + IOPT + IOPTN + IRLF + IRLF + IRLI + IRLIST + K + KATT + KATT + KBC + KBET + KBETW + KCAL + KCALC + KCEN + KCENTER + KCLE + KCLEAR + KDEL + KDELE + KDIS + KDIST + KESI + KESIZE + KEYO + KEYOPT + KEYP + KEYPTS + KEYW + KEYW + KFIL + KFILL + KGEN + KGEN + KL + KLIS + KLIST + KMES + KMESH + KMOD + KMODIF + KMOV + KMOVE + KNOD + KNODE + KPLO + KPLOT + KPSC + KPSCALE + KREF + KREFINE + KSCA + KSCALE + KSCO + KSCON + KSEL + KSEL + KSLL + KSLL + KSLN + KSLN + KSUM + KSUM + KSYM + KSYMM + KTRA + KTRAN + KUSE + KUSE + KWPA + KWPAVE + KWPL + KWPLAN + L2AN + L2ANG + L2TA + L2TAN + L + LANG + LANG + LARC + LARC + LARE + LAREA + LARG + LARGE + LATT + LATT + LAYE + LAYE + LAYER + LAYERP26 + LAYL + LAYLIST + LAYP + LAYPLOT + LCAB + LCABS + LCAS + LCASE + LCCA + LCCA + LCCALC + LCCAT + LCDE + LCDEF + LCFA + LCFACT + LCFI + LCFILE + LCLE + LCLEAR + LCOM + LCOMB + LCOP + LCOPER + LCSE + LCSEL + LCSL + LCSL + LCSU + LCSUM + LCWR + LCWRITE + LCZE + LCZERO + LDEL + LDELE + LDIV + LDIV + LDRA + LDRAG + LDRE + LDREAD + LESI + LESIZE + LEXT + LEXTND + LFIL + LFILLT + LFSU + LFSURF + LGEN + LGEN + LGLU + LGLUE + LGWR + LGWRITE + LINA + LINA + LINE + LINE + LINE + LINES + LINL + LINL + LINP + LINP + LINV + LINV + LLIS + LLIST + LMAT + LMATRIX + LMES + LMESH + LNCO + LNCOLLAPSE + LNDE + LNDETACH + LNFI + LNFILL + LNME + LNMERGE + LNSP + LNSPLIT + LNSR + LNSRCH + LOCA + LOCAL + LOVL + LOVLAP + LPLO + LPLOT + LPTN + LPTN + LREF + LREFINE + LREV + LREVERSE + LROT + LROTAT + LSBA + LSBA + LSBL + LSBL + LSBV + LSBV + LSBW + LSBW + LSCL + LSCLEAR + LSDE + LSDELE + LSEL + LSEL + LSLA + LSLA + LSLK + LSLK + LSOP + LSOPER + LSRE + LSREAD + LSSC + LSSCALE + LSSO + LSSOLVE + LSTR + LSTR + LSUM + LSUM + LSWR + LSWRITE + LSYM + LSYMM + LTAN + LTAN + LTRA + LTRAN + LUMP + LUMPM + LVSC + LVSCALE + LWPL + LWPLAN + M + MAGO + MAGOPT + MAGS + MAGSOLV + MAST + MASTER + MAT + MATE + MATER + MDAM + MDAMP + MDEL + MDELE + MESH + MESHING + MGEN + MGEN + MITE + MITER + MLIS + MLIST + MMF + MODE + MODE + MODM + MODMSH + MODO + MODOPT + MONI + MONITOR + MOPT + MOPT + MOVE + MOVE + MP + MPAM + MPAMOD + MPCH + MPCHG + MPDA + MPDATA + MPDE + MPDELE + MPDR + MPDRES + MPLI + MPLIST + MPMO + MPMOD + MPPL + MPPLOT + MPRE + MPREAD + MPRI + MPRINT + MPTE + MPTEMP + MPTG + MPTGEN + MPTR + MPTRES + MPUN + MPUNDO + MPWR + MPWRITE + MSAD + MSADV + MSCA + MSCAP + MSDA + MSDATA + MSHA + MSHAPE + MSHK + MSHKEY + MSHM + MSHMID + MSHP + MSHPATTERN + MSME + MSMETH + MSNO + MSNOMF + MSPR + MSPROP + MSQU + MSQUAD + MSRE + MSRELAX + MSSO + MSSOLU + MSSP + MSSPEC + MSTE + MSTERM + MSVA + MSVARY + MXPA + MXPAND + N + NANG + NANG + NCNV + NCNV + NDEL + NDELE + NDIS + NDIST + NEQI + NEQIT + NFOR + NFORCE + NGEN + NGEN + NKPT + NKPT + NLGE + NLGEOM + NLIS + NLIST + NLOG + NLOG + NLOP + NLOPT + NMOD + NMODIF + NOCO + NOCOLOR + NODE + NODES + NOOR + NOORDER + NPLO + NPLOT + NPRI + NPRINT + NREA + NREAD + NREF + NREFINE + NRLS + NRLSUM + NROP + NROPT + NROT + NROTAT + NRRA + NRRANG + NSCA + NSCALE + NSEL + NSEL + NSLA + NSLA + NSLE + NSLE + NSLK + NSLK + NSLL + NSLL + NSLV + NSLV + NSOL + NSOL + NSOR + NSORT + NSTO + NSTORE + NSUB + NSUBST + NSVR + NSVR + NSYM + NSYM + NUMC + NUMCMP + NUME + NUMEXP + NUMM + NUMMRG + NUMO + NUMOFF + NUMS + NUMSTR + NUMV + NUMVAR + NUSO + NUSORT + NWPA + NWPAVE + NWPL + NWPLAN + NWRI + NWRITE + nx + ny + nz + OMEG + OMEGA + OPAD + OPADD + OPAN + OPANL + OPCL + OPCLR + OPDA + OPDATA + OPDE + OPDEL + OPEQ + OPEQN + OPER + OPERATE + OPEX + OPEXE + OPFA + OPFACT + OPFR + OPFRST + OPGR + OPGRAD + OPKE + OPKEEP + OPLF + OPLFA + OPLG + OPLGR + OPLI + OPLIST + OPLO + OPLOOP + OPLS + OPLSW + OPMA + OPMAKE + OPNC + OPNCONTROL + OPPR + OPPRNT + OPRA + OPRAND + OPRE + OPRESU + OPRF + OPRFA + OPRG + OPRGR + OPRS + OPRSW + OPSA + OPSAVE + OPSE + OPSEL + OPSU + OPSUBP + OPSW + OPSWEEP + OPTY + OPTYPE + OPUS + OPUSER + OPVA + OPVAR + OUTO + OUTOPT + OUTP + OUTPR + OUTR + OUTRES + PADE + PADELE + PAGE + PAGET + PAPU + PAPUT + PARE + PARESU + PARR + PARRES + PARS + PARSAV + PASA + PASAVE + PATH + PATH + PCAL + PCALC + PCIR + PCIRC + PCON + PCONV + PCOR + PCORRO + PCRO + PCROSS + PDEF + PDEF + PDOT + PDOT + PDRA + PDRAG + PERB + PERBC2D + PEXC + PEXCLUDE + PFAC + PFACT + PFLU + PFLUID + PGAP + PGAP + PHYS + PHYSICS + PINC + PINCLUDE + PINS + PINSUL + PIPE + PIPE + PIVC + PIVCHECK + PLAN + PLANEWAVE + PLCO + PLCONV + PLCP + PLCPLX + PLCR + PLCRACK + PLDI + PLDISP + PLES + PLESOL + PLET + PLETAB + PLF2 + PLF2D + PLLS + PLLS + PLNS + PLNSOL + PLOT + PLOT + PLOT + PLOTTING + PLPA + PLPA + PLPAGM + PLPATH + PLSE + PLSECT + PLTI + PLTIME + PLTR + PLTRAC + PLVA + PLVA + PLVAR + PLVAROPT + PLVE + PLVECT + PMAP + PMAP + PMET + PMETH + PMGT + PMGTRAN + PMOP + PMOPTS + POIN + POINT + POLY + POLY + POPT + POPT + PORT + PORTOPT + POWE + POWERH + PPAT + PPATH + PPLO + PPLOT + PPRA + PPRANGE + PPRE + PPRES + PRAN + PRANGE + PRCO + PRCONV + PRCP + PRCPLX + PREC + PRECISION + PRED + PRED + PRER + PRERR + PRES + PRESOL + PRET + PRETAB + PRI2 + PRI2 + PRIM + PRIM + PRIN + PRINT + PRIS + PRISM + PRIT + PRITER + PRNL + PRNLD + PRNS + PRNSOL + PROD + PROD + PRPA + PRPATH + PRRF + PRRFOR + PRRS + PRRSOL + PRSE + PRSECT + PRSS + PRSSOL + PRTI + PRTIME + PRVA + PRVA + PRVAR + PRVAROPT + PRVE + PRVECT + PSCR + PSCR + PSDC + PSDCOM + PSDF + PSDFRQ + PSDR + PSDRES + PSDS + PSDSPL + PSDU + PSDUNIT + PSDV + PSDVAL + PSDW + PSDWAV + PSEL + PSEL + PSOL + PSOLVE + PSPE + PSPEC + PSPR + PSPRNG + PSTR + PSTRES + PTEM + PTEMP + PTXY + PTXY + PUNI + PUNIT + PVEC + PVECT + QDVA + QDVAL + QFAC + QFACT + QUAD + QUAD + QUOT + QUOT + R + RACE + RACE + RALL + RALL + RAPP + RAPPND + RBE3 + RBE3 + RCON + RCON + RDEL + RDELE + REAL + REAL + REAL + REALVAR + RECT + RECTNG + REDU + REDUCE + REFL + REFLCOEF + REOR + REORDER + RESE + RESET + RESP + RESP + RESU + RESUME + REXP + REXPORT + RFIL + RFILSZ + RFOR + RFORCE + RIGI + RIGID + RIMP + RIMPORT + RITE + RITER + RLIS + RLIST + RMEM + RMEMRY + RMOD + RMODIF + RMOR + RMORE + ROCK + ROCK + RPOL + RPOLY + RPR4 + RPR4 + RPRI + RPRISM + RPSD + RPSD + RSPE + RSPEED + RSTA + RSTAT + RSYS + RSYS + RTIM + RTIMST + RUN + RWFR + RWFRNT + SABS + SABS + SADD + SADD + SALL + SALLOW + SARP + SARPLOT + SAVE + SAVE + SBCL + SBCLIST + SBCT + SBCTRAN + SDEL + SDELETE + SE + SECD + SECDATA + SECN + SECNUM + SECO + SECOFFSET + SECP + SECPLOT + SECR + SECREAD + SECT + SECTYPE + SECW + SECWRITE + SED + SEDL + SEDLIST + SEEX + SEEXP + SELI + SELIST + SELM + SELM + SENE + SENERGY + SEOP + SEOPT + SESY + SESYMM + SET + SETR + SETRAN + SEXP + SEXP + SF + SFA + SFAC + SFACT + SFAD + SFADELE + SFAL + SFALIST + SFBE + SFBEAM + SFCA + SFCALC + SFCU + SFCUM + SFDE + SFDELE + SFE + SFED + SFEDELE + SFEL + SFELIST + SFFU + SFFUN + SFGR + SFGRAD + SFL + SFLD + SFLDELE + SFLI + SFLIST + SFLL + SFLLIST + SFSC + SFSCALE + SFTR + SFTRAN + SHEL + SHELL + SHPP + SHPP + SLIS + SLIST + SLPP + SLPPLOT + SLSP + SLSPLOT + SMAL + SMALL + SMAX + SMAX + SMBO + SMBODY + SMCO + SMCONS + SMFO + SMFOR + SMIN + SMIN + SMRT + SMRTSIZE + SMSU + SMSURF + SMUL + SMULT + SOLC + SOLCONTROL + SOLU + SOLU + SOLU + SOLUOPT + SOLV + SOLVE + SORT + SORT + SOUR + SOURCE + SPAC + SPACE + SPAR + SPARM + SPEC + SPEC + SPH4 + SPH4 + SPH5 + SPH5 + SPHE + SPHERE + SPLI + SPLINE + SPOI + SPOINT + SPOP + SPOPT + SPRE + SPREAD + SPTO + SPTOPT + SQRT + SQRT + SRCS + SRCS + SRSS + SRSS + SSLN + SSLN + SSTI + SSTIF + SSUM + SSUM + STAT + STAT + STEF + STEF + STOR + STORE + SUBO + SUBOPT + SUBS + SUBSET + SUMT + SUMTYPE + SV + SVTY + SVTYP + TALL + TALLOW + TB + TBCO + TBCOPY + TBDA + TBDATA + TBDE + TBDELE + TBLE + TBLE + TBLI + TBLIST + TBMO + TBMODIF + TBPL + TBPLOT + TBPT + TBPT + TBTE + TBTEMP + TCHG + TCHG + TEE + TERM + TERM + TIME + TIME + TIME + TIMERANGE + TIMI + TIMINT + TIMP + TIMP + TINT + TINTP + TOFF + TOFFST + TOPD + TOPDEF + TOPE + TOPEXE + TOPI + TOPITER + TORQ2D + TORQ + TORQ + TORQ + TORQC2D + TORQSUM + TORU + TORUS + TOTA + TOTAL + TRAN + TRAN + TRANS + TRANSFER + TREF + TREF + TRNO + TRNOPT + TRPD + TRPDEL + TRPL + TRPLIS + TRPO + TRPOIN + TRTI + TRTIME + TSHA + TSHAP + TSRE + TSRES + TUNI + TUNIF + TVAR + TVAR + TYPE + TYPE + UIMP + UIMP + UPCO + UPCOORD + UPGE + UPGEOM + USRC + USRCAL + V + VA + VADD + VADD + VALV + VALVE + VARD + VARDEL + VARN + VARNAM + VATT + VATT + VCLE + VCLEAR + VCRO + VCROSS + VCVF + VCVFILL + VDDA + VDDAM + VDEL + VDELE + VDGL + VDGL + VDOT + VDOT + VDRA + VDRAG + VEXT + VEXT + VGEN + VGEN + VGET + VGET + VGLU + VGLUE + VIMP + VIMP + VINP + VINP + VINV + VINV + VLIS + VLIST + VLSC + VLSCALE + VMES + VMESH + VOFF + VOFFST + VOLU + VOLUMES + VOVL + VOVLAP + VPLO + VPLOT + VPTN + VPTN + VPUT + VPUT + VROT + VROTAT + VSBA + VSBA + VSBV + VSBV + VSBW + VSBW + VSEL + VSEL + VSLA + VSLA + VSUM + VSUM + VSWE + VSWEEP + VSYM + VSYMM + VTRA + VTRAN + VTYP + VTYPE + WAVE + WAVES + WERA + WERASE + WFRO + WFRONT + WMOR + WMORE + WPAV + WPAVE + WPCS + WPCSYS + WPLA + WPLANE + WPOF + WPOFFS + WPRO + WPROTA + WPST + WPSTYL + WRIT + WRITE + WSOR + WSORT + WSTA + WSTART + XVAR + XVAR + XVAROPT + + + + ex + ey + ez + nuxy + nuxz + nuyz + gxy + gxz + gyz + alpx + alpy + alpz + kxx + kyy + kzz + dens + damp + mu + prxy + + + + ANGLEK + ANGLEN + AREAKP + AREAND + ARFACE + ARNEXT + ARNODE + AX + AY + AZ + CENTRX + CENTRY + CENTRZ + DISTEN + DISTKP + DISTND + ELADJ + ELNEXT + ENDS + ENEARN + ENEXTN + ENKE + KNEAR + KP + KPNEXT + KX + KY + KZ + LOC + LSNEXT + LSX + LSY + LSZ + LX + LY + LZ + MAG + NDFACE + NDNEXT + NELEM + NMFACE + NNEAR + NODE + NORMKX + NORMKY + NORMKZ + NORMNX + NORMNY + NORMNZ + NX + NY + NZ + PRES + ROTX + ROTY + ROTZ + TEMP + UX + UY + UZ + VLNEXT + VOLT + VX + VY + VZ + + + + + + all + + + new + change + + + rad + deg + + + hpt + + + all + below + volu + area + line + kp + elem + node + + + ,save + resume + + + off + on + dele + ,save + scale + xorig + yorig + snap + stat + defa + refr + + + static + buckle + modal + harmic + trans + substr + spectr + new + rest + + + dege + + + first + next + last + near + list + velo + acel + + + off + ,l + u + + + off + smooth + clean + on + off + + + tight + + + x + y + z + + + sepo + delete + keep + + + s + ,r + ,a + u + all + none + inve + stat + area + ext + loc + x + y + z + hpt + ,mat + ,type + ,real + ,esys + acca + + + s + ,r + ,a + u + + + emat + esav + full + redm + mode + rdsp + rfrq + tri + rst + rth + rmg + erot + osav + rfl + seld + + + default + fine + + + off + on + + + x + y + + + list + + + lr + sr + + + + + temp + flue + hgen + js + vltg + mvdi + chrgd + forc + repl + add + igno + stat + + + new + sum + + + defa + stat + keep + nwarn + version + no + yes + rv52 + rv51 + + + subsp + lanb + reduc + + + all + db + solid + comb + geom + cm + ,mat + load + blocked + unblocked + + + any + all + + + all + uxyz + rxyz + ux + uy + uz + rotx + roty + rotz + + + append + + + ,esel + warn + err + + + start + nostart + + + cart + cylin + sphe + toro + + + volu + area + line + kp + elem + node + + + create + + + add + dele + + + ,n + p + + + s + ,r + ,a + u + all + none + + + stat + u + rot + ,f + ,m + temp + heat + pres + v + flow + vf + volt + emf + curr + amps + curt + mag + ,a + flux + csg + vltg + + + axes + axnum + num + outl + elem + line + area + volu + isurf + wbak + u + rot + temp + pres + v + enke + ends + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + volt + mag + ,a + emf + curr + ,f + ,m + heat + flow + vf + amps + flux + csg + curt + vltg + mast + ,cp + ,ce + nfor + nmom + rfor + rmom + path + grbak + grid + axlab + curve + cm + cntr + smax + smin + mred + cblu + ygre + dgra + mage + cyan + yell + lgra + bmag + gcya + oran + whit + blue + gree + red + blac + + + nres + nbuf + nproc + locfl + szbio + ncont + order + fsplit + mxnd + mxel + mxkp + mxls + mxar + mxvl + mxrl + mxcp + mxce + nlcontrol + + + high + next + + + any + all + + + all + ux + uy + uz + rotx + roty + rotz + temp + pres + vx + vy + vz + volt + emf + curr + mag + ax + ay + az + enke + ends + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + p + symm + asym + delete + s + ,a + u + stat + rot + disp + v + en + fx + fy + fz + ,f + mx + my + mz + ,m + forc + heat + flow + amps + chrg + flux + csgx + csgy + csgz + csg + + + disp + velo + acel + + + all + + + plslimit + crplimit + dsplimit + npoint + noiterpredict + + + repl + add + igno + + + all + _prm + + + off + on + + + defa + stat + off + on + + + all + p + s + x + y + z + xy + yz + zx + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + tg + tf + pg + ef + ,d + h + b + fmag + ,f + ,m + heat + flow + amps + flux + vf + csg + u + rot + temp + pres + volt + mag + v + ,a + enke + ends + s + int + eqv + sum + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + evis + cmuv + econ + yplu + tauw + + + dither + font + text + off + on + + + vector + dither + anim + font + text + off + on + + + array + char + table + time + x + y + z + temp + velocity + pressure + + + auto + off + user + + + disp + velo + acel + + + symm + asym + x + y + z + + + head + all + + + anim + dgen + dlist + + + add + dele + list + slide + cycl + + + ants + assc + asts + drawbead + ents + ess + ests + nts + osts + rntr + rotr + se + ss + sts + tdns + tdss + tnts + tsts + + + add + dele + list + + + off + on + + + all + + + ansys + dyna + + + all + p + + + off + on + + + list + dele + + + fx + fy + fz + mx + my + mz + ux + uy + uz + rotx + roty + rotz + vx + vy + vz + ax + ay + az + aclx + acly + aclz + omgx + omgy + omgz + press + rbux + rbuy + rbuz + rbrx + rbry + rbrz + rbvx + rbvy + rbvz + rbfx + rbfy + rbfz + rbmx + rbmy + rbmz + add + dele + list + + + hgls + rigid + cable + ortho + + + add + dele + list + all + ux + uy + uz + rotx + roty + rotz + ansys + taurus + both + + + glstat + bndout + rwforc + deforc + ,matsum + ncforc + rcforc + defgeo + spcforc + swforc + rbdout + gceout + sleout + jntforc + nodout + elout + + + add + dele + list + + + ansys + taurus + both + pcreate + pupdate + plist + + + all + p + + + eq + ne + lt + gt + le + ge + ablt + abgt + + + add + remove + all + either + both + + + p + all + ,mat + ,type + ,real + ,esys + secnum + + + p + + + mks + muzro + epzro + + + all + p + + + front + sparse + jcg + jcgout + iccg + pcg + pcgout + iter + + + all + p + off + smooth + clean + on + + + defa + yes + no + + + on + off + + + s + ,r + ,a + u + all + none + inve + stat + p + elem + adj + ,type + ename + ,mat + ,real + ,esys + live + layer + sec + pinc + pexc + sfe + pres + conv + hflux + fsi + impd + shld + mxwf + chrgs + inf + bfe + temp + flue + hgen + js + mvdi + chrgd + etab + + + s + ,r + ,a + u + all + active + inactive + corner + mid + + + p + s + x + y + z + xy + yz + zx + int + eqv + epel + eppl + epcr + epth + nl + sepl + srat + hpres + epeq + psv + plwk + cont + stat + pene + pres + sfric + stot + slide + tg + sum + tf + pg + ef + ,d + h + b + fmag + ,f + ,m + heat + flow + amps + flux + vf + csg + sene + kene + jheat + js + jt + mre + volu + bfe + temp + + + etab + + + top + bottom + reverse + tri + + + all + p + + + refl + stat + eras + u + x + y + z + rot + temp + pres + volt + mag + v + ,a + curr + emf + enke + ends + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + evis + econ + yplu + tauw + lmd1 + lmd2 + lmd3 + lmd4 + lmd5 + lmd6 + emd1 + emd2 + emd3 + emd4 + emd5 + emd6 + s + xy + yz + zx + int + eqv + epto + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + tg + sum + tf + pg + ef + ,d + h + b + fmag + serr + sdsg + terr + tdsg + ,f + ,m + heat + flow + amps + flux + vf + csg + sene + aene + tene + kene + jheat + js + jt + mre + volu + cent + bfe + smisc + nmisc + surf + cont + stat + pene + sfric + stot + slide + gap + topo + + + eti + ite + tts + stt + mtt + fts + ets + + + all + + + elem + short + long1 + + + model + solu + all + nosave + + + rect + polar + modal + full + half + + + off + on + + + yes + no + + + on + off + stat + attr + esize + aclear + + + all + p + fx + fy + fz + mx + my + mz + heat + flow + amps + chrg + flux + csgx + csgy + csgz + + + fine + norml + wire + + + repl + add + igno + stat + + + emat + esav + full + sub + mode + tri + dsub + usub + osav + seld + keep + dele + + + all + + + p + + + solu + flow + turb + temp + comp + swrl + tran + spec + true + t + false + ,f + + + iter + exec + appe + over + + + term + pres + temp + vx + vy + vz + enke + ends + + + time + step + istep + bc + numb + glob + tend + appe + sumf + over + pres + temp + vx + vy + vz + enke + ends + + + step + appe + sumf + over + + + outp + sumf + debg + resi + dens + visc + cond + evis + econ + ttot + hflu + hflm + spht + strm + mach + ptot + pcoe + yplu + tauw + lmd + emd + + + conv + outp + iter + land + bloc + bnow + + + prot + dens + visc + cond + spht + constant + liquid + table + powl + carr + bing + usrv + air + air_b + air-si + air-si_b + air-cm + air-cm_b + air-mm + air-mm_b + air-ft + air-ft_b + air-in + air-in_b + cmix + user + + + nomi + dens + visc + cond + spht + + + cof1 + dens + visc + cond + spht + + + cof2 + dens + visc + cond + spht + + + cof3 + dens + visc + cond + spht + + + prop + ivis + ufrq + + + vary + dens + visc + cond + spht + t + ,f + + + temp + nomi + bulk + ttot + + + pres + refe + + + bulk + beta + + + gamm + comp + + + meth + pres + temp + vx + vy + vz + enke + ends + + + tdma + pres + temp + vx + vy + vz + enke + ends + + + srch + pres + temp + vx + vy + vz + enke + ends + + + pgmr + fill + modp + + + conv + pres + temp + vx + vy + vz + enke + ends + + + maxi + pres + temp + vx + vy + vz + enke + ends + + + delt + pres + temp + vx + vy + vz + enke + ends + + + turb + modl + rati + inin + insf + sctk + sctd + cmu + c1 + c2 + buc3 + buc4 + beta + kapp + ewll + wall + vand + tran + zels + + + rngt + sctk + sctd + cmu + c1 + c2 + beta + etai + + + nket + sctk + sctd + c2 + c1mx + + + girt + sctk + sctd + g0 + g1 + g2 + g3 + g4 + + + szlt + sctk + sctd + szl1 + szl2 + szl3 + + + relx + vx + vy + vz + pres + temp + enke + ends + evis + econ + dens + visc + cond + spht + + + stab + turb + mome + pres + temp + visc + + + prin + vx + vy + vz + pres + temp + enke + ends + dens + visc + cond + spht + evis + econ + + + modr + vx + vy + vz + pres + temp + enke + ends + dens + visc + cond + spht + evis + econ + ttot + t + ,f + + + modv + vx + vy + vz + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + pres + temp + enke + ends + dens + visc + cond + spht + evis + econ + ttot + lmd + emd + + + quad + momd + moms + prsd + prss + thrd + thrs + trbd + trbs + + + capp + velo + temp + pres + umin + umax + vmin + vmax + wmin + wmax + tmin + tmax + pmin + pmax + + + rest + nset + iter + lstp + time + rfil + wfil + over + clear + + + advm + mome + turb + pres + temp + msu + supg + + + all + p + + + all + + + noor + order + + + all + auto + user + + + total + static + damp + inert + + + reco + ten + long + + + g + ,f + e + + + all + + + all + + + rsys + + + emat + esav + full + redm + sub + mode + tri + dsub + usub + erot + osav + seld + all + ext + int + + + open + closed + + + toler + iter + + + toler + oesele + merge + remain + + + open + closed + all + + + tree + off + + + tri + bot + + + all + + + active + int + imme + menu + prkey + units + rout + time + wall + cpu + dbase + ldate + dbase + ltime + rev + title + jobnam + + parm + max + basic + loc + ,type + dim + x + y + z + + cmd + stat + nargs + field + + comp + ncomp + name + ,type + nscomp + sname + + graph + active + angle + contour + dist + dscale + dmult + edge + focus + gline + mode + normal + range + xmin + ymin + xmax + ymax + ratio + sscale + smult + ,type + vcone + view + vscale + vratio + display + erase + ndist + number + plopts + seg + shrink + + active + ,csys + ,dsys + ,mat + ,type + ,real + ,esys + ,cp + ,ce + wfront + max + rms + + cdsy + loc + ang + xy + yz + zx + attr + + node + loc + ,nsel + nxth + nxtl + ,f + fx + mx + csgx + ,d + ux + rotx + vx + ax + hgen + num + max + min + count + mxloc + mnloc + + elem + cent + adj + attr + leng + lproj + area + aproj + volu + ,esel + nxth + nxtl + hgen + hcoe + tbulk + pres + shpar + angd + aspe + jacr + maxa + para + warp + num + ,ksel + nxth + nxtl + div + + kp + ior + imc + irp + ixv + iyv + izv + nrelm + + line + ,lsel + + area + ,asel + loop + + volu + ,vsel + shell + + etyp + + rcon + + ex + alpx + reft + prxy + nuxy + gxy + damp + mu + dnes + c + enth + kxx + hf + emis + qrate + visc + sonc + rsvx + perx + murx + mgxx + lsst + temp + + fldata + flow + turb + temp + comp + swrl + tran + spec + exec + appe + over + pres + temp + vx + vy + vz + enke + ends + step + istep + bc + numb + glob + tend + appe + sumf + over + sumf + debg + resi + dens + visc + cond + evis + econ + ttot + hflu + hflm + spht + strm + mach + ptot + pcoe + yplu + tauw + lmd + emd + outp + iter + dens + visc + cond + ivis + ufrq + nomi + bulk + ttot + refe + beta + comp + fill + modp + modl + rati + inin + insf + sctk + sctd + cmu + c1 + c2 + buc3 + buc4 + beta + kapp + ewll + wall + vand + tran + zels + sctk + sctd + cmu + c1 + c2 + etai + c1mx + g0 + g1 + g2 + g3 + g4 + szl1 + szl2 + szl3 + evis + econ + mome + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + momd + moms + prsd + prss + thrd + thrs + trbd + trbs + velo + umin + umax + vmin + vmax + wmin + wmax + tmin + tmax + pmin + pmax + nset + iter + lstp + time + rfil + wfil + over + clear + + msdata + spec + ugas + + msprop + cond + mdif + spht + nomi + cof1 + cof2 + cof3 + + msspec + name + molw + schm + + msrelax + conc + emdi + stab + + mssolu + nswe + maxi + nsrc + conv + delt + + msmeth + + mscap + key + upp + low + + msvary + + msnomf + + active + anty + solu + dtime + ncmls + ncmss + eqit + ncmit + cnvg + mxdvl + resfrq + reseig + dsprm + focv + mocv + hfcv + mfcv + cscv + cucv + ffcv + dicv + rocv + tecv + vmcv + smcv + vocv + prcv + vecv + nc48 + nc49 + crprat + psinc + + elem + mtot + mc + ior + imc + fmc + mmor + mmmc + + mode + freq + pfact + mcoef + damp + + active + ,set + lstp + sbst + time + rsys + + node + u + sum + rot + ntemp + volt + mag + v + ,a + curr + emf + rf + fx + fy + fz + mx + my + mz + s + int + eqv + epto + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + tg + tf + pg + ef + ,d + h + b + fmag + hs + bfe + ttot + hflu + hflm + conc + pcoe + ptot + mach + strm + evis + cmuv + econ + yplu + tauw + + elem + serr + sdsg + terr + tdsg + sene + tene + kene + jheat + js + volu + etab + smisc + nmisc + + etab + ncol + nleng + + sort + max + min + imax + imin + + ssum + item + + fsum + + path + last + nval + + kcalc + k + + intsrf + + plnsol + bmax + bmin + + prerr + sepc + tepc + sersm + tersm + sensm + tensm + + section + inside + sx + sy + sz + sxxy + syz + szx + center + outside + + vari + extrem + vmax + tmax + vmin + tmin + vlast + tlast + cvar + rtime + itime + t + rset + iset + nsets + + opt + total + feas + term + best + + topo + act + conv + comp + porv + loads + + runst + rspeed + mips + smflop + vmflop + rfilsz + emat + erot + esav + full + mode + rdsp + redm + rfrq + rgeom + rst + tri + rtimst + tfirst + titer + eqprep + ,solve + bsub + eigen + elform + elstrs + nelm + rmemry + wsreq + wsavail + dbpsize + dbpdisk + dbpmem + dbsize + dbmem + scrsize + scravail + iomem + iopsiz + iobuf + rwfrnt + rms + mean + + ,nsel + ,esel + ,ksel + ,lsel + ,asel + ,vsel + ndnext + elnext + kpnext + lsnext + arnext + vlnext + centrx + centry + centrz + nx + ny + nz + kx + ky + kz + lx + ly + lz + lsx + lsy + lsz + node + kp + distnd + distkp + disten + anglen + anglek + nnear + knear + enearn + areand + areakp + arnode + normnx + normny + normnz + normkx + normky + normkz + enextn + nelem + eladj + ndface + nmface + arface + ux + uy + uz + rotx + roty + rotz + temp + pres + vx + vy + vz + enke + ends + volt + mag + ax + ay + az + + + g + ,f + e + + + all + + + stop + + + p + fx + fy + fz + mx + my + mz + + + all + + + full + power + + + axdv + axnm + axnsc + ascal + logx + logy + fill + cgrid + dig1 + dig2 + view + revx + revy + divx + divy + ltyp + off + on + front + + + disp + velo + acel + + + on + off + + + axis + grid + curve + + + all + node + elem + keyp + line + area + volu + grph + + + on + off + + + model + paper + color + direct + + + line + area + coord + ratio + + + all + p + + + all + + + full + reduc + msup + + + on + off + + + all + p + ux + uy + uz + rotx + roty + rotz + temp + pres + vx + vy + vz + enke + ends + sp01 + so02 + sp03 + sp04 + sp05 + sp06 + volt + mag + ax + ay + az + + + all + p + disp + velo + + + eq + ne + lt + gt + le + ge + ablt + abgt + stop + exit + cycle + then + + + all + basic + nsol + rsol + esol + nload + strs + epel + epth + eppl + epcr + fgrad + fflux + misc + + + pres + + + stat + defa + merg + yes + no + solid + gtoler + file + iges + stat + small + + + p + + + p + ratio + dist + + + p + kp + line + + + + all + p + coord + hpt + stat + + + all + p + off + smooth + clean + on + off + + + s + ,r + ,a + u + all + none + inve + stat + p + ,mat + ,type + ,real + ,esys + all + kp + ext + hpt + loc + x + y + z + + + s + ,r + ,a + u + + + all + p + x + y + z + + + p + + + fcmax + + + + + + all + p + + + erase + stat + all + + + zero + squa + sqrt + lprin + add + sub + srss + min + max + abmn + abmx + all + mult + + + s + ,r + ,a + u + all + none + inve + stat + + + temp + forc + hgen + hflu + ehflu + js + pres + reac + hflm + last + + + none + comment + remove + + + radius + layer + hpt + orient + + + off + on + auto + + + cart + cylin + sphe + toro + + + all + p + off + smooth + clean + on + + + p + all + sepo + delete + keep + + + solid + fe + iner + lfact + lsopt + all + + + s + ,r + ,a + u + all + none + inve + stat + p + line + ext + loc + x + y + z + tan1 + tan2 + ndiv + space + ,mat + ,type + ,real + ,esys + sec + lenght + radius + hpt + lcca + + + s + ,r + ,a + u + + + stat + init + + + x + y + z + all + p + + + off + on + + + all + p + ux + uy + uz + rotx + roty + rotz + temp + fx + fy + fz + mx + my + mz + heat + + + all + p + + + on + grph + + + fit + eval + + + copy + tran + + + stat + nocheck + check + detach + + + subsp + lanb + reduc + unsym + damp + off + on + + + mult + solv + sort + covar + corr + + + expnd + tetexpnd + trans + iesz + amesh + default + main + alternate + alt2 + qmesh + vmesh + split + lsmo + clear + pyra + timp + stat + defa + + + p + + + ex + ey + ez + alpx + alpy + alpz + reft + prxy + pryz + prxz + nuxy + nuyz + nuzx + gxy + gyz + gxz + damp + mu + dens + c + enth + kxx + kyy + kzz + hf + emis + qrate + visc + sonc + rsvx + rsvy + rsvz + perx + pery + perz + murx + mury + murz + mgxx + mgyy + mgzz + lsst + + + all + + + read + write + stat + + + all + evlt + + + msu + supg + + + off + on + + + info + note + warn + error + fatal + ui + + + 2d + 3d + + + dens + visc + cond + mdif + spht + constant + liquid + gas + + + main + input + grph + tool + zoom + work + wpset + abbr + parm + sele + anno + hard + help + off + on + + + dens + visc + cond + mdif + off + on + + + no + yes + + + all + p + + + off + on + + + all + p + coord + + + all + p + off + smooth + clean + on + + + disp + velo + acel + + + auto + full + modi + init + on + off + + + s + ,r + ,a + u + all + none + inve + stat + node + ext + loc + x + y + z + ang + xy + yz + zx + ,m + ,cp + ,ce + ,d + u + ux + uy + uz + rot + rotx + roty + rotz + temp + pres + volt + mag + v + vx + vy + vz + ,a + ax + ay + az + curr + emf + enke + ends + ,f + fx + fy + fz + ,m + mx + my + mz + heat + flow + amps + flux + csg + csgx + csgy + csgz + chrg + chrgd + ,bf + temp + flue + hgen + js + jsx + jsy + jsz + mvdi + int + eqv + epto + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + cont + pene + sfric + stot + slide + tg + tf + pg + ef + ,d + h + b + fmag + topo + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + evis + cmuv + econ + yplu + tauw + + + s + ,r + ,a + u + all + active + inactive + corner + mid + + + off + on + + + x + y + z + all + p + + + node + elem + kp + line + area + volu + ,mat + ,type + ,real + ,cp + ,ce + all + low + high + ,csys + defa + + + yes + no + + + p + + + all + + + full + + + best + last + ,n + + + off + on + + + main + 2fac + 3fac + + + top + prep + ignore + process + scalar + all + + + temp + + + off + on + full + + + subp + first + rand + run + fact + grad + sweep + user + + + dv + sv + obj + del + + + basic + nsol + rsol + esol + nload + veng + all + none + last + stat + erase + + + term + append + + + all + basic + nsol + rsol + esol + nload + strs + epel + epth + eppl + epcr + fgrad + fflux + misc + none + all + last + + + all + name + + + points + table + label + + + all + path + + + new + change + + + scalar + all + + + s + all + + + u + ux + uy + uz + rot + rotx + roty + rotz + temp + pres + v + vx + vy + vz + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + enke + ends + volt + mag + ,a + chrg + ,f + forc + fx + fy + fz + ,m + mome + mx + my + mz + heat + flow + amps + flux + csg + mast + ,cp + ,ce + nfor + nmom + rfor + rmom + path + acel + acelx + acely + acelz + omeg + omegx + omegy + omegz + all + + + temp + flue + hgen + js + jsx + jsy + jsz + phase + mvdi + chrgd + vltg + forc + + + add + mult + div + exp + deri + intg + sin + cos + asin + acos + log + + + stat + erase + dele + se + s + epel + u + rot + eqv + sum + p + top + mid + bot + x + y + z + xy + yz + xz + int + + + now + + + avg + noav + u + x + y + z + sum + rot + temp + pres + volt + mag + v + ,a + curr + emf + enke + ends + xy + yz + xz + eqv + epto + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + tg + tf + pg + ef + ,d + h + b + fmag + etab + bfe + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + evis + cmuv + econ + yplu + tauw + spht + + + x + y + z + + + all + stat + p + + + base + node + wave + spat + + + write + read + list + delete + clear + status + + + all + stat + p + + + on + off + + + all + se + s + epel + u + rot + top + mid + bot + xy + yz + xz + int + eqv + epel + u + rot + + + s + x + y + z + xy + yz + xz + int + eqv + epto + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + cont + stat + pene + pres + sfric + stot + slide + gap + tg + tf + pg + ef + ,d + h + b + fmag + serr + sdsg + terr + tdsg + ,f + ,m + heat + flow + amps + flux + vf + csg + sene + tene + kene + jheat + js + jt + mre + volu + cent + bfe + temp + smisc + nmisc + topo + + + noav + avg + + + u + x + y + z + sum + rot + temp + pres + volt + mag + v + y + enke + ends + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + s + int + eqv + epto + xy + yz + xz + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + cont + stat + pene + pres + sfric + stot + slide + gap + tg + tf + pg + ef + ,d + h + b + fmag + bfe + temp + topo + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + spht + evis + cmuv + econ + yplu + tauw + lmd1 + lmd2 + lmd3 + lmd4 + lmd5 + lmd6 + emd1 + emd2 + emd3 + emd4 + emd5 + emd6 + + + leg1 + leg2 + info + frame + title + minm + logo + wins + wp + off + on + auto + + + all + + + node + + + xg + yg + zg + s + + + s + x + y + z + xy + yz + xz + int + eqv + + + fluid + elec + magn + temp + pres + v + x + y + z + sum + enke + ends + ttot + cond + pcoe + ptot + mach + strm + dens + visc + spht + evis + cmuv + econ + volt + + + rast + vect + elem + node + off + on + u + rot + v + ,a + s + epto + epel + eppl + epcr + epth + tg + tf + pg + ef + ,d + h + b + fmag + js + jt + + + uniform + accurate + + + on + off + stat + + + node + elem + ,mat + ,type + ,real + ,esys + loc + kp + line + area + volu + sval + tabnam + off + on + + + b31.1 + nc + + + coax + te10 + te11circ + tm01circ + + + pick + + + off + on + + + s + epto + epel + eppl + epcr + epsw + nl + cont + tg + tf + pg + ef + ,d + h + b + fmag + ,f + ,m + heat + flow + amps + flux + vf + csg + forc + bfe + elem + serr + sdsg + terr + tdsg + sene + tene + kene + jheat + js + jt + mre + volu + cent + smisc + nmisc + topo + + + fx + fy + fz + ,f + mx + ym + mz + ,m + heat + flow + vfx + vfy + vfz + vf + amps + curt + vltg + flux + csgx + csgy + csgz + csg + + + u + x + y + z + comp + rot + temp + pres + volt + mag + v + ,a + curr + emf + enke + ends + sp01 + sp02 + sp03 + sp04 + sp05 + sp06 + dof + + s + comp + prin + epto + epel + eppl + epcr + epth + epsw + nl + cont + tg + tf + pg + ef + ,d + h + b + fmag + bfe + topo + + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + spht + evis + cmuv + econ + yplu + tauw + lmd + emd + + + u + rot + v + ,a + s + epto + epel + eppl + epcr + epth + tg + tf + pg + ef + ,d + h + b + fmag + js + jt + + + cmap + lwid + color + tranx + trany + rotate + scale + tiff + epsi + + + disp + velo + acel + rel + abs + off + + + disp + velo + acel + accg + forc + pres + + + off + + + s + ,r + ,a + u + all + none + inv + + + pres + norm + tanx + tany + conv + hcoef + tbulk + rad + emis + tamb + hflux + fsi + impd + shld + cond + mur + mxwf + inf + chrgs + mci + + + cgsol + eigdamp + eigexp + eigfull + eigreduc + eigunsym + elform + elprep + redwrite + triang + + + tran + rot + + + off + on + + + cs + ndir + ,esys + ldir + layr + pcon + econ + dot + xnod + defa + stat + + + none + + + stat + dele + + + ftin + metric + + + norm + tang + radi + + + p + + + all + + + ux + uy + uz + rotx + roty + rotz + uxyz + rxyz + all + + + all + + + resize + fast + + + off + dyna + + + p + ,f + x + y + z + ,m + heat + flow + amps + flux + vf + csg + vltg + durt + + + index + cntr + + + all + ux + uy + uz + rotx + roty + rotz + none + all + + + off + dyna + elem + stress + + + all + + + solu + + + factor + area + narrow + + + read + status + + + cent + shrc + origin + user + + + library + mesh + + + beam + rect + quad + csolid + ctube + chan + i + z + ,l + t + hats + hrec + asec + mesh + + + all + + + off + on + + + singl + multi + delet + off + stat + pc + + + x + y + z + + + + + first + last + next + near + list + none + + + all + p + pres + conv + hflux + rad + fsi + impd + ptot + mxwf + mci + chrgs + inf + port + shld + + + all + p + pres + conv + hflux + rad + fsi + impd + mxwf + mci + mxwf + chrgs + inf + port + shld + + + ,sf + ms + + + all + p + + + all + pres + conv + hflux + selv + chrgs + mxwf + inf + repl + add + igno + stat + + + all + p + pres + conv + hflux + rad + mxwf + chrgs + mci + inf + selv + fsi + impd + port + shld + + + all + p + pres + conv + hflux + rad + mxwf + chrgs + mci + inf + selv + fsi + impd + port + shld + + + pres + conv + hflux + chrgs + status + x + y + z + + + all + p + pres + conv + hflux + rad + fsi + impd + mci + mxwf + chrgs + inf + port + shdl + selv + + + facet + gouraud + phong + + + top + mid + bot + + + term + file + off + pscr + hpgl + hpgl2 + vrml + + + hpgl + hpgl2 + interleaf + postscript + dump + + + on + warn + off + silent + status + summary + default + object + modify + angd + aspect + paral + maxang + jacrat + warp + all + yes + no + + + factor + radius + length + + + stat + defa + off + on + + + on + off + + + allf + aldlf + arcl + cnvg + crprat + cscv + cucv + dicv + dsprm + dtime + eqit + ffcv + focv + hfcv + nc48 + nc49 + ncmit + ncmls + ncmss + mfcv + mocv + mxdvl + prcv + psinc + resfrq + reseig + rocv + smcv + tecv + vecv + vocv + vmcv + + + sprs + mprs + ddam + psd + no + yes + + + disp + velo + acel + + + all + + + off + on + + + argx + + + all + title + units + mem + db + config + global + solu + phys + + + merge + new + appen + alloc + psd + + + all + part + none + + + first + last + next + near + list + velo + acel + + + comp + prin + + + bkin + mkin + miso + biso + aniso + dp + melas + user + kinh + anand + creep + swell + bh + piez + fail + mooney + water + anel + concr + hflm + fcon + pflow + evisc + plaw + foam + honey + comp + nl + eos + + + all + + + mkin + kinh + melas + miso + bkin + biso + bh + nb + mh + sbh + snb + smh + + + defi + dele + + + wt + uft + + + copy + loop + noprom + + + off + on + all + struc + therm + elect + mag + fluid + + + all + p + + + all + p + + + orig + off + lbot + rbot + ltop + rtop + + + elem + area + volu + isurf + cm + curve + + + full + reduc + msup + damp + nodamp + + + all + p + + + iine + line + para + arc + carc + circ + tria + tri6 + quad + qua8 + cyli + cone + sphe + pilo + + + basic + sect + hidc + hidd + hidp + cap + zbuf + zcap + zqsl + hqsl + + + help + view + wpse + wpvi + result + query + copy + anno + select + ,nsel + ,esel + ,ksel + ,lsel + ,asel + ,vsel + refresh + s + ,r + ,a + u + node + element + grid + format + pscr + tiff + epsi + bmp + wmf + emf + screen + full + graph + color + mono + grey + krev + norm + reverse + orient + landscape + portrait + compress + yes + no + + + msgpop + replot + abort + dyna + pick + on + off + stat + defa + + + user + si + cgs + bft + bin + + + off + on + + + all + + + usrefl + userfl + usercv + userpr + userfx + userch + userfd + userou + usermc + usolbeg + uldbeg + ussbeg + uitbeg + uitfin + ussfin + uldfin + usolfin + uanbeg + uanfin + uelmatx + + + all + p + + + data + ramp + rand + gdis + tria + beta + gamm + + + acos + asin + asort + atan + comp + copy + cos + cosh + dircos + dsort + euler + exp + expa + log + log10 + nint + not + pwr + sin + sinh + sqrt + tan + tanh + tang + norm + local + global + + + all + p + + + node + loc + x + y + z + ang + xy + yz + zx + ,nsel + + elem + cent + adj + attr + geom + ,esel + shpar + + kp + div + ,ksel + + line + leng + ,lsel + + area + loop + ,asel + + volu + shell + volu + ,vsel + + cdsy + + rcon + const + + const + bkin + mkin + miso + biso + aniso + dp + melas + user + kinh + anand + creep + swell + bh + piez + fail + mooney + water + anel + concr + hflm + fcon + pflow + evisc + plaw + foam + honey + comp + nl + eos + + u + rot + temp + pres + volt + mag + v + ,a + curr + emf + enke + ends + + s + int + eqv + epto + epel + eppl + epcr + epth + epsw + + nl + sepl + srat + hpres + epeq + psv + plwk + hs + bfe + tg + tf + pg + ef + ,d + h + b + fmag + + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + evis + econ + yplu + tauw + + etab + + + all + p + + + all + wp + + + add + sub + mult + div + min + max + lt + le + eq + ne + ge + gt + der1 + der2 + int1 + int2 + dot + cross + gath + scat + + + all + p + + + all + dege + + + node + u + x + y + z + rot + temp + pres + volt + mag + v + ,a + curr + emf + enke + ends + s + xy + yz + xz + int + eqv + epto + epel + eppl + epcr + epth + epsw + nl + sepl + srat + hpres + epeq + psv + plwk + tg + tf + pg + ef + ,d + h + b + fmag + ttot + hflu + hflm + cond + pcoe + ptot + mach + strm + dens + visc + evis + econ + yplu + tauw + + elem + etab + + + all + p + + + all + p + sepo + delete + keep + + + max + min + lmax + lmin + first + last + sum + medi + mean + vari + stdv + rms + num + + + s + ,r + ,a + u + all + none + inve + stat + p + volu + loc + x + y + z + ,mat + ,type + ,real + ,esys + + + default + fine + + + p + + + x + y + z + all + p + -x + -y + -z + + + max + rms + + + off + on + full + left + righ + top + bot + ltop + lbot + rtop + rbot + squa + dele + + + p + + + x + y + z + all + max + rms + + + all + + + all + + + off + back + scrn + rect + + + + + diff --git a/extra/xmode/modes/applescript.xml b/extra/xmode/modes/applescript.xml new file mode 100644 index 0000000000..f4d18e0541 --- /dev/null +++ b/extra/xmode/modes/applescript.xml @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + (* + *) + + -- + + + " + " + + + ' + ' + + + ( + ) + + + - + ^ + * + / + & + < + <= + > + >= + = + ­ + + + application[\t\s]+responses + current[\t\s]+application + white[\t\s]+space + + + all[\t\s]+caps + all[\t\s]+lowercase + small[\t\s]+caps + + + missing[\t\s]+value + + + + script + property + prop + end + copy + to + set + global + local + on + to + of + in + given + with + without + return + continue + tell + if + then + else + repeat + times + while + until + from + exit + try + error + considering + ignoring + timeout + transaction + my + get + put + into + is + + + each + some + every + whose + where + id + index + first + second + third + fourth + fifth + sixth + seventh + eighth + ninth + tenth + last + front + back + st + nd + rd + th + middle + named + through + thru + before + after + beginning + the + + + close + copy + count + delete + duplicate + exists + launch + make + move + open + print + quit + reopen + run + save + saving + + + it + me + version + pi + result + space + tab + anything + + + case + diacriticals + expansion + hyphens + punctuation + + + bold + condensed + expanded + hidden + italic + outline + plain + shadow + strikethrough + subscript + superscript + underline + + + ask + no + yes + + + false + true + + + weekday + monday + mon + tuesday + tue + wednesday + wed + thursday + thu + friday + fri + saturday + sat + sunday + sun + + month + january + jan + february + feb + march + mar + april + apr + may + june + jun + july + jul + august + aug + september + sep + october + oct + november + nov + december + dec + + minutes + hours + days + weeks + + + div + mod + and + not + or + as + contains + equal + equals + isn't + + + diff --git a/extra/xmode/modes/asp.xml b/extra/xmode/modes/asp.xml new file mode 100644 index 0000000000..01735baabe --- /dev/null +++ b/extra/xmode/modes/asp.xml @@ -0,0 +1,518 @@ + + + + + + + + + + + + + <%@LANGUAGE="VBSCRIPT"% + <%@LANGUAGE="JSCRIPT"% + <%@LANGUAGE="JAVASCRIPT"% + <%@LANGUAGE="PERLSCRIPT"% + + + + <% + %> + + + + + <script language="vbscript" runat="server"> + </script> + + + + + <script language="jscript" runat="server"> + </script> + + + + <script language="javascript" runat="server"> + </script> + + + + + <script language="perlscript" runat="server"> + </script> + + + + + <script language="jscript"> + </script> + + + + <script language="javascript"> + </script> + + + + <script> + </script> + + + + + <!--# + --> + + + + + <!-- + --> + + + + + <STYLE> + </STYLE> + + + + + < + > + + + + + & + ; + + + + + + + + <% + %> + + + + + <script language="vbscript" runat="server"> + </script> + + + + + <script language="jscript" runat="server"> + </script> + + + + <script language="javascript" runat="server"> + </script> + + + + + <script language="perlscript" runat="server"> + </script> + + + + + <script language="jscript" + </script> + + + + <script language="javascript" + </script> + + + + <script> + </script> + + + + + <!--# + --> + + + + + <!-- + --> + + + + + <STYLE> + </STYLE> + + + + + </ + > + + + + < + > + + + + + & + ; + + + + + + + + <% + %> + + + + + <script language="vbscript" runat="server"> + </script> + + + + + <script language="jscript" runat="server"> + </script> + + + + <script language="javascript" runat="server"> + </script> + + + + + <script language="perlscript" runat="server"> + </script> + + + + + <script language="jscript" + </script> + + + + <script language="javascript" + </script> + + + + <script> + </script> + + + + + <!--# + --> + + + + + <!-- + --> + + + + + <STYLE> + </STYLE> + + + + + </ + > + + + + < + > + + + + + & + ; + + + + + + + + <% + %> + + + + + <script language="vbscript" runat="server"> + </script> + + + + + <script language="jscript" runat="server"> + </script> + + + + <script language="javascript" runat="server" + </script> + + + + + <script language="perlscript" runat="server"> + </script> + + + + + <script language="jscript" + </script> + + + + <script language="javascript" + </script> + + + + <script> + </script> + + + + + <!--# + --> + + + + + <!-- + --> + + + + + <STYLE> + </STYLE> + + + + + </ + > + + + + < + > + + + + + & + ; + + + + + + + + <% + %> + + + + " + " + + + + ' + ' + + + = + + + + + + <% + %> + + + + + + + <% + %> + + + + " + " + + + + ' + ' + + + = + + + + + + <% + %> + + + + + + + <% + %> + + + + " + " + + + + ' + ' + + + = + + + + + + <% + %> + + + + + + + + <% + %> + + + + + + + + <% + %> + + + + + + + + <% + %> + + + + + + + + + <% + %> + + + + + + + + <% + %> + + + + + + + + <% + %> + + + + + + + + + <% + %> + + + + + + + <% + %> + + + + + + + <% + %> + + + + diff --git a/extra/xmode/modes/aspect-j.xml b/extra/xmode/modes/aspect-j.xml new file mode 100644 index 0000000000..8c7609ae56 --- /dev/null +++ b/extra/xmode/modes/aspect-j.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + /**/ + + + + /** + */ + + + + + /* + */ + + + + " + " + + + ' + ' + + + // + + = + ! + >= + <= + + + - + / + + + .* + + * + > + < + % + & + | + ^ + ~ + } + { + : + + + ( + ) + + + abstract + break + case + catch + continue + default + do + else + extends + final + finally + for + if + implements + instanceof + native + new + private + protected + public + return + static + switch + synchronized + throw + throws + transient + try + volatile + while + + package + import + + boolean + byte + char + class + double + float + int + interface + long + short + void + + assert + strictfp + + false + null + super + this + true + + goto + const + + args + percflow + get + set + preinitialization + handler + adviceexecution + cflow + target + cflowbelow + withincode + declare + precedence + issingleton + perthis + pertarget + privileged + after + around + aspect + before + call + execution + initialization + pointcut + proceed + staticinitialization + within + .. + + + diff --git a/extra/xmode/modes/assembly-m68k.xml b/extra/xmode/modes/assembly-m68k.xml new file mode 100644 index 0000000000..03a6c4c7dc --- /dev/null +++ b/extra/xmode/modes/assembly-m68k.xml @@ -0,0 +1,508 @@ + + + + + + + + + + + + + + + ; + * + + + ' + ' + + + + " + " + + + + + $ + + : + + , + : + ( + ) + ] + [ + $ + + + + - + / + * + % + + | + ^ + & + ~ + ! + + = + < + > + + + + + + + + D0 + D1 + D2 + D3 + D4 + D5 + D6 + D7 + + + A0 + A1 + A2 + A3 + A4 + A5 + A6 + A7 + + + FP0 + FP1 + FP2 + FP3 + FP4 + FP5 + FP6 + FP7 + + SP + CCR + + + + + + + OPT + INCLUDE + FAIL + END + REG + + + PAGE + LIST + NOLIST + SPC + TTL + + + ORG + + + EQU + SET + + + DS + DC + + + FOR + ENDF + IF + THEN + ELSE + ENDI + REPEAT + UNTIL + WHILE + DO + ENDW + + MACRO + + + + ABCD + ADD + ADD.B + ADD.W + ADD.L + ADDA + ADDA.W + ADDA.L + ADDI + ADDI.B + ADDI.W + ADDI.L + ADDQ + ADDQ.B + ADDQ.W + ADDQ.L + ADDX + ADDX.B + ADDX.W + ADDX.L + AND + AND.B + AND.W + AND.L + ANDI + ANDI.B + ANDI.W + ANDI.L + ASL + ASL.B + ASL.W + ASL.L + ASR + ASR.B + ASR.W + ASR.L + + BCC + BCS + BEQ + BGE + BGT + BHI + BLE + BLS + BLT + BMI + BNE + BPL + BVC + BVS + BCHG + BCLR + BFCHG + BFCLR + BFEXTS + BFEXTU + BFFF0 + BFINS + BFSET + BFTST + BGND + BKPT + BRA + BSET + BSR + BTST + CALLM + CAS + CAS2 + CHK + CHK2 + CINV + CLR + CLR.B + CLR.W + CLR.L + CMP + CMP.B + CMP.W + CMP.L + CMPA + CMPA.W + CMPA.L + CMPI + CMPI.B + CMPI.W + CMPI.L + CMPM + CMPM.B + CMPM.W + CMPM.L + CMP2 + CMP2.B + CMP2.W + CMP2.L + + CPUSH + + DBCC + DBCS + DBEQ + DBGE + DBGT + DBHI + DBLE + DBLS + DBLT + DBMI + DBNE + DBPL + DBVC + DBVS + + DIVS + DIVSL + DIVU + DIVUL + EOR + EOR.B + EOR.W + EOR.L + EORI + EORI.B + EORI.W + EORI.L + EXG + EXT + EXTB + FABS + FSABS + FDABS + FACOS + FADD + FSADD + FDADD + FASIN + FATAN + FATANH + + FCMP + FCOS + FCOSH + + FDIV + FSDIV + FDDIV + FETOX + FETOXM1 + FGETEXP + FGETMAN + FINT + FINTRZ + FLOG10 + FLOG2 + FLOGN + FLOGNP1 + FMOD + FMOVE + FSMOVE + FDMOVE + FMOVECR + FMOVEM + FMUL + FSMUL + FDMUL + FNEG + FSNEG + FDNEG + FNOP + FREM + FRESTORE + FSAVE + FSCALE + + FSGLMUL + FSIN + FSINCOS + FSINH + FSQRT + FSSQRT + FDSQRT + FSUB + FSSUB + FDSUB + FTAN + FTANH + FTENTOX + + FTST + FTWOTOX + ILLEGAL + JMP + JSR + LEA + LINK + LPSTOP + LSL + LSL.B + LSL.W + LSL.L + LSR + LSR.B + LSR.W + LSR.L + MOVE + MOVE.B + MOVE.W + MOVE.L + MOVEA + MOVEA.W + MOVEA.L + MOVE16 + MOVEC + MOVEM + MOVEP + MOVEQ + MOVES + MULS + MULU + NBCD + NEG + NEG.B + NEG.W + NEG.L + NEGX + NEGX.B + NEGX.W + NEGX.L + NOP + NOT + NOT.B + NOT.W + NOT.L + OR + OR.B + OR.W + OR.L + ORI + ORI.B + ORI.W + ORI.L + PACK + + + PEA + PFLUSH + PFLUSHA + PFLUSHR + PFLUSHS + PLOAD + PMOVE + PRESTORE + PSAVE + + PTEST + + PVALID + RESET + ROL + ROL.B + ROL.W + ROL.L + ROR + ROR.B + ROR.W + ROR.L + ROXL + ROXL.B + ROXL.W + ROXL.L + ROXR + ROXR.B + ROXR.W + ROXR.L + RTD + RTE + RTM + RTR + RTS + SBCD + + SCC + SCS + SEQ + SF + SGE + SGT + SHI + SLE + SLS + SLT + SMI + SNE + SPL + ST + SVC + SVS + + STOP + SUB + SUB.B + SUB.W + SUB.L + SUBA + SUBI + SUBI.B + SUBI.W + SUBI.L + SUBQ + SUBQ.B + SUBQ.W + SUBQ.L + SUBX + SUBX.B + SUBX.W + SUBX.L + SWAP + TAS + TBLS + TBLSN + TBLU + TBLUN + TRAP + + TRAPCC + TRAPCS + TRAPEQ + TRAPF + TRAPGE + TRAPGT + TRAPHI + TRAPLE + TRAPLS + TRAPLT + TRAPMI + TRAPNE + TRAPPL + TRAPT + TRAPVC + TRAPVS + + TRAPV + TST + TST.B + TST.W + TST.L + UNLK + UNPK + + + + + diff --git a/extra/xmode/modes/assembly-macro32.xml b/extra/xmode/modes/assembly-macro32.xml new file mode 100644 index 0000000000..763d17ea9e --- /dev/null +++ b/extra/xmode/modes/assembly-macro32.xml @@ -0,0 +1,577 @@ + + + + + + + + + + + + + + ; + + + ' + ' + + + + " + " + + + + %% + + % + + : + + + B^ + D^ + O^ + X^ + A^ + M^ + F^ + C^ + L^ + G^ + ^ + + + + + - + / + * + @ + # + & + ! + \ + + + + .ADDRESS + .ALIGN + .ALIGN + .ASCIC + .ASCID + .ASCII + .ASCIZ + .BLKA + .BLKB + .BLKD + .BLKF + .BLKG + .BLKH + .BLKL + .BLKO + .BLKQ + .BLKW + .BYTE + .CROSS + .CROSS + .DEBUG + .DEFAULT + .D_FLOATING + .DISABLE + .DOUBLE + .DSABL + .ENABL + .ENABLE + .END + .ENDC + .ENDM + .ENDR + .ENTRY + .ERROR + .EVEN + .EXTERNAL + .EXTRN + .F_FLOATING + .FLOAT + .G_FLOATING + .GLOBAL + .GLOBL + .H_FLOATING + .IDENT + .IF + .IFF + .IF_FALSE + .IFT + .IFTF + .IF_TRUE + .IF_TRUE_FALSE + .IIF + .IRP + .IRPC + .LIBRARY + .LINK + .LIST + .LONG + .MACRO + .MASK + .MCALL + .MDELETE + .MEXIT + .NARG + .NCHR + .NLIST + .NOCROSS + .NOCROSS + .NOSHOW + .NOSHOW + .NTYPE + .OCTA + .OCTA + .ODD + .OPDEF + .PACKED + .PAGE + .PRINT + .PSECT + .PSECT + .QUAD + .QUAD + .REF1 + .REF2 + .REF4 + .REF8 + .REF16 + .REPEAT + .REPT + .RESTORE + .RESTORE_PSECT + .SAVE + .SAVE_PSECT + .SBTTL + .SHOW + .SHOW + .SIGNED_BYTE + .SIGNED_WORD + .SUBTITLE + .TITLE + .TRANSFER + .WARN + .WEAK + .WORD + + + R0 + R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + AP + FP + SP + PC + + + ACBB + ACBD + ACBF + ACBG + ACBH + ACBL + ACBW + ADAWI + ADDB2 + ADDB3 + ADDD2 + ADDD3 + ADDF2 + ADDF3 + ADDG2 + ADDG3 + ADDH2 + ADDH3 + ADDL2 + ADDL3 + ADDP4 + ADDP6 + ADDW2 + ADDW3 + ADWC + AOBLEQ + AOBLSS + ASHL + ASHP + ASHQ + BBC + BBCC + BBCCI + BBCS + BBS + BBSC + BBSS + BBSSI + BCC + BCS + BEQL + BEQLU + BGEQ + BGEQU + BGTR + BGTRU + BICB2 + BICB3 + BICL2 + BICL3 + BICPSW + BICW2 + BICW3 + BISB2 + BISB3 + BISL2 + BISL3 + BISPSW + BISW2 + BISW3 + BITB + BITL + BITW + BLBC + BLBS + BLEQ + BLEQU + BLSS + BLSSU + BNEQ + BNEQU + BPT + BRB + BRW + BSBB + BSBW + BVC + BVS + CALLG + CALLS + CASEB + CASEL + CASEW + CHME + CHMK + CHMS + CHMU + CLRB + CLRD + CLRF + CLRG + CLRH + CLRL + CLRO + CLRQ + CLRW + CMPB + CMPC3 + CMPC5 + CMPD + CMPF + CMPG + CMPH + CMPL + CMPP3 + CMPP4 + CMPV + CMPW + CMPZV + CRC + CVTBD + CVTBF + CVTBG + CVTBH + CVTBL + CVTBW + CVTDB + CVTDF + CVTDH + CVTDL + CVTDW + CVTFB + CVTFD + CVTFG + CVTFH + CVTFL + CVTFW + CVTGB + CVTGF + CVTGH + CVTGL + CVTGW + CVTHB + CVTHD + CVTHF + CVTHG + CVTHL + CVTHW + CVTLB + CVTLD + CVTLF + CVTLG + CVTLH + CVTLP + CVTLW + CVTPL + CVTPS + CVTPT + CVTRDL + CVTRFL + CVTRGL + CVTRHL + CVTSP + CVTTP + CVTWB + CVTWD + CVTWF + CVTWG + CVTWH + CVTWL + DECB + DECL + DECW + DIVB2 + DIVB3 + DIVD2 + DIVD3 + DIVF2 + DIVF3 + DIVG2 + DIVG3 + DIVH2 + DIVH3 + DIVL2 + DIVL3 + DIVP + DIVW2 + DIVW3 + EDITPC + EDIV + EMODD + EMODF + EMODG + EMODH + EMUL + EXTV + EXTZV + FFC + FFS + HALT + INCB + INCL + INCW + INDEX + INSQHI + INSQTI + INSQUE + INSV + IOTA + JMP + JSB + LDPCTX + LOCC + MATCHC + MCOMB + MCOML + MCOMW + MFPR + MFVP + MNEGB + MNEGD + MNEGF + MNEGG + MNEGH + MNEGL + MNEGW + MOVAB + MOVAD + MOVAF + MOVAG + MOVAH + MOVAL + MOVAO + MOVAQ + MOVAW + MOVB + MOVC3 + MOVC5 + MOVD + MOVF + MOVG + MOVH + MOVL + MOVO + MOVP + MOVPSL + MOVQ + MOVTC + MOVTUC + MOVW + MOVZBL + MOVZBW + MOVZWL + MTPR + MTVP + MULB2 + MULB3 + MULD2 + MULD3 + MULF2 + MULF3 + MULG2 + MULG3 + MULH2 + MULH3 + MULL2 + MULL3 + MULP + MULW2 + MULW3 + NOP + POLYD + POLYF + POLYG + POLYH + POPR + PROBER + PROBEW + PUSHAB + PUSHABL + PUSHAL + PUSHAD + PUSHAF + PUSHAG + PUSHAH + PUSHAL + PUSHAO + PUSHAQ + PUSHAW + PUSHL + PUSHR + REI + REMQHI + REMQTI + REMQUE + RET + ROTL + RSB + SBWC + SCANC + SKPC + SOBGEQ + SOBGTR + SPANC + SUBB2 + SUBB3 + SUBD2 + SUBD3 + SUBF2 + SUBF3 + SUBG2 + SUBG3 + SUBH2 + SUBH3 + SUBL2 + SUBL3 + SUBP4 + SUBP6 + SUBW2 + SUBW3 + SVPCTX + TSTB + TSTD + TSTF + TSTG + TSTH + TSTL + TSTW + VGATHL + VGATHQ + VLDL + VLDQ + VSADDD + VSADDF + VSADDG + VSADDL + VSBICL + VSBISL + VSCATL + VSCATQ + VSCMPD + VSCMPF + VSCMPG + VSCMPL + VSDIVD + VSDIVF + VSDIVG + VSMERGE + VSMULD + VSMULF + VSMULG + VSMULL + VSSLLL + VSSRLL + VSSUBD + VSSUBF + VSSUBG + VSSUBL + VSTL + VSTQ + VSXORL + VSYNC + VVADDD + VVADDF + VVADDG + VVADDL + VVBICL + VVBISL + VVCMPD + VVCMPF + VVCMPG + VVCMPL + VVCVT + VVDIVD + VVDIVF + VVDIVG + VVMERGE + VVMULD + VVMULF + VVMULG + VVMULL + VVSLLL + VVSRLL + VVSUBD + VVSUBF + VVSUBG + VVSUBL + VVXORL + XFC + XORB2 + XORB3 + XORL2 + XORL3 + XORW2 + XORW3 + + + diff --git a/extra/xmode/modes/assembly-mcs51.xml b/extra/xmode/modes/assembly-mcs51.xml new file mode 100644 index 0000000000..113e196b83 --- /dev/null +++ b/extra/xmode/modes/assembly-mcs51.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + ; + + + ' + ' + + + + " + " + + + + %% + + $ + + : + + , + : + ( + ) + ] + [ + $ + + + + - + / + * + % + + | + ^ + & + ~ + ! + + = + < + > + + + MOD + SHR + SHL + NOT + AND + OR + XOR + HIGH + LOW + LT + LE + NE + EQ + GE + GT + DPTR + PC + EQU + SET + NUMBER + CSEG + XSEG + DSEG + ISEG + BSEG + RSEG + NUL + DB + DW + DWR + DS + DBIT + ORG + USING + END + NAME + PUBLIC + EXTRN + SEGMENT + UNIT + BITADDRESSABLE + INPAGE + INBLOCK + PAGE + OVERLAYABLE + AT + STACKLEN + SBIT + SFR + SFR16 + __ERROR__ + ACALL + ADD + ADDC + AJMP + ANL + CALL + CJNE + CLR + CPL + DA + DEC + DIV + DJNZ + INC + JB + JBC + JC + JMP + JNB + JNC + JNZ + JZ + LCALL + LJMP + MOV + MOVC + MOVX + MUL + NOP + ORL + POP + PUSH + RET + RETI + RL + RLC + RR + RRC + SETB + SJMP + SUBB + SWAP + XCH + XCHD + XRL + IF + ELSEIF + ELSE + ENDIF + MACRO + REPT + IRP + IRPC + ENDM + EXITM + LOCAL + DPTX + DPTN + DPTR8 + DPTR16 + WR0 + WR2 + WR4 + WR6 + DR0 + DR4 + RJC + RJNC + RJZ + RJNZ + JMPI + MOVB + PUSHA + POPA + SUB + ADDM + SUBM + SLEEP + SYNC + DEFINE + SUBSTR + THEN + LEN + EQS + IF + FI + + $IF + $ELSEIF + $ELSE + $ENDIF + $MOD167 + $CASE + $SEGMENTED + $INCLUDE + + + CODE + XDATA + DATA + IDATA + BIT + + + R0 + R1 + R2 + R3 + R4 + R5 + R6 + R7 + + SP + A + C + AB + + + + + + diff --git a/extra/xmode/modes/assembly-parrot.xml b/extra/xmode/modes/assembly-parrot.xml new file mode 100644 index 0000000000..212e182cc1 --- /dev/null +++ b/extra/xmode/modes/assembly-parrot.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + " + " + + + # + + : + + , + + [ISNP]\d{1,2} + + + abs + acos + add + and + asec + asin + atan + bounds + branch + bsr + chopm + cleari + clearn + clearp + clears + clone + close + cmod + concat + cos + cosh + debug + dec + div + end + entrytype + eq + err + exp + find_global + find_type + ge + getfile + getline + getpackage + gt + if + inc + index + jsr + jump + le + length + ln + log2 + log10 + lt + mod + mul + ne + new + newinterp + noop + not + not + open + or + ord + pack + pop + popi + popn + popp + pops + pow + print + profile + push + pushi + pushn + pushp + pushs + read + readline + repeat + restore + ret + rotate_up + runinterp + save + sec + sech + set + set_keyed + setfile + setline + setpackage + shl + shr + sin + sinh + sleep + sub + substr + tan + tanh + time + trace + typeof + unless + warningsoff + warningson + write + xor + + + diff --git a/extra/xmode/modes/assembly-r2000.xml b/extra/xmode/modes/assembly-r2000.xml new file mode 100644 index 0000000000..4023f54582 --- /dev/null +++ b/extra/xmode/modes/assembly-r2000.xml @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + # + + + + ' + ' + + + + " + " + + + + : + + + + .align + .ascii + .asciiz + .byte + .data + .double + .extern + .float + .globl + .half + .kdata + .ktext + .space + .text + .word + + + add + addi + addu + addiu + and + andi + div + divu + mul + mulo + mulou + mult + multu + neg + negu + nor + not + or + ori + rem + remu + rol + ror + sll + sllv + sra + srav + srl + srlv + sub + subu + xor + xori + li + lui + seq + sge + sgt + sgtu + sle + sleu + slt + slti + sltu + sltiu + sne + b + bczt + bczf + beq + beqz + bge + bgeu + bgez + bgezal + bgt + bgtu + bgtz + ble + bleu + blez + bgezal + bltzal + blt + bltu + bltz + bne + bnez + j + jal + jalr + jr + la + lb + blu + lh + lhu + lw + lwcz + lwl + lwr + ulh + ulhu + ulw + sb + sd + sh + sw + swcz + swl + swr + ush + usw + move + mfhi + mflo + mthi + mtlo + mfcz + mfc1.d + mtcz + abs.d + abs.s + add.d + add.s + c.eq.d + c.eq.s + c.le.d + c.le.s + c.lt.d + c.lt.s + cvt.d.s + cbt.d.w + cvt.s.d + cvt.s.w + cvt.w.d + cvt.w.s + div.d + div.s + l.d + l.s + mov.d + mov.s + mul.d + mul.s + neg.d + neg.s + s.d + s.s + sub.d + sub.s + rfe + syscall + break + nop + + + $zero + $at + $v0 + $v1 + $a0 + $a1 + $a2 + $a3 + $t0 + $t1 + $t2 + $t3 + $t4 + $t5 + $t6 + $t7 + $s0 + $s1 + $s2 + $s3 + $s4 + $s5 + $s6 + $s7 + $t8 + $t9 + $k0 + $k1 + $gp + $sp + $fp + $ra + + + $f0 + $f1 + $f2 + $f3 + $f4 + $f5 + $f6 + $f7 + $f8 + $f9 + $f10 + $f11 + $f12 + $f13 + $f14 + $f15 + $f16 + $f17 + $f18 + $f19 + $f20 + $f21 + $f22 + $f23 + $f24 + $f25 + $f26 + $f27 + $f28 + $f29 + $f30 + $f31 + + + diff --git a/extra/xmode/modes/assembly-x86.xml b/extra/xmode/modes/assembly-x86.xml new file mode 100644 index 0000000000..76882ae57c --- /dev/null +++ b/extra/xmode/modes/assembly-x86.xml @@ -0,0 +1,863 @@ + + + + + + + + + + + + + + ; + + + ' + ' + + + + " + " + + + + %% + + % + + : + + + + - + / + * + % + + | + ^ + & + ~ + ! + + = + < + > + + + .186 + .286 + .286P + .287 + .386 + .386P + .387 + .486 + .486P + .586 + .586P + .686 + .686P + .8086 + .8087 + .ALPHA + .BREAK + .BSS + .CODE + .CONST + .CONTINUE + .CREF + .DATA + .DATA? + .DOSSEG + .ELSE + .ELSEIF + .ENDIF + .ENDW + .ERR + .ERR1 + .ERR2 + .ERRB + .ERRDEF + .ERRDIF + .ERRDIFI + .ERRE + .ERRIDN + .ERRIDNI + .ERRNB + .ERRNDEF + .ERRNZ + .EXIT + .FARDATA + .FARDATA? + .IF + .K3D + .LALL + .LFCOND + .LIST + .LISTALL + .LISTIF + .LISTMACRO + .LISTMACROALL + .MMX + .MODEL + .MSFLOAT + .NO87 + .NOCREF + .NOLIST + .NOLISTIF + .NOLISTMACRO + .RADIX + .REPEAT + .SALL + .SEQ + .SFCOND + .STACK + .STARTUP + .TEXT + .TFCOND + .UNTIL + .UNTILCXZ + .WHILE + .XALL + .XCREF + .XLIST + .XMM + __FILE__ + __LINE__ + A16 + A32 + ADDR + ALIGN + ALIGNB + ASSUME + BITS + CARRY? + CATSTR + CODESEG + COMM + COMMENT + COMMON + DATASEG + DOSSEG + ECHO + ELSE + ELSEIF + ELSEIF1 + ELSEIF2 + ELSEIFB + ELSEIFDEF + ELSEIFE + ELSEIFIDN + ELSEIFNB + ELSEIFNDEF + END + ENDIF + ENDM + ENDP + ENDS + ENDSTRUC + EVEN + EXITM + EXPORT + EXTERN + EXTERNDEF + EXTRN + FAR + FOR + FORC + GLOBAL + GOTO + GROUP + HIGH + HIGHWORD + IEND + IF + IF1 + IF2 + IFB + IFDEF + IFDIF + IFDIFI + IFE + IFIDN + IFIDNI + IFNB + IFNDEF + IMPORT + INCBIN + INCLUDE + INCLUDELIB + INSTR + INVOKE + IRP + IRPC + ISTRUC + LABEL + LENGTH + LENGTHOF + LOCAL + LOW + LOWWORD + LROFFSET + MACRO + NAME + NEAR + NOSPLIT + O16 + O32 + OFFSET + OPATTR + OPTION + ORG + OVERFLOW? + PAGE + PARITY? + POPCONTEXT + PRIVATE + PROC + PROTO + PTR + PUBLIC + PURGE + PUSHCONTEXT + RECORD + REPEAT + REPT + SECTION + SEG + SEGMENT + SHORT + SIGN? + SIZE + SIZEOF + SIZESTR + STACK + STRUC + STRUCT + SUBSTR + SUBTITLE + SUBTTL + THIS + TITLE + TYPE + TYPEDEF + UNION + USE16 + USE32 + USES + WHILE + WRT + ZERO? + + DB + DW + DD + DF + DQ + DT + RESB + RESW + RESD + RESQ + REST + EQU + TEXTEQU + TIMES + DUP + + BYTE + WORD + DWORD + FWORD + QWORD + TBYTE + SBYTE + TWORD + SWORD + SDWORD + REAL4 + REAL8 + REAL10 + + + AL + BL + CL + DL + AH + BH + CH + DH + AX + BX + CX + DX + SI + DI + SP + BP + EAX + EBX + ECX + EDX + ESI + EDI + ESP + EBP + CS + DS + SS + ES + FS + GS + ST + ST0 + ST1 + ST2 + ST3 + ST4 + ST5 + ST6 + ST7 + MM0 + MM1 + MM2 + MM3 + MM4 + MM5 + MM6 + MM7 + XMM0 + XMM1 + XMM2 + XMM3 + XMM4 + XMM5 + XMM6 + XMM7 + CR0 + CR2 + CR3 + CR4 + DR0 + DR1 + DR2 + DR3 + DR4 + DR5 + DR6 + DR7 + TR3 + TR4 + TR5 + TR6 + TR7 + + + AAA + AAD + AAM + AAS + ADC + ADD + ADDPS + ADDSS + AND + ANDNPS + ANDPS + ARPL + BOUND + BSF + BSR + BSWAP + BT + BTC + BTR + BTS + CALL + CBW + CDQ + CLC + CLD + CLI + CLTS + CMC + CMOVA + CMOVAE + CMOVB + CMOVBE + CMOVC + CMOVE + CMOVG + CMOVGE + CMOVL + CMOVLE + CMOVNA + CMOVNAE + CMOVNB + CMOVNBE + CMOVNC + CMOVNE + CMOVNG + CMOVNGE + CMOVNL + CMOVNLE + CMOVNO + CMOVNP + CMOVNS + CMOVNZ + CMOVO + CMOVP + CMOVPE + CMOVPO + CMOVS + CMOVZ + CMP + CMPPS + CMPS + CMPSB + CMPSD + CMPSS + CMPSW + CMPXCHG + CMPXCHGB + COMISS + CPUID + CWD + CWDE + CVTPI2PS + CVTPS2PI + CVTSI2SS + CVTSS2SI + CVTTPS2PI + CVTTSS2SI + DAA + DAS + DEC + DIV + DIVPS + DIVSS + EMMS + ENTER + F2XM1 + FABS + FADD + FADDP + FBLD + FBSTP + FCHS + FCLEX + FCMOVB + FCMOVBE + FCMOVE + FCMOVNB + FCMOVNBE + FCMOVNE + FCMOVNU + FCMOVU + FCOM + FCOMI + FCOMIP + FCOMP + FCOMPP + FCOS + FDECSTP + FDIV + FDIVP + FDIVR + FDIVRP + FFREE + FIADD + FICOM + FICOMP + FIDIV + FIDIVR + FILD + FIMUL + FINCSTP + FINIT + FIST + FISTP + FISUB + FISUBR + FLD1 + FLDCW + FLDENV + FLDL2E + FLDL2T + FLDLG2 + FLDLN2 + FLDPI + FLDZ + FMUL + FMULP + FNCLEX + FNINIT + FNOP + FNSAVE + FNSTCW + FNSTENV + FNSTSW + FPATAN + FPREM + FPREMI + FPTAN + FRNDINT + FRSTOR + FSAVE + FSCALE + FSIN + FSINCOS + FSQRT + FST + FSTCW + FSTENV + FSTP + FSTSW + FSUB + FSUBP + FSUBR + FSUBRP + FTST + FUCOM + FUCOMI + FUCOMIP + FUCOMP + FUCOMPP + FWAIT + FXAM + FXCH + FXRSTOR + FXSAVE + FXTRACT + FYL2X + FYL2XP1 + HLT + IDIV + IMUL + IN + INC + INS + INSB + INSD + INSW + INT + INTO + INVD + INVLPG + IRET + JA + JAE + JB + JBE + JC + JCXZ + JE + JECXZ + JG + JGE + JL + JLE + JMP + JNA + JNAE + JNB + JNBE + JNC + JNE + JNG + JNGE + JNL + JNLE + JNO + JNP + JNS + JNZ + JO + JP + JPE + JPO + JS + JZ + LAHF + LAR + LDMXCSR + LDS + LEA + LEAVE + LES + LFS + LGDT + LGS + LIDT + LLDT + LMSW + LOCK + LODS + LODSB + LODSD + LODSW + LOOP + LOOPE + LOOPNE + LOOPNZ + LOOPZ + LSL + LSS + LTR + MASKMOVQ + MAXPS + MAXSS + MINPS + MINSS + MOV + MOVAPS + MOVD + MOVHLPS + MOVHPS + MOVLHPS + MOVLPS + MOVMSKPS + MOVNTPS + MOVNTQ + MOVQ + MOVS + MOVSB + MOVSD + MOVSS + MOVSW + MOVSX + MOVUPS + MOVZX + MUL + MULPS + MULSS + NEG + NOP + NOT + OR + ORPS + OUT + OUTS + OUTSB + OUTSD + OUTSW + PACKSSDW + PACKSSWB + PACKUSWB + PADDB + PADDD + PADDSB + PADDSW + PADDUSB + PADDUSW + PADDW + PAND + PANDN + PAVGB + PAVGW + PCMPEQB + PCMPEQD + PCMPEQW + PCMPGTB + PCMPGTD + PCMPGTW + PEXTRW + PINSRW + PMADDWD + PMAXSW + PMAXUB + PMINSW + PMINUB + PMOVMSKB + PMULHUW + PMULHW + PMULLW + POP + POPA + POPAD + POPAW + POPF + POPFD + POPFW + POR + PREFETCH + PSADBW + PSHUFW + PSLLD + PSLLQ + PSLLW + PSRAD + PSRAW + PSRLD + PSRLQ + PSRLW + PSUBB + PSUBD + PSUBSB + PSUBSW + PSUBUSB + PSUBUSW + PSUBW + PUNPCKHBW + PUNPCKHDQ + PUNPCKHWD + PUNPCKLBW + PUNPCKLDQ + PUNPCKLWD + PUSH + PUSHA + PUSHAD + PUSHAW + PUSHF + PUSHFD + PUSHFW + PXOR + RCL + RCR + RDMSR + RDPMC + RDTSC + REP + REPE + REPNE + REPNZ + REPZ + RET + RETF + RETN + ROL + ROR + RSM + SAHF + SAL + SAR + SBB + SCAS + SCASB + SCASD + SCASW + SETA + SETAE + SETB + SETBE + SETC + SETE + SETG + SETGE + SETL + SETLE + SETNA + SETNAE + SETNB + SETNBE + SETNC + SETNE + SETNG + SETNGE + SETNL + SETNLE + SETNO + SETNP + SETNS + SETNZ + SETO + SETP + SETPE + SETPO + SETS + SETZ + SFENCE + SGDT + SHL + SHLD + SHR + SHRD + SHUFPS + SIDT + SLDT + SMSW + SQRTPS + SQRTSS + STC + STD + STI + STMXCSR + STOS + STOSB + STOSD + STOSW + STR + SUB + SUBPS + SUBSS + SYSENTER + SYSEXIT + TEST + UB2 + UCOMISS + UNPCKHPS + UNPCKLPS + WAIT + WBINVD + VERR + VERW + WRMSR + XADD + XCHG + XLAT + XLATB + XOR + XORPS + + + FEMMS + PAVGUSB + PF2ID + PFACC + PFADD + PFCMPEQ + PFCMPGE + PFCMPGT + PFMAX + PFMIN + PFMUL + PFRCP + PFRCPIT1 + PFRCPIT2 + PFRSQIT1 + PFRSQRT + PFSUB + PFSUBR + PI2FD + PMULHRW + PREFETCHW + + + PF2IW + PFNACC + PFPNACC + PI2FW + PSWAPD + + + PREFETCHNTA + PREFETCHT0 + PREFETCHT1 + PREFETCHT2 + + + + diff --git a/extra/xmode/modes/awk.xml b/extra/xmode/modes/awk.xml new file mode 100644 index 0000000000..2be33ea118 --- /dev/null +++ b/extra/xmode/modes/awk.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + " + " + + + ' + ' + + + # + = + ! + >= + <= + + + - + / + * + > + < + % + & + | + ^ + ~ + } + { + : + + + break + close + continue + delete + do + else + exit + fflush + for + huge + if + in + function + next + nextfile + print + printf + return + while + + atan2 + cos + exp + gensub + getline + gsub + index + int + length + log + match + rand + sin + split + sprintf + sqrt + srand + sub + substr + system + tolower + toupper + + BEGIN + END + $0 + ARGC + ARGIND + ARGV + CONVFMT + ENVIRON + ERRNO + FIELDSWIDTH + FILENAME + FNR + FS + IGNORECASE + NF + NR + OFMT + OFS + ORS + RLENGTH + RS + RSTART + RT + SUBSEP + + + diff --git a/extra/xmode/modes/b.xml b/extra/xmode/modes/b.xml new file mode 100644 index 0000000000..6609b19ef0 --- /dev/null +++ b/extra/xmode/modes/b.xml @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + /*? + ?*/ + + + + /* + */ + + + + " + " + + + ' + ' + + + + // + ! + # + $0 + % + = + + & + + > + < + + * + + + + / + \ + ~ + : + ; + | + - + + ^ + + . + , + ( + ) + } + { + ] + [ + + + + + ABSTRACT_CONSTANTS + ABSTRACT_VARIABLES + CONCRETE_CONSTANTS + CONCRETE_VARIABLES + CONSTANTS + VARIABLES + ASSERTIONS + CONSTRAINTS + DEFINITIONS + EXTENDS + IMPLEMENTATION + IMPORTS + INCLUDES + INITIALISATION + INVARIANT + LOCAL_OPERATIONS + MACHINE + OPERATIONS + PROMOTES + PROPERTIES + REFINES + REFINEMENT + SEES + SETS + USES + VALUES + + + + ANY + ASSERT + BE + BEGIN + CASE + CHOICE + DO + EITHER + ELSE + ELSIF + + END + IF + IN + LET + OF + OR + PRE + SELECT + THEN + VAR + VARIANT + WHEN + WHERE + WHILE + + + FIN + FIN1 + INT + INTEGER + INTER + MAXINT + MININT + NAT + NAT1 + NATURAL + NATURAL1 + PI + POW + POW1 + SIGMA + UNION + + arity + bin + bool + btree + card + closure + closure1 + conc + const + dom + father + first + fnc + front + id + infix + inter + iseq + iseq1 + iterate + last + left + max + min + mirror + mod + not + or + perm + postfix + pred + prefix + prj1 + prj2 + r~ + ran + rank + rec + rel + rev + right + seq + seq1 + size + sizet + skip + son + sons + struct + subtree + succ + tail + top + tree + union + + + + + diff --git a/extra/xmode/modes/batch.xml b/extra/xmode/modes/batch.xml new file mode 100644 index 0000000000..ebfe13affd --- /dev/null +++ b/extra/xmode/modes/batch.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + @ + + + + | + & + ! + > + < + + + : + + + REM\s + + + + " + " + + + + %0 + %1 + %2 + %3 + %4 + %5 + %6 + %7 + %8 + %9 + + %%[\p{Alpha}] + + % + % + + + + + cd + chdir + md + mkdir + + cls + + for + if + + echo + echo. + + move + copy + move + ren + del + set + + + call + exit + setlocal + shift + endlocal + pause + + + + defined + exist + errorlevel + + + else + + in + do + + NUL + AUX + PRN + + not + + + goto + + + + APPEND + ATTRIB + CHKDSK + CHOICE + DEBUG + DEFRAG + DELTREE + DISKCOMP + DISKCOPY + DOSKEY + DRVSPACE + EMM386 + EXPAND + FASTOPEN + FC + FDISK + FIND + FORMAT + GRAPHICS + KEYB + LABEL + LOADFIX + MEM + MODE + MORE + MOVE + MSCDEX + NLSFUNC + POWER + PRINT + RD + REPLACE + RESTORE + SETVER + SHARE + SORT + SUBST + SYS + TREE + UNDELETE + UNFORMAT + VSAFE + XCOPY + + + diff --git a/extra/xmode/modes/bbj.xml b/extra/xmode/modes/bbj.xml new file mode 100644 index 0000000000..91f684c774 --- /dev/null +++ b/extra/xmode/modes/bbj.xml @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + /* + */ + + + " + " + + + // + REM + + = + >= + <= + + + - + / + * + > + < + <> + ^ + and + or + + : + ( + ) + + + ABS + ADJN + ARGC + ARGV + ASC + ATH + ATN + BACKGROUND + BIN + BSZ + CALLBACK + CHANOPT + CHR + CLIPCLEAR + CLIPFROMFILE + CLIPFROMSTR + CLIPISFORMAT + CLIPLOCK + CLIPREGFORMAT + CLIPTOFILE + CLIPTOSTR + CLIPUNLOCK + COS + CPL + CRC + CRC16 + CTRL + CVS + CVT + DATE + DEC + DIMS + DSK + DSZ + EPT + ERRMES + FATTR + FBIN + FDEC + FIELD + FILEOPT + FILL + FLOATINGPOINT + FPT + GAP + HSA + HSH + HTA + IMP + INFO + INT + JUL + LCHECKIN + LCHECKOUT + LEN + LINFO + LOG + LRC + LST + MASK + MAX + MENUINFO + MIN + MOD + MSGBOX + NEVAL + NFIELD + NOTICE + NOTICETPL + NUM + PAD + PCK + PGM + POS + PROCESS_EVENTS + PROGRAM + PSZ + PUB + REMOVE_CALLBACK + RESERVE + RND + ROUND + SCALL + SENDMSG + SEVAL + SGN + SIN + SQR + SSORT + SSZ + STBL + STR + SWAP + SYS + TCB + TMPL + TSK + UPK + WINFIRST + WININFO + WINNEXT + + CHDIR + CISAM + CLOSE + CONTINUE + DIRECT + DIR + DISABLE + DOM + DUMP + ENABLE + END + ENDTRACE + ERASE + EXTRACT + FID + FILE + FIN + FIND + FROM + IND + INDEXED + INPUT + INPUTE + INPUTN + IOL + IOLIST + KEY + KEYF + KEYL + KEYN + KEYP + KGEN + KNUM + LIST + LOAD + LOCK + MERGE + MKDIR + MKEYED + OPEN + PREFIX + PRINT + READ_RESOURCE + READ + RECORD + REMOVE + RENAME + RESCLOSE + RESFIRST + RESGET + RESINFO + RESNEXT + RESOPEN + REV + RMDIR + SAVE + SELECT + SERIAL + SETDAY + SETDRIVE + SETTRACE + SIZ + SORT + SQLCHN + SQLCLOSE + SQLERR + SQLEXEC + SQLFETCH + SQLLIST + SQLOPEN + SQLPREP + SQLSET + SQLTABLES + SQLTMPL + SQLUNT + STRING + TABLE + TBL + TIM + UNLOCK + WHERE + WRITE + XFID + XFILE + XFIN + + ADDR + ALL + AUTO + BEGIN + BREAK + CALL + CASE + CHN + CLEAR + CTL + DATA + DAY + DEF + DEFAULT + DEFEND + DELETE + DIM + DREAD + DROP + EDIT + ELSE + ENDIF + ENTER + ERR + ESCAPE + ESCOFF + ESCON + EXECUTE + EXIT + EXITTO + FI + FOR + GOSUB + GOTO + IF + IFF + INITFILE + IOR + LET + NEXT + NOT + ON + OPTS + OR + PFX + PRECISION + RELEASE + RENUM + REPEAT + RESET + RESTORE + RETRY + RETURN + RUN + SET_CASE_SENSITIVE_OFF + SET_CASE_SENSITIVE_ON + SETERR + SETESC + SETOPTS + SETTIME + SSN + START + STEP + STOP + SWEND + SWITCH + THEN + TO + UNT + UNTIL + WAIT + WEND + WHILE + XOR + + + diff --git a/extra/xmode/modes/bcel.xml b/extra/xmode/modes/bcel.xml new file mode 100644 index 0000000000..19ab3cfd67 --- /dev/null +++ b/extra/xmode/modes/bcel.xml @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + /**/ + + + + /** + */ + + + + + /* + */ + + + // + + + ' + ' + + + + " + " + + + % + # + + : + + > + < + + + + abstract + + + + + + + + extends + final + + + + implements + + native + + private + protected + public + + static + + synchronized + throw + throws + transient + + volatile + + + + + + boolean + byte + char + class + double + float + int + interface + long + short + void + + + + + + + + clinit + init + + nop + aconst_null + iconst_m1 + iconst_0 + iconst_1 + iconst_2 + iconst_3 + iconst_4 + iconst_5 + lconst_0 + lconst_1 + fconst_0 + fconst_1 + fconst_2 + dconst_0 + dconst_1 + bipush + sipush + ldc + ldc_w + ldc2_w + iload + lload + fload + dload + aload + iload_0 + iload_1 + iload_2 + iload_3 + lload_0 + lload_1 + lload_2 + lload_3 + fload_0 + fload_1 + fload_2 + fload_3 + dload_0 + dload_1 + dload_2 + dload_3 + aload_0 + aload_1 + aload_2 + aload_3 + iaload + laload + faload + daload + aaload + baload + caload + saload + istore + lstore + fstore + dstore + astore + istore_0 + istore_1 + istore_2 + istore_3 + lstore_0 + lstore_1 + lstore_2 + lstore_3 + fstore_0 + fstore_1 + fstore_2 + fstore_3 + dstore_0 + dstore_1 + dstore_2 + dstore_3 + astore_0 + astore_1 + astore_2 + astore_3 + iastore + lastore + fastore + dastore + aastore + bastore + castore + sastore + pop + pop2 + dup + dup_x1 + dup_x2 + dup2 + dup2_x1 + dup2_x2 + swap + iadd + ladd + fadd + dadd + isub + lsub + fsub + dsub + imul + lmul + fmul + dmul + idiv + ldiv + fdiv + ddiv + irem + lrem + frem + drem + ineg + lneg + fneg + dneg + ishl + lshl + ishr + lshr + iushr + lushr + iand + land + ior + lor + ixor + lxor + iinc + i2l + i2f + i2d + l2i + l2f + l2d + f2i + f2l + f2d + d2i + d2l + d2f + i2b + i2c + i2s + lcmp + fcmpl + fcmpg + dcmpl + dcmpg + ifeq + ifne + iflt + ifge + ifgt + ifle + if_icmpeq + if_icmpne + if_icmplt + if_icmpge + if_icmpgt + if_icmple + if_acmpeq + if_acmpne + goto + jsr + ret + tableswitch + lookupswitch + ireturn + lreturn + freturn + dreturn + areturn + return + getstatic + putstatic + getfield + putfield + invokevirtual + invokespecial + invokestatic + invokeinterface + + new + newarray + anewarray + arraylength + athrow + checkcast + instanceof + monitorenter + monitorexit + wide + multianewarray + ifnull + ifnonnull + goto_w + jsr_w + + + breakpoint + impdep1 + impdep2 + + + diff --git a/extra/xmode/modes/bibtex.xml b/extra/xmode/modes/bibtex.xml new file mode 100644 index 0000000000..d9211c0910 --- /dev/null +++ b/extra/xmode/modes/bibtex.xml @@ -0,0 +1,960 @@ + + + + + + + + + + + + + + + + + + % + + + + @article{} + @article() + @book{} + @book() + @booklet{} + @booklet() + @conference{} + @conference() + @inbook{} + @inbook() + @incollection{} + @incollection() + @inproceedings{} + @inproceedings() + @manual{} + @manual() + @mastersthesis{} + @mastersthesis() + @misc{} + @misc() + @phdthesis{} + @phdthesis() + @proceedings{} + @proceedings() + @techreport{} + @techreport() + @unpublished{} + @unpublished() + @string{} + @string() + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + journal + title + year + + month + note + number + pages + volume + + address + annote + booktitle + chapter + crossref + edition + editor + howpublished + institution + key + organization + publisher + school + series + type + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + editor + publisher + title + year + + address + edition + month + note + number + series + volume + + annote + booktitle + chapter + crossref + howpublished + institution + journal + key + organization + pages + school + type + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + title + + address + author + howpublished + month + note + year + + annote + booktitle + chapter + crossref + edition + editor + institution + journal + key + number + organization + pages + publisher + school + series + type + volume + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + booktitle + title + year + + address + editor + month + note + number + organization + pages + publisher + series + volume + + annote + chapter + crossref + edition + howpublished + institution + journal + key + school + type + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + chapter + editor + pages + publisher + title + year + + address + edition + month + note + number + series + type + volume + + annote + booktitle + crossref + howpublished + institution + journal + key + organization + school + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + booktitle + publisher + title + year + + address + chapter + edition + editor + month + note + number + pages + series + type + volume + + annote + crossref + howpublished + institution + journal + key + organization + school + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + booktitle + title + year + + address + editor + month + note + number + organization + pages + publisher + series + volume + + annote + chapter + crossref + edition + howpublished + institution + journal + key + school + type + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + title + + address + author + edition + month + note + organization + year + + annote + booktitle + chapter + crossref + editor + howpublished + institution + journal + key + number + pages + publisher + school + series + type + volume + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + school + title + year + + address + month + note + type + + annote + booktitle + chapter + crossref + edition + editor + howpublished + institution + journal + key + number + organization + pages + publisher + series + volume + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + + author + howpublished + month + note + title + year + + address + annote + booktitle + chapter + crossref + edition + editor + institution + journal + key + number + organization + pages + publisher + school + series + type + volume + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + school + title + year + + address + month + note + type + + annote + booktitle + chapter + crossref + edition + editor + howpublished + institution + journal + key + number + organization + pages + publisher + series + volume + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + title + year + + address + editor + month + note + number + organization + publisher + series + volume + + annote + author + booktitle + chapter + crossref + edition + howpublished + institution + journal + key + pages + school + type + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + institution + title + year + + address + month + note + number + type + + annote + booktitle + chapter + crossref + edition + editor + howpublished + journal + key + organization + pages + publisher + school + series + volume + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + "" + {} + = + , + [1-9][0-9]* + + + author + note + title + + month + year + + address + annote + booktitle + chapter + crossref + edition + editor + howpublished + institution + journal + key + number + organization + pages + publisher + school + series + type + volume + + abstract + annotation + day + keywords + lccn + location + references + url + + jan + feb + mar + apr + may + jun + jul + aug + sep + oct + nov + dec + + + + + + \{\} + {} + "" + \" + + + + \{\} + {} + \" + + + + "" + {} + \{\} + = + , + \" + + + + diff --git a/extra/xmode/modes/c.xml b/extra/xmode/modes/c.xml new file mode 100644 index 0000000000..a4a94694a0 --- /dev/null +++ b/extra/xmode/modes/c.xml @@ -0,0 +1,401 @@ + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + /**/ + + /**< + */ + + + /** + */ + + ///< + /// + + + + /*!< + */ + + + /*! + */ + + //!< + //! + + + + /* + */ + + // + + + L" + " + + + " + " + + + L' + ' + + + ' + ' + + + + ??( + ??/ + ??) + ??' + ??< + ??! + ??> + ??- + ??= + + + <: + :> + <% + %> + %: + + + : + + + ( + + = + ! + + + - + / + * + > + < + % + & + | + ^ + ~ + ? + : + . + , + [ + ] + ) + } + { + ; + + + + __DATE__ + __FILE__ + __LINE__ + __STDC_HOSTED__ + __STDC_ISO_10646__ + __STDC_VERSION__ + __STDC__ + __TIME__ + __cplusplus + + + BUFSIZ + CLOCKS_PER_SEC + EDOM + EILSEQ + EOF + ERANGE + EXIT_FAILURE + EXIT_SUCCESS + FILENAME_MAX + FOPEN_MAX + HUGE_VAL + LC_ALL + LC_COLLATE + LC_CTYPE + LC_MONETARY + LC_NUMERIC + LC_TIME + L_tmpnam + MB_CUR_MAX + NULL + RAND_MAX + SEEK_CUR + SEEK_END + SEEK_SET + SIGABRT + SIGFPE + SIGILL + SIGINT + SIGSEGV + SIGTERM + SIG_DFL + SIG_ERR + SIG_IGN + TMP_MAX + WCHAR_MAX + WCHAR_MIN + WEOF + _IOFBF + _IOLBF + _IONBF + assert + errno + offsetof + setjmp + stderr + stdin + stdout + va_arg + va_end + va_start + + + CHAR_BIT + CHAR_MAX + CHAR_MIN + DBL_DIG + DBL_EPSILON + DBL_MANT_DIG + DBL_MAX + DBL_MAX_10_EXP + DBL_MAX_EXP + DBL_MIN + DBL_MIN_10_EXP + DBL_MIN_EXP + FLT_DIG + FLT_EPSILON + FLT_MANT_DIG + FLT_MAX + FLT_MAX_10_EXP + FLT_MAX_EXP + FLT_MIN + FLT_MIN_10_EXP + FLT_MIN_EXP + FLT_RADIX + FLT_ROUNDS + INT_MAX + INT_MIN + LDBL_DIG + LDBL_EPSILON + LDBL_MANT_DIG + LDBL_MAX + LDBL_MAX_10_EXP + LDBL_MAX_EXP + LDBL_MIN + LDBL_MIN_10_EXP + LDBL_MIN_EXP + LONG_MAX + LONG_MIN + MB_LEN_MAX + SCHAR_MAX + SCHAR_MIN + SHRT_MAX + SHRT_MIN + UCHAR_MAX + UINT_MAX + ULONG_MAX + USRT_MAX + + + and + and_eq + bitand + bitor + compl + not + not_eq + or + or_eq + xor + xor_eq + + + + + + + + bool + char + double + enum + float + int + long + short + signed + struct + union + unsigned + + asm + auto + break + case + const + continue + default + do + else + extern + false + for + goto + if + inline + register + return + sizeof + static + switch + true + typedef + void + volatile + while + + restrict + _Bool + _Complex + _Pragma + _Imaginary + + + + + + + include\b + define\b + endif\b + elif\b + if\b + + + + + + ifdef + ifndef + else + error + line + pragma + undef + warning + + + + + + + + < + > + + + " + " + + + + + + + + # + + + + + + + + + + defined + + true + false + + + + + diff --git a/extra/xmode/modes/catalog b/extra/xmode/modes/catalog new file mode 100644 index 0000000000..cd1da3dd1f --- /dev/null +++ b/extra/xmode/modes/catalog @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extra/xmode/modes/chill.xml b/extra/xmode/modes/chill.xml new file mode 100644 index 0000000000..2ef3b8f4f4 --- /dev/null +++ b/extra/xmode/modes/chill.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + <> + <> + + + + /* + */ + + + + ' + ' + + + H' + ; + + + ) + ( + ] + [ + + + - + / + * + . + , + ; + ^ + @ + := + : + = + /= + > + < + >= + <= + + + + AND + BEGIN + CASE + DIV + DO + ELSE + ELSIF + END + ESAC + EXIT + FI + FOR + GOTO + IF + IN + MOD + NOT + OD + OF + ON + OR + OUT + RESULT + RETURN + THEN + THEN + TO + UNTIL + USES + WHILE + WITH + XOR + + ARRAY + DCL + GRANT + LABEL + MODULE + NEWMODE + PROC + POWERSET + SEIZE + SET + STRUCT + SYN + SYNMODE + TYPE + PACK + + BIN + CHAR + INT + RANGE + + BOOL + + PTR + REF + + + + + + + + + FALSE + NULL + TRUE + + + diff --git a/extra/xmode/modes/cil.xml b/extra/xmode/modes/cil.xml new file mode 100644 index 0000000000..93b3816477 --- /dev/null +++ b/extra/xmode/modes/cil.xml @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + ' + ' + + + // + + ( + ) + + + " + " + + + : + + + public + private + family + assembly + famandassem + famorassem + autochar + abstract + ansi + beforefieldinit + explicit + interface + nested + rtspecialname + sealed + sequential + serializable + specialname + unicode + final + hidebysig + newslot + pinvokeimpl + static + virtual + cil + forwardref + internalcall + managed + native + noinlining + runtime + synchronized + unmanaged + typedref + cdecl + fastcall + stdcall + thiscall + platformapi + initonly + literal + marshal + notserialized + addon + removeon + catch + fault + filter + handler + + + .assembly + .assembly extern + .class + .class extern + .field + .method + .property + .get + .set + .other + .ctor + .corflags + .custom + .data + .file + .mresource + .module + .module extern + .subsystem + .vtfixup + .publickeytoken + .ver + .hash algorithm + .culture + .namespace + .event + .fire + .override + .try + .catch + .finally + .locals + .maxstack + .entrypoint + .pack + .size + + + .file alignment + .imagebase + .language + .namespace + + + string + object + bool + true + false + bytearray + char + float32 + float64 + int8 + int16 + int32 + int64 + nullref + + + & + * + } + { + + + add + add.ovf + add.ovf.un + div + div.un + mul + mul.ovf + mul.ovf.un + sub + sub.ovf + sub.ovf.un + + + and + not + or + xor + + + beq + beq.s + bge + bge.s + bge.un + bge.un.s + bgt + bgt.s + bgt.un + bgt.un.s + ble + ble.s + ble.un + ble.un.s + blt + blt.s + blt.un + blt.un.s + bne.un + bne.un.s + br + brfalse + brfalse.s + brtrue + brtrue.s + br.s + + + conv.i + conv.i1 + conv.i2 + conv.i4 + conv.i8 + conv.ovf.i + conv.ovf.i1 + conv.ovf.i1.un + conv.ovf.i2 + conv.ovf.i2.un + conv.ovf.i4 + conv.ovf.i4.un + conv.ovf.i8 + conv.ovf.i8.un + conv.ovf.i.un + conv.ovf.u + conv.ovf.u1 + conv.ovf.u1.un + conv.ovf.u2 + conv.ovf.u2.un + conv.ovf.u4 + conv.ovf.u4.un + conv.ovf.u8 + conv.ovf.u8.un + conv.ovf.u.un + conv.r4 + conv.r8 + conv.r.un + conv.u + conv.u1 + conv.u2 + conv.u4 + conv.u8 + + + ldarg + ldarga + ldarga.s + ldarg.0 + ldarg.1 + ldarg.2 + ldarg.3 + ldarg.s + ldc.i4 + ldc.i4.0 + ldc.i4.1 + ldc.i4.2 + ldc.i4.3 + ldc.i4.4 + ldc.i4.5 + ldc.i4.6 + ldc.i4.7 + ldc.i4.8 + ldc.i4.m1 + ldc.i4.s + ldc.i8 + ldc.r4 + ldc.r8 + ldelema + ldelem.i + ldelem.i1 + ldelem.i2 + ldelem.i4 + ldelem.i8 + ldelem.r4 + ldelem.r8 + ldelem.ref + ldelem.u1 + ldelem.u2 + ldelem.u4 + ldfld + ldflda + ldftn + ldind.i + ldind.i1 + ldind.i2 + ldind.i4 + ldind.i8 + ldind.r4 + ldind.r8 + ldind.ref + ldind.u1 + ldind.u2 + ldind.u4 + ldlen + ldloc + ldloca + ldloca.s + ldloc.0 + ldloc.1 + ldloc.2 + ldloc.3 + ldloc.s + ldnull + ldobj + ldsfld + ldsflda + ldstr + ldtoken + ldvirtftn + starg + starg.s + stelem.i + stelem.i1 + stelem.i2 + stelem.i4 + stelem.i8 + stelem.r4 + stelem.r8 + stelem.ref + stfld + stind.i + stind.i1 + stind.i2 + stind.i4 + stind.i8 + stind.r4 + stind.r8 + stind.ref + stloc + stloc.0 + stloc.1 + stloc.2 + stloc.3 + stloc.s + stobj + stsfld + + call + calli + callvirt + castclass + ceq + cgt + cgt.un + ckfinite + clt + clt.un + cpblk + cpobj + + initblk + initobj + newarr + newobj + + dup + endfilter + isinst + box + unbox + arglist + break + jmp + ret + leave + leave.s + localloc + mkrefany + neg + switch + nop + pop + refanytype + refanyval + rem + rem.un + throw + rethrow + endfinally + shl + shr + shr.un + sizeof + tailcall + unaligned + volatile + + + diff --git a/extra/xmode/modes/clips.xml b/extra/xmode/modes/clips.xml new file mode 100644 index 0000000000..ce2efcabab --- /dev/null +++ b/extra/xmode/modes/clips.xml @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + ; + + + + ' + ' + + + " + " + + + + + [ + ] + + + + => + ? + >< + > + >= + < + <= + >- + + + - + * + / + = + ** + ~ + \ + | + & + : + $ + + + ( + ) + [ + ] + { + } + + + + deffacts + deftemplate + defglobal + defrule + deffunction + defgeneric + defmethod + defclass + definstance + defmessage + defmodule + deffacts-module + deffunction-module + defgeneric-module + defglobal-module + definstances-module + slot + multislot + default + default-dynamic + declare + salience + auto-focus + object + is-a + pattern-match + single-slot + reactive + non-reactive + storage + local + shared + access + read-write + read-only + initialize-only + propagation + inherit + non-inherit + source + exclusive + composite + visibility + private + public + create-accessor + ?NONE + read + write + ?DEFAULT + primary + around + before + after + import + export + ?ALL + type + allowed-symbols + allowed-strings + allowed-lexemes + allowed-integers + allowed-floats + allowed-numbers + allowed-instance-names + allowed-values + ?VARIABLE + + if + while + then + else + or + and + eq + evenp + floatp + integerp + lexemep + multifieldp + neq + not + numberp + oddp + pointerp + stringp + symbolp + switch + while + + assert + bind + class-abstractp + class-existp + class-subclasses + class-superclasses + defclass-module + describe-classes + get-class-defaults-mode + get-defclass-list + agenda + list-defclasses + ppdefclass + set-class-defaults-mode + slot-allowed-values + slot-cardinality + slot-default-value + slot-direct-accessp + slot-existp + slot-facest + slot-initablep + slot-publicp + slot-range + slot-sources + slot-types + slot-writablep + subsclassp + undefclass + get-deffacts-list + list-deffacts + ppdeffacts + undeffacts + get-deffunction-list + list-deffunction + ppdeffunction + undeffunction + get-defgeneric-list + list-defgenerics + ppdefgeneric + preview-generic + type + undefgeneric + get-defglobal-list + get-reset-globals + list-defglobals + ppdefglobal + set-reset-globals + undefglobal + get-definstances-list + list-definstances + ppdefinstances + undefinstances + call-next-handler + get-defmessage-handler + list-defmessage-handlers + message-handler-existp + handler-type + next-handlerp + override-next-handler + ppdefmessage-handler + undefmessage-handler + call-next-method + call-specific-method + get-defmethod-list + get-method-restrictions + list-defmethods + next-methodp + override-next-method + undefmethod + preview-generic + get-current-module + get-defmodule-list + list-defmodules + ppdefmodules + set-current-module + defrule-module + get-defrule-list + get-incremental-reset + list-defrules + matches + ppdefrule + refresh + remove-break + set-break + set-incremental-reset + show-breaks + undefrule + deftemplate-module + get-deftemaplate-list + list-deftemplates + ppdeftemplate + undeftemplate + apropos + bacth + batch* + bload + bsave + clear + exit + get-auto-float-dividend + get-dynamic-constraints-checking + get-static-constraints-checking + load + load* + options + reset + save + set-auto-float-dividend + set-dynamic-constriants-checking + set-static-constriants-checking + system + assert-string + dependencies + dependents + duplicate + facts + fact-existp + fact-index + fact-relation + fact-slot-names + fact-slot-value + get-fact-duplication + get-fact-list + load-facts + modify + retract + save-facts + set-fact-duplication + any-instancep + class + delayed-do-for-all-instances + delete-instance + direct-slot-delete$ + direct-slot-insert$ + direct-slot-replace$ + do-for-instance + do-for-all-instances + dynamic-get + dynamic-put + find-instance + find-all-instances + init-slot + instance-address + instance-addressp + instance-existp + instance-name + instance-namep + instance-name-to-symbol + instancep + instances + load-instances + make-intance + ppinstance + restore-instances + save-instances + send + slot-delete$ + slot-insert$ + slot-replace$ + symbol-to-instance-name + unmake-instance + create$ + delete$ + delete-member$ + explode$ + first$ + implode$ + insert$ + length$ + member$ + nth$ + replace$ + rest$ + subseq$ + subsetp + break + loop-for-count + progn + progn$ + return + get-profile-percent-threshold + profile-contructs + profile-info + profile-reset + set-profile-percent-threshold + expand$ + get-sequence-operator-recognition + aet-sequence-operator-recognition + build + check-syntax + eval + lowcase + str-cat + str-compare + str-index + str-length + string-to-field + sub-string + sym-cat + upcase + fetch + print-region + toss + + abs + div + float + integer + max + min + deg-grad + deg-rad + exp + grad-deg + log + log10 + mod + pi + rad-deg + round + sqrt + close + format + open + printout + read + readline + remove + rename + conserve-mem + mem-used + mem-requests + release-mem + funcall + gensym + gemsym* + get-function-restriction + length + random + seed + setgen + sort + time + timer + acos + acosh + acot + acoth + acsc + acsch + asec + asin + asinh + atan + atanh + cos + cosh + cot + coth + csc + sec + sech + sin + sinh + tan + tanh + + + + + + diff --git a/extra/xmode/modes/cobol.xml b/extra/xmode/modes/cobol.xml new file mode 100644 index 0000000000..31339bceff --- /dev/null +++ b/extra/xmode/modes/cobol.xml @@ -0,0 +1,998 @@ + + + + + + + + .{6}(\*|/) + + + " + " + + + ' + ' + + + = + >= + <= + + + - + / + * + ** + > + < + % + & + | + ^ + ~ + + + EXEC SQL + END-EXEC + + + + ACCEPT + ACCESS + ACTUAL + ADD + ADDRESS + ADVANCING + AFTER + ALL + ALPHABET + ALPHABETIC + ALPHABETIC-LOWER + ALPHABETIC-UPPER + ALPHANUMERIC + ALPHANUMERIC-EDITED + ALSO + ALTER + ALTERNATE + AND + ANY + API + APPLY + ARE + AREA + AREAS + ASCENDING + ASSIGN + AT + AUTHOR + AUTO + AUTO-SKIP + AUTOMATIC + + BACKGROUND-COLOR + BACKGROUND-COLOUR + BACKWARD + BASIS + BEEP + BEFORE + BEGINNING + BELL + BINARY + BLANK + BLINK + BLOCK + BOTTOM + BY + + C01 + C02 + C03 + C04 + C05 + C06 + C07 + C08 + C09 + C10 + C11 + C12 + CALL + CALL-CONVENTION + CANCEL + CBL + CD + CF + CH + CHAIN + CHAINING + CHANGED + CHARACTER + CHARACTERS + CLASS + CLOCK-UNITS + CLOSE + COBOL + CODE + CODE-SET + COL + COLLATING + COLUMN + COM-REG + COMMA + COMMIT + COMMON + COMMUNICATION + COMP + COMP-0 + COMP-1 + COMP-2 + COMP-3 + COMP-4 + COMP-5 + COMP-6 + COMP-X + COMPUTATIONAL + COMPUTATIONAL-0 + COMPUTATIONAL-1 + COMPUTATIONAL-2 + COMPUTATIONAL-3 + COMPUTATIONAL-4 + COMPUTATIONAL-5 + COMPUTATIONAL-6 + COMPUTATIONAL-X + COMPUTE + CONFIGURATION + CONSOLE + CONTAINS + CONTENT + CONTINUE + CONTROL + CONTROLS + CONVERTING + COPY + CORE-INDEX + CORR + CORRESPONDING + COUNT + CRT + CRT-UNDER + CURRENCY + CURRENT-DATE + CURSOR + CYCLE + CYL-INDEX + CYL-OVERFLOW + + DATA + DATE + DATE-COMPILED + DATE-WRITTEN + DAY + DAY-OF-WEEK + DBCS + DE + DEBUG + DEBUG-CONTENTS + DEBUG-ITEM + DEBUG-LINE + DEBUG-NAME + DEBUG-SUB-1 + DEBUG-SUB-2 + DEBUG-SUB-3 + DEBUGGING + DECIMAL-POINT + DECLARATIVES + DELETE + DELIMITED + DELIMITER + DEPENDING + DESCENDING + DESTINATION + DETAIL + DISABLE + DISK + DISP + DISPLAY + DISPLAY-1 + DISPLAY-ST + DIVIDE + DIVISION + DOWN + DUPLICATES + DYNAMIC + + ECHO + EGCS + EGI + EJECT + ELSE + EMI + EMPTY-CHECK + ENABLE + END + END-ACCEPT + END-ADD + END-CALL + END-CHAIN + END-COMPUTE + END-DELETE + END-DISPLAY + END-DIVIDE + END-EVALUATE + END-IF + END-INVOKE + END-MULTIPLY + END-OF-PAGE + END-PERFORM + END-READ + END-RECEIVE + END-RETURN + END-REWRITE + END-SEARCH + END-START + END-STRING + END-SUBTRACT + END-UNSTRING + END-WRITE + ENDING + ENTER + ENTRY + ENVIRONMENT + EOL + EOP + EOS + EQUAL + EQUALS + ERASE + ERROR + ESCAPE + ESI + EVALUATE + EVERY + EXAMINE + EXCEEDS + EXCEPTION + EXCESS-3 + EXCLUSIVE + EXEC + EXECUTE + EXHIBIT + EXIT + EXTEND + EXTENDED-SEARCH + EXTERNAL + + FACTORY + FALSE + FD + FH-FCD + FH-KEYDEF + FILE + FILE-CONTROL + FILE-ID + FILE-LIMIT + FILE-LIMITS + FILLER + FINAL + FIRST + FIXED + FOOTING + FOR + FOREGROUND-COLOR + FOREGROUND-COLOUR + FROM + FULL + FUNCTION + + GENERATE + GIVING + GLOBAL + GO + GOBACK + GREATER + GRID + GROUP + + HEADING + HIGH + HIGH-VALUE + HIGH-VALUES + HIGHLIGHT + + I-O + I-O-CONTROL + ID + IDENTIFICATION + IF + IGNORE + IN + INDEX + INDEXED + INDICATE + INHERITING + INITIAL + INITIALIZE + INITIATE + INPUT + INPUT-OUTPUT + INSERT + INSPECT + INSTALLATION + INTO + INVALID + INVOKE + IS + + JAPANESE + JUST + JUSTIFIED + + KANJI + KEPT + KEY + KEYBOARD + + LABEL + LAST + LEADING + LEAVE + LEFT + LEFT-JUSTIFY + LEFTLINE + LENGTH + LENGTH-CHECK + LESS + LIMIT + LIMITS + LIN + LINAGE + LINAGE-COUNTER + LINE + LINE-COUNTER + LINES + LINKAGE + LOCAL-STORAGE + LOCK + LOCKING + LOW + LOW-VALUE + LOW-VALUES + LOWER + LOWLIGHT + + MANUAL + MASTER-INDEX + MEMORY + MERGE + MESSAGE + METHOD + MODE + MODULES + MORE-LABELS + MOVE + MULTIPLE + MULTIPLY + + NAME + NAMED + NATIONAL + NATIONAL-EDITED + NATIVE + NCHAR + NEGATIVE + NEXT + NO + NO-ECHO + NOMINAL + NOT + NOTE + NSTD-REELS + NULL + NULLS + NUMBER + NUMERIC + NUMERIC-EDITED + + OBJECT + OBJECT-COMPUTER + OBJECT-STORAGE + OCCURS + OF + OFF + OMITTED + ON + OOSTACKPTR + OPEN + OPTIONAL + OR + ORDER + ORGANIZATION + OTHER + OTHERWISE + OUTPUT + OVERFLOW + OVERLINE + + PACKED-DECIMAL + PADDING + PAGE + PAGE-COUNTER + PARAGRAPH + PASSWORD + PERFORM + PF + PH + PIC + PICTURE + PLUS + POINTER + POS + POSITION + POSITIONING + POSITIVE + PREVIOUS + PRINT + PRINT-SWITCH + PRINTER + PRINTER-1 + PRINTING + PRIVATE + PROCEDURE + PROCEDURE-POINTER + PROCEDURES + PROCEED + PROCESSING + PROGRAM + PROGRAM-ID + PROMPT + PROTECTED + PUBLIC + PURGE + + QUEUE + QUOTE + QUOTES + + RANDOM + RANGE + RD + READ + READY + RECEIVE + RECORD + RECORD-OVERFLOW + RECORDING + RECORDS + REDEFINES + REEL + REFERENCE + REFERENCES + RELATIVE + RELEASE + RELOAD + REMAINDER + REMARKS + REMOVAL + RENAMES + REORG-CRITERIA + REPLACE + REPLACING + REPORT + REPORTING + REPORTS + REQUIRED + REREAD + RERUN + RESERVE + RESET + RETURN + RETURN-CODE + RETURNING + REVERSE + REVERSE-VIDEO + REVERSED + REWIND + REWRITE + RF + RH + RIGHT + RIGHT-JUSTIFY + ROLLBACK + ROUNDED + RUN + + S01 + S02 + S03 + S04 + S05 + SAME + SCREEN + SD + SEARCH + SECTION + SECURE + SECURITY + SEEK + SEGMENT + SEGMENT-LIMIT + SELECT + SELECTIVE + SEND + SENTENCE + SEPARATE + SEQUENCE + SEQUENTIAL + SERVICE + SET + SHIFT-IN + SHIFT-OUT + SIGN + SIZE + SKIP1 + SKIP2 + SKIP3 + SORT + SORT-CONTROL + SORT-CORE-SIZE + SORT-FILE-SIZE + SORT-MERGE + SORT-MESSAGE + SORT-MODE-SIZE + SORT-OPTION + SORT-RETURN + SOURCE + SOURCE-COMPUTER + SPACE + SPACE-FILL + SPACES + SPECIAL-NAMES + STANDARD + STANDARD-1 + STANDARD-2 + START + STATUS + STOP + STORE + STRING + SUB-QUEUE-1 + SUB-QUEUE-2 + SUB-QUEUE-3 + SUBTRACT + SUM + SUPER + SUPPRESS + SYMBOLIC + SYNC + SYNCHRONIZED + SYSIN + SYSIPT + SYSLST + SYSOUT + SYSPCH + SYSPUNCH + + TAB + TABLE + TALLY + TALLYING + TAPE + TERMINAL + TERMINATE + TEST + TEXT + THAN + THEN + THROUGH + THRU + TIME + TIME-OF-DAY + TIME-OUT + TIMEOUT + TIMES + TITLE + TO + TOP + TOTALED + TOTALING + TRACE + TRACK-AREA + TRACK-LIMIT + TRACKS + TRAILING + TRAILING-SIGN + TRANSFORM + TRUE + TYPE + TYPEDEF + + UNDERLINE + UNEQUAL + UNIT + UNLOCK + UNSTRING + UNTIL + UP + UPDATE + UPON + UPPER + UPSI-0 + UPSI-1 + UPSI-2 + UPSI-3 + UPSI-4 + UPSI-5 + UPSI-6 + UPSI-7 + USAGE + USE + USER + USING + + VALUE + VALUES + VARIABLE + VARYING + + WAIT + WHEN + WHEN-COMPILED + WITH + WORDS + WORKING-STORAGE + WRITE + WRITE-ONLY + WRITE-VERIFY + + ZERO + ZERO-FILL + ZEROES + ZEROS + + ACOS + ANNUITY + ASIN + ATAN + CHAR + COS + CURRENT-DATE + DATE-OF-INTEGER + DAY-OF-INTEGER + FACTORIAL + INTEGER + INTEGER-OF-DATE + INTEGER-OF-DAY + INTEGER-PART + + LOG + LOG10 + LOWER-CASE + MAX + MEAN + MEDIAN + MIDRANGE + MIN + MOD + NUMVAL + NUMVAL-C + ORD + ORD-MAX + ORD-MIN + PRESENT-VALUE + RANDOM + RANGE + REM + REVERSE + SIN + SQRT + STANDARD-DEVIATION + SUM + TAN + UPPER-CASE + VARIANCE + WHEN-COMPILED + + + + + + [COPY-PREFIX] + [COUNT] + [DISPLAY] + [EXECUTE] + [PG] + [PREFIX] + [PROGRAM] + [SPECIAL-PREFIX] + [TESTCASE] + + + diff --git a/extra/xmode/modes/coldfusion.xml b/extra/xmode/modes/coldfusion.xml new file mode 100644 index 0000000000..8385df768e --- /dev/null +++ b/extra/xmode/modes/coldfusion.xml @@ -0,0 +1,645 @@ + + + + + + + + + + + + + + <!--- + ---> + + + + + /* + */ + + + + // + + + + <!-- + --> + + + + + <CFSCRIPT + </CFSCRIPT> + + + + + <CF + > + + + + + </CF + > + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + < + > + + + + + & + ; + + + + + + " + " + + + ' + ' + + + = + + + + <CF + > + + + + + </CF + > + + + + + <CFSCRIPT + </CFSCRIPT> + + + + + + + + /* + */ + + + + // + + + " + " + + + ' + ' + + + ( + ) + + = + + + - + / + >= + <= + >< + * + !! + && + + + { + } + for + while + if + }else + }else{ + if( + else + break + + ArrayAppend + ArrayAvg + ArrayClear + ArrayDeleteAt + ArrayInsertAt + ArrayIsEmpty + ArrayLen + ArrayMax + ArrayMin + ArrayNew + ArrayPrepend + ArrayResize + ArraySet + ArraySort + ArraySum + ArraySwap + ArrayToList + IsArray + ListToArray + + CreateDate + CreateDateTime + CreateODBCTime + CreateODBCDate + CreateODBCDateTime + CreateTime + CreateTimeSpan + DateAdd + DateCompare + DateDiff + DatePart + Day + DayOfWeek + DayOfWeekAsString + DayOfYear + DaysInMonth + DaysInYear + FirstDayOfMonth + Hour + Minute + Month + MonthAsString + Now + ParseDateTime + Quarter + Second + Week + Year + + IsArray + IsAuthenticated + IsAuthorized + IsBoolean + IsDate + IsDebugMode + IsDefined + IsLeapYear + IsNumeric + IsNumericDate + IsQuery + IsSimpleValue + IsStruct + + DateFormat + DecimalFormat + DollarFormat + FormatBaseN + HTMLCodeFormat + HTMLEditFormat + NumberFormat + ParagraphFormat + TimeFormat + YesNoFormat + + DE + Evaluate + IIf + SetVariable + + ArrayToList + ListAppend + ListChangeDelims + ListContains + ListContainsNoCase + ListDeleteAt + ListFind + ListFindNoCase + ListFirst + ListGetAt + ListInsertAt + ListLast + ListLen + ListPrepend + ListRest + ListSetAt + ListToArray + + StructClear + StructCopy + StructCount + StructDelete + StructFind + StructInsert + StructIsEmpty + StructKeyExists + StructNew + StructUpdate + + GetLocale + LSCurrencyFormat + LSDateFormat + LSIsCurrency + LSIsDate + LSIsNumeric + LSNumberFormat + LSParseCurrency + LSParseDateTime + LSParseNumber + LSTimeFormat + SetLocale + + Abs + Atn + BitAnd + BitMaskClear + BitMaskRead + BitMaskSet + BitNot + BitOr + BitSHLN + BitSHRN + BitXor + Ceiling + Cos + DecrementValue + Exp + Fix + IncrementValue + InputBaseN + Int + Log + Log10 + Max + Min + Pi + Rand + Randomize + RandRange + Round + Sgn + Sin + Sqr + Tan + + Asc + Chr + CJustify + Compare + CompareNoCase + Find + FindNoCase + FindOneOf + GetToken + Insert + LCase + Left + Len + LJustify + LTrim + Mid + REFind + REFindNoCase + RemoveChars + RepeatString + Replace + ReplaceList + ReplaceNoCase + REReplace + REReplaceNoCase + Reverse + Right + RJustify + RTrim + SpanExcluding + SpanIncluding + Trim + UCase + Val + + DirectoryExists + ExpandPath + FileExists + GetDirectoryFromPath + GetFileFromPath + GetTempDirectory + GetTempFile + GetTemplatePath + + QueryAddRow + QueryNew + QuerySetCell + + Decrypt + DeleteClientVariable + Encrypt + GetBaseTagData + GetBaseTagList + GetClientVariablesList + GetTickCount + PreserveSingleQuotes + QuotedValueList + StripCR + URLEncodedFormat + ValueList + WriteOutput + + ParameterExists + + IS + EQ + NEQ + GT + GTE + LT + LTE + + LESS + GREATER + THAN + + AND + OR + NOT + XOR + + + + + + " + " + + + ' + ' + + + = + ## + + + # + # + + + + ArrayAppend + ArrayAvg + ArrayClear + ArrayDeleteAt + ArrayInsertAt + ArrayIsEmpty + ArrayLen + ArrayMax + ArrayMin + ArrayNew + ArrayPrepend + ArrayResize + ArraySet + ArraySort + ArraySum + ArraySwap + ArrayToList + IsArray + ListToArray + + CreateDate + CreateDateTime + CreateODBCTime + CreateODBCDate + CreateODBCDateTime + CreateTime + CreateTimeSpan + DateAdd + DateCompare + DateDiff + DatePart + Day + DayOfWeek + DayOfWeekAsString + DayOfYear + DaysInMonth + DaysInYear + FirstDayOfMonth + Hour + Minute + Month + MonthAsString + Now + ParseDateTime + Quarter + Second + Week + Year + + IsArray + IsAuthenticated + IsAuthorized + IsBoolean + IsDate + IsDebugMode + IsDefined + IsLeapYear + IsNumeric + IsNumericDate + IsQuery + IsSimpleValue + IsStruct + + DateFormat + DecimalFormat + DollarFormat + FormatBaseN + HTMLCodeFormat + HTMLEditFormat + NumberFormat + ParagraphFormat + TimeFormat + YesNoFormat + + DE + Evaluate + IIf + SetVariable + + ArrayToList + ListAppend + ListChangeDelims + ListContains + ListContainsNoCase + ListDeleteAt + ListFind + ListFindNoCase + ListFirst + ListGetAt + ListInsertAt + ListLast + ListLen + ListPrepend + ListRest + ListSetAt + ListToArray + + StructClear + StructCopy + StructCount + StructDelete + StructFind + StructInsert + StructIsEmpty + StructKeyExists + StructNew + StructUpdate + + GetLocale + LSCurrencyFormat + LSDateFormat + LSIsCurrency + LSIsDate + LSIsNumeric + LSNumberFormat + LSParseCurrency + LSParseDateTime + LSParseNumber + LSTimeFormat + SetLocale + + Abs + Atn + BitAnd + BitMaskClear + BitMaskRead + BitMaskSet + BitNot + BitOr + BitSHLN + BitSHRN + BitXor + Ceiling + Cos + DecrementValue + Exp + Fix + IncrementValue + InputBaseN + Int + Log + Log10 + Max + Min + Pi + Rand + Randomize + RandRange + Round + Sgn + Sin + Sqr + Tan + + Asc + Chr + CJustify + Compare + CompareNoCase + Find + FindNoCase + FindOneOf + GetToken + Insert + LCase + Left + Len + LJustify + LTrim + Mid + REFind + REFindNoCase + RemoveChars + RepeatString + Replace + ReplaceList + ReplaceNoCase + REReplace + REReplaceNoCase + Reverse + Right + RJustify + RTrim + SpanExcluding + SpanIncluding + Trim + UCase + Val + + DirectoryExists + ExpandPath + FileExists + GetDirectoryFromPath + GetFileFromPath + GetTempDirectory + GetTempFile + GetTemplatePath + + QueryAddRow + QueryNew + QuerySetCell + + Decrypt + DeleteClientVariable + Encrypt + GetBaseTagData + GetBaseTagList + GetClientVariablesList + GetTickCount + PreserveSingleQuotes + QuotedValueList + StripCR + URLEncodedFormat + ValueList + WriteOutput + + ParameterExists + + IS + EQ + NEQ + GT + GTE + LT + LTE + + LESS + GREATER + THAN + + AND + OR + NOT + XOR + + + \ No newline at end of file diff --git a/extra/xmode/modes/cplusplus.xml b/extra/xmode/modes/cplusplus.xml new file mode 100644 index 0000000000..b7810562f1 --- /dev/null +++ b/extra/xmode/modes/cplusplus.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + :: + + + + + + + + + + + catch + class + const_cast + delete + dynamic_cast + explicit + export + friend + mutable + namespace + new + operator + private + protected + public + reinterpret_cast + static_assert + static_cast + template + this + throw + try + typeid + typename + using + virtual + + + + + + + include\b + define\b + endif\b + elif\b + if\b + + + + + + ifdef + ifndef + else + error + line + pragma + undef + warning + + + + + + + # + + + + + + diff --git a/extra/xmode/modes/csharp.xml b/extra/xmode/modes/csharp.xml new file mode 100644 index 0000000000..f28d2389b7 --- /dev/null +++ b/extra/xmode/modes/csharp.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + /* + */ + + + + /// + + // + + + + @" + " + + + + " + " + + + + ' + ' + + + #if + #else + #elif + #endif + #define + #undef + #warning + #error + #line + #region + #endregion + + ~ + ! + : + ; + { + } + , + . + ! + [ + ] + + + - + > + < + = + * + / + \ + ^ + | + & + % + ? + + ( + ) + + + abstract + as + base + break + case + catch + checked + const + continue + decimal + default + delegate + do + else + explicit + extern + finally + fixed + for + foreach + goto + if + implicit + in + internal + is + lock + new + operator + out + override + params + private + protected + public + readonly + ref + return + sealed + sizeof + stackalloc + static + switch + throw + try + typeof + unchecked + unsafe + virtual + while + + using + namespace + + bool + byte + char + class + double + enum + event + float + int + interface + long + object + sbyte + short + string + struct + uint + ulong + ushort + void + + false + null + this + true + + + + + + + <-- + --> + + + + < + > + + + + diff --git a/extra/xmode/modes/css.xml b/extra/xmode/modes/css.xml new file mode 100644 index 0000000000..5f8708fc13 --- /dev/null +++ b/extra/xmode/modes/css.xml @@ -0,0 +1,679 @@ + + + + + + + + + + + + + + + + + + . + + # + + > + + + + : + , + + + + { + } + + + + + + + + + + + + , + + { + + + lang\s*\( + ) + + + + lang\s*\( + ) + + + + + + + after + before + first-child + link + visited + active + hover + focus + + + + + + + + + + + } + + : + + + + + + + + background + background-attachment + background-color + background-image + background-position + background-repeat + color + + + font + font-family + font-size + font-size-adjust + font-style + font-variant + font-weight + font-stretch + src + definition-src + unicode-range + panose-1 + stemv + stemh + units-per-em + slope + cap-height + x-height + ascent + descent + baseline + centerline + mathline + topline + + + letter-spacing + text-align + text-shadow + text-decoration + text-indent + text-transform + word-spacing + letter-spacing + white-space + + + border + bottom + border-collapse + border-spacing + border-bottom + border-bottom-style + border-bottom-width + border-bottom-color + border-left + border-left-style + border-left-width + border-left-color + border-right + border-right-style + border-right-width + border-right-color + border-top + border-top-style + border-top-width + border-top-color + border-color + border-style + border-width + clear + float + height + margin + margin-bottom + margin-left + margin-right + margin-top + padding + padding-bottom + padding-left + padding-right + padding-top + clear + + + display + position + top + right + bottom + left + float + z-index + direction + unicode-bidi + width + min-width + max-width + height + min-height + max-height + line-height + vertical-align + + + overflow + clip + visibility + + + size + marks + page-break-before + page-break-after + page-break-inside + page + orphans + widows + + + caption-side + table-layout + border-collapse + border-spacing + empty-cells + speak-headers + + + cursor + outline + outline-width + outline-style + outline-color + + + azimuth + volume + speak + pause + pause-before + pause-after + cue + cue-before + cue-after + play-during + elevation + speech-rate + voice-family + pitch + pitch-range + stress + richness + speak-punctuation + speak-numeral + speak-header-cell + + + + + + + + + " + " + + + + + (rgb|url)\s*\( + ) + + + + # + + !\s*important + + + + expression\s*\( + ) + + + + ; + } + + + + + left + right + below + level + above + higher + lower + show + hide + normal + wider + narrower + ultra-condensed + extra-condensed + condensed + semi-condensed + semi-expanded + expanded + extra-expanded + ultra-expanded + normal + italic + oblique + normal + xx-small + x-small + small + large + x-large + xx-large + thin + thick + smaller + larger + small-caps + inherit + bold + bolder + lighter + inside + outside + disc + circle + square + decimal + decimal-leading-zero + lower-roman + upper-roman + lower-greek + lower-alpha + lower-latin + upper-alpha + upper-latin + hebrew + armenian + georgian + cjk-ideographic + hiragana + katakana + hiragana-iroha + katakana-iroha + crop + cross + invert + hidden + always + avoid + x-low + low + high + x-high + absolute + fixed + relative + static + portrait + landscape + spell-out + digits + continuous + x-slow + slow + fast + x-fast + faster + slower + underline + overline + line-through + blink + capitalize + uppercase + lowercase + embed + bidi-override + baseline + sub + super + top + text-top + middle + bottom + text-bottom + visible + hidden + collapse + soft + loud + x-loud + pre + nowrap + dotted + dashed + solid + double + groove + ridge + inset + outset + once + both + silent + medium + mix + male + female + child + code + + + left-side + far-left + center-left + center + right + center-right + far-right + right-side + justify + behind + leftwards + rightwards + inherit + scroll + fixed + transparent + none + repeat + repeat-x + repeat-y + no-repeat + collapse + separate + auto + open-quote + close-quote + no-open-quote + no-close-quote + cue-before + cue-after + crosshair + default + pointer + move + e-resize + ne-resize + nw-resize + n-resize + se-resize + sw-resize + s-resize + w-resize + text + wait + help + ltr + rtl + inline + block + list-item + run-in + compact + marker + table + inline-table + inline-block + table-row-group + table-header-group + table-footer-group + table-row + table-column-group + table-column + table-cell + table-caption + + + aliceblue + antiquewhite + aqua + aquamarine + azure + beige + bisque + black + blanchedalmond + blue + blueviolet + brown + burlywood + cadetblue + chartreuse + chocolate + coral + cornflowerblue + cornsilk + crimson + cyan + darkblue + darkcyan + darkgoldenrod + darkgray + darkgreen + darkgrey + darkkhaki + darkmagenta + darkolivegreen + darkorange + darkorchid + darkred + darksalmon + darkseagreen + darkslateblue + darkslategray + darkslategrey + darkturquoise + darkviolet + darkpink + deepskyblue + dimgray + dimgrey + dodgerblue + firebrick + floralwhite + forestgreen + fushia + gainsboro + ghostwhite + gold + goldenrod + gray + green + greenyellow + grey + honeydew + hotpink + indianred + indigo + ivory + khaki + lavender + lavenderblush + lawngreen + lemonchiffon + lightblue + lightcoral + lightcyan + lightgoldenrodyellow + lightgray + lightgreen + lightgrey + lightpink + lightsalmon + lightseagreen + lightskyblue + lightslategray + lightslategrey + lightsteelblue + lightyellow + lime + limegreen + linen + magenta + maroon + mediumaquamarine + mediumblue + mediumorchid + mediumpurple + mediumseagreen + mediumslateblue + mediumspringgreen + mediumturquoise + mediumvioletred + midnightblue + mintcream + mistyrose + mocassin + navawhite + navy + oldlace + olive + olidrab + orange + orangered + orchid + palegoldenrod + palegreen + paleturquoise + paletvioletred + papayawhip + peachpuff + peru + pink + plum + powderblue + purple + red + rosybrown + royalblue + saddlebrown + salmon + sandybrown + seagreen + seashell + sienna + silver + skyblue + slateblue + slategray + slategrey + snow + springgreen + steelblue + tan + teal + thistle + tomato + turquoise + violet + wheat + white + whitesmoke + yellow + yellowgreen + + + rgb + url + + + + + + : + ; + + ( + ) + + { + } + , + . + ! + + + /* + */ + + + + + content + quotes + counter-reset + counter-increment + marker-offset + list-style + list-style-image + list-style-position + list-style-type + + @import + @media + @page + @font-face + + + + + + diff --git a/extra/xmode/modes/csv.xml b/extra/xmode/modes/csv.xml new file mode 100644 index 0000000000..2e6c7734f0 --- /dev/null +++ b/extra/xmode/modes/csv.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + " + ," + ;" + ,(?=[^,]*$) + ;(?=[^;]*$) + , + ; + + + + "" + "(?=,[^"][^,]*$) + "(?=;[^"][^;]*$) + "," + ";" + ",$ + ";$ + ", + "; + "$ + " + + + + ," + ;" + , + ; + + + + "" + "," + ";" + ", + "; + " + + + + + + " + ," + ,(?=[^,]*$) + , + + + + "" + "(?=,[^"][^,]*$) + "," + ",$ + ", + "$ + " + + + + ," + , + + + + "" + "," + ", + " + + + + + + + + + " + ;" + ;(?=[^;]*$) + ; + + + + "" + "(?=;[^"][^;]*$) + ";" + ";$ + "; + "$ + " + + + + ;" + ; + + + + "" + ";" + "; + " + + + + + + diff --git a/extra/xmode/modes/cvs-commit.xml b/extra/xmode/modes/cvs-commit.xml new file mode 100644 index 0000000000..d89eee4542 --- /dev/null +++ b/extra/xmode/modes/cvs-commit.xml @@ -0,0 +1,25 @@ + + + + + + + + + CVS: + + + CVS: + Committing in + Added Files: + Modified Files: + Removed Files: + + + diff --git a/extra/xmode/modes/d.xml b/extra/xmode/modes/d.xml new file mode 100644 index 0000000000..8b8e710618 --- /dev/null +++ b/extra/xmode/modes/d.xml @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + /**/ + + + + /** + */ + + + + + /*! + */ + + + + + /* + */ + + + + + /+ + +/ + + + // + + + + r" + " + + + + ` + ` + + + + " + " + + + + x" + " + + + + ' + ' + + + = + ! + >= + <= + + + - + / + + * + > + < + % + & + | + ^ + ~ + } + { + + : + + + ( + ) + + + @ + + + abstract + alias + align + asm + assert + auto + bit + body + break + byte + case + cast + catch + cent + char + class + cfloat + cdouble + creal + const + continue + dchar + debug + default + delegate + delete + deprecated + do + double + else + enum + export + extern + false + final + finally + float + for + foreach + function + goto + idouble + if + ifloat + import + in + inout + int + interface + invariant + ireal + is + long + module + new + null + out + override + package + pragma + private + protected + public + real + return + short + static + struct + super + switch + synchronized + template + this + throw + true + try + typedef + typeof + ubyte + ucent + uint + ulong + union + unittest + ushort + version + void + volatile + wchar + while + with + + + + + /+ + +/ + + + diff --git a/extra/xmode/modes/django.xml b/extra/xmode/modes/django.xml new file mode 100644 index 0000000000..e9162d5040 --- /dev/null +++ b/extra/xmode/modes/django.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + {% comment %} + {% endcomment %} + + + {% + %} + + + + {{ + }} + + + + + + + + + + + as + block + blocktrans + by + endblock + endblocktrans + comment + endcomment + cycle + date + debug + else + extends + filter + endfilter + firstof + for + endfor + if + endif + ifchanged + endifchanged + ifnotequal + endifnotequal + in + load + not + now + or + parsed + regroup + ssi + trans + with + widthratio + + + + + + " + " + + : + , + | + + openblock + closeblock + openvariable + closevariable + + add + addslashes + capfirst + center + cut + date + default + dictsort + dictsortreversed + divisibleby + escape + filesizeformat + first + fix_ampersands + floatformat + get_digit + join + length + length_is + linebreaks + linebreaksbr + linenumbers + ljust + lower + make_list + phone2numeric + pluralize + pprint + random + removetags + rjust + slice + slugify + stringformat + striptags + time + timesince + title + truncatewords + unordered_list + upper + urlencode + urlize + urlizetrunc + wordcount + wordwrap + yesno + + + + + diff --git a/extra/xmode/modes/doxygen.xml b/extra/xmode/modes/doxygen.xml new file mode 100644 index 0000000000..a1e448af5e --- /dev/null +++ b/extra/xmode/modes/doxygen.xml @@ -0,0 +1,313 @@ + + + + + + + + + + + # + + = + += + + + + " + " + + + ' + ' + + + ` + ` + + + YES + NO + + + + + + * + + + + <!-- + --> + + + + << + <= + < + + + + < + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extra/xmode/modes/dsssl.xml b/extra/xmode/modes/dsssl.xml new file mode 100644 index 0000000000..789c5c03fb --- /dev/null +++ b/extra/xmode/modes/dsssl.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + ; + + + + <!-- + --> + + + + '( + + ' + + + " + " + + + + + $ + $ + + + + % + % + + + # + + + + <!ENTITY + > + + + + + <![CDATA[ + ]]> + + + + + <! + > + + + + <= + + + </style-specification + > + + + + </style-sheet + > + + + + <style-specification + > + + + + <external-specification + > + + + + <style-sheet + > + + + + + & + ; + + + + and + cond + define + else + lambda + or + quote + if + let + let* + loop + not + list + append + children + normalize + + car + cdr + cons + node-list-first + node-list-rest + + eq? + null? + pair? + zero? + equal? + node-list-empty? + + external-procedure + root + make + process-children + current-node + node + empty-sosofo + default + attribute-string + select-elements + with-mode + literal + process-node-list + element + mode + gi + sosofo-append + sequence + + + + + + diff --git a/extra/xmode/modes/eiffel.xml b/extra/xmode/modes/eiffel.xml new file mode 100644 index 0000000000..41ed1bd66c --- /dev/null +++ b/extra/xmode/modes/eiffel.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + -- + + + + " + " + + + ' + ' + + + + + + + alias + all + and + as + check + class + creation + debug + deferred + do + else + elseif + end + ensure + expanded + export + external + feature + from + frozen + if + implies + indexing + infix + inherit + inspect + invariant + is + like + local + loop + not + obsolete + old + once + or + prefix + redefine + rename + require + rescue + retry + select + separate + then + undefine + until + variant + when + xor + + current + false + precursor + result + strip + true + unique + void + + + diff --git a/extra/xmode/modes/embperl.xml b/extra/xmode/modes/embperl.xml new file mode 100644 index 0000000000..4dcc35e188 --- /dev/null +++ b/extra/xmode/modes/embperl.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + [# + #] + + + + [+ + +] + + + + [- + -] + + + + [$ + $] + + + + [! + !] + + + + + diff --git a/extra/xmode/modes/erlang.xml b/extra/xmode/modes/erlang.xml new file mode 100644 index 0000000000..eaf39e1ae5 --- /dev/null +++ b/extra/xmode/modes/erlang.xml @@ -0,0 +1,266 @@ + + + + + + + + + + + % + + + " + " + + + + ' + ' + + + ( + ) + + : + + \$.\w* + + badarg + nocookie + false + true + + -> + <- + . + ; + = + / + | + # + + + * + + : + { + } + [ + ] + , + ? + ! + + + \bdiv\b + + \brem\b + + \bor\b + + \bxor\b + + \bbor\b + + \bbxor\b + + \bbsl\b + + \bbsr\b + + \band\b + + \bband\b + + \bnot\b + + \bbnot\b + + + + after + begin + case + catch + cond + end + fun + if + let + of + query + receive + when + + + abs + alive + apply + atom_to_list + binary_to_list + binary_to_term + concat_binary + date + disconnect_node + element + erase + exit + float + float_to_list + get + get_keys + group_leader + halt + hd + integer_to_list + is_alive + length + link + list_to_atom + list_to_binary + list_to_float + list_to_integer + list_to_pid + list_to_tuple + load_module + make_ref + monitor_node + node + nodes + now + open_port + pid_to_list + process_flag + process_info + process + put + register + registered + round + self + setelement + size + spawn + spawn_link + split_binary + statistics + term_to_binary + throw + time + tl + trunc + tuple_to_list + unlink + unregister + whereis + + + atom + binary + constant + function + integer + list + number + pid + ports + port_close + port_info + reference + record + + + check_process_code + delete_module + get_cookie + hash + math + module_loaded + preloaded + processes + purge_module + set_cookie + set_node + + + acos + asin + atan + atan2 + cos + cosh + exp + log + log10 + pi + pow + power + sin + sinh + sqrt + tan + tanh + + + -behaviour + -compile + -define + -else + -endif + -export + -file + -ifdef + -ifndef + -import + -include + -include_lib + -module + -record + -undef + + + + diff --git a/extra/xmode/modes/factor.xml b/extra/xmode/modes/factor.xml new file mode 100644 index 0000000000..9aa545eaec --- /dev/null +++ b/extra/xmode/modes/factor.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + #! + ! + + + \\\s+(\S+) + :\s+(\S+) + IN:\s+(\S+) + USE:\s+(\S+) + CHAR:\s+(\S+) + BIN:\s+(\S+) + OCT:\s+(\S+) + HEX:\s+(\S+) + + + ( + ) + + + SBUF" + " + + + " + " + + + USING: + ; + + + [ + ] + { + } + + + >r + r> + + ; + + t + f + + #! + ! + + + + + -- + + + + + + + + + + + diff --git a/extra/xmode/modes/fhtml.xml b/extra/xmode/modes/fhtml.xml new file mode 100644 index 0000000000..23abd4f70a --- /dev/null +++ b/extra/xmode/modes/fhtml.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + <% + %> + + + + + + diff --git a/extra/xmode/modes/forth.xml b/extra/xmode/modes/forth.xml new file mode 100644 index 0000000000..450676b8e6 --- /dev/null +++ b/extra/xmode/modes/forth.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + | + + $ + ' + + + :\s+(\S+) + + + ( + ) + + + + s" + " + + + + ." + " + + + + f" + " + + + + m" + " + + + + " + " + + + + ; + ;; + 0; + + swap + drop + dup + nip + over + rot + -rot + 2dup + 2drop + 2over + 2swap + >r + r> + + and + or + xor + >> + << + not + + + * + negate + - + / + mod + /mod + */ + 1+ + 1- + base + hex + decimal + binary + octal + + @ + ! + c@ + c! + +! + cell+ + cells + char+ + chars + + [ + ] + create + does> + variable + variable, + literal + last + 1, + 2, + 3, + , + here + allot + parse + find + compile + + if + =if + <if + >if + <>if + then + repeat + until + + forth + macro + + + + + -- + + diff --git a/extra/xmode/modes/fortran.xml b/extra/xmode/modes/fortran.xml new file mode 100644 index 0000000000..1bc26266cf --- /dev/null +++ b/extra/xmode/modes/fortran.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + +C +! +* +! +D + + + " + " + + + ' + ' + + + + <= + >= + > + < + & + /= + == + .lt. + .gt. + .eq. + .ne. + .le. + .ge. + .AND. + .OR. + + + +INCLUDE + +PROGRAM +MODULE +SUBROUTINE +FUNCTION +CONTAINS +USE +CALL +RETURN + +IMPLICIT +EXPLICIT +NONE +DATA +PARAMETER +ALLOCATE +ALLOCATABLE +ALLOCATED +DEALLOCATE +INTEGER +REAL +DOUBLE +PRECISION +COMPLEX +LOGICAL +CHARACTER +DIMENSION +KIND + +CASE +SELECT +DEFAULT +CONTINUE +CYCLE +DO +WHILE +ELSE +IF +ELSEIF +THEN +ELSEWHERE +END +ENDIF +ENDDO +FORALL +WHERE +EXIT +GOTO +PAUSE +STOP + +BACKSPACE +CLOSE +ENDFILE +INQUIRE +OPEN +PRINT +READ +REWIND +WRITE +FORMAT + +AIMAG +AINT +AMAX0 +AMIN0 +ANINT +CEILING +CMPLX +CONJG +DBLE +DCMPLX +DFLOAT +DIM +DPROD +FLOAT +FLOOR +IFIX +IMAG +INT +LOGICAL +MODULO +NINT +REAL +SIGN +SNGL +TRANSFER +ZEXT + +ABS +ACOS +AIMAG +AINT +ALOG +ALOG10 +AMAX0 +AMAX1 +AMIN0 +AMIN1 +AMOD +ANINT +ASIN +ATAN +ATAN2 +CABS +CCOS +CHAR +CLOG +CMPLX +CONJG +COS +COSH +CSIN +CSQRT +DABS +DACOS +DASIN +DATAN +DATAN2 +DBLE +DCOS +DCOSH +DDIM +DEXP +DIM +DINT +DLOG +DLOG10 +DMAX1 +DMIN1 +DMOD +DNINT +DPROD +DREAL +DSIGN +DSIN +DSINH +DSQRT +DTAN +DTANH +EXP +FLOAT +IABS +ICHAR +IDIM +IDINT +IDNINT +IFIX +INDEX +INT +ISIGN +LEN +LGE +LGT +LLE +LLT +LOG +LOG10 +MAX +MAX0 +MAX1 +MIN +MIN0 +MIN1 +MOD +NINT +REAL +SIGN +SIN +SINH +SNGL +SQRT +TAN +TANH + +.false. +.true. + + + + diff --git a/extra/xmode/modes/foxpro.xml b/extra/xmode/modes/foxpro.xml new file mode 100644 index 0000000000..b49b233f08 --- /dev/null +++ b/extra/xmode/modes/foxpro.xml @@ -0,0 +1,1858 @@ + + + + + + + + + + + + + + + + + + " + " + + + ' + ' + + + + #if + #else + #end + #define + #include + #Elif + #Else + #Endif + #If + #Itsexpression + #Readclauses + #Region + #Section + #Undef + #Wname + + + && + * + + + < + <= + >= + > + = + <> + . + + + + + + - + * + / + \ + + ^ + + + + + + + + + + + + : + + + Function + Procedure + EndFunc + EndProc + + + if + then + else + elseif + select + case + + + + for + to + step + next + + each + in + + do + while + until + loop + + wend + + + exit + end + endif + + + class + property + get + let + set + + + byval + byref + + + const + dim + redim + preserve + as + + + set + with + new + + + public + default + private + + + rem + + + call + execute + eval + + + on + error + goto + resume + option + explicit + erase + randomize + + + + is + + mod + + and + or + not + xor + imp + ? + + + false + true + empty + nothing + null + + + Activate + ActivateCell + AddColumn + AddItem + AddListItem + AddObject + AfterCloseTables + AfterDock + AfterRowColChange + BeforeDock + BeforeOpenTables + BeforeRowColChange + Box + Circle + Clear + Click + CloneObject + CloseEditor + CloseTables + Cls + DblClick + Deactivate + Delete + DeleteColumn + Deleted + Destroy + Dock + DoScroll + DoVerb + DownClick + Drag + DragDrop + DragOver + Draw + DropDown + Error + ErrorMessage + FormatChange + GotFocus + Hide + IndexToItemId + Init + InteractiveChange + ItemIdToIndex + KeyPress + Line + Load + LostFocus + Message + MouseDown + MouseMove + MouseUp + Move + Moved + OpenEditor + OpenTables + Paint + Point + Print + ProgrammaticChange + PSet + QueryUnload + RangeHigh + RangeLow + ReadActivate + ReadDeactivate + ReadExpression + ReadMethod + ReadShow + ReadValid + ReadWhen + Refresh + Release + RemoveItem + RemoveListItem + RemoveObject + Requery + Reset + Resize + RightClick + SaveAs + SaveAsClass + Scrolled + SetAll + SetFocus + Show + TextHeight + TextWidth + Timer + UIEnable + UnDock + Unload + UpClick + Valid + When + WriteExpression + WriteMethod + ZOrder + DataToClip + DoCmd + MiddleClick + MouseWheel + RequestData + SetVar + ShowWhatsThis + WhatsThisMode + AddProperty + NewObject + CommandTargetExec + CommandTargetQueryStas + ContainerRelease + EnterFocus + ExitFocus + HideDoc + Run + ShowDoc + ClearData + GetData + GetFormat + SetData + SetFormat + OLECompleteDrag + OLEGiveFeedback + OLESetData + OLEStartDrag + OLEDrag + OLEDragDrop + OLEDragOver + SetMain + AfterBuild + BeforeBuild + QueryAddFile + QueryModifyFile + QueryRemoveFile + QueryRunFile + Add + AddToSCC + CheckIn + CheckOut + GetLatestVersion + RemoveFromSCC + UndoCheckOut + Modify + + + Accelerate + ActiveColumn + ActiveControl + ActiveForm + ActiveObjectId + ActivePage + ActiveRow + Alias + Alignment + AllowResize + AllowTabs + AlwaysOnTop + ATGetColors + ATListColors + AutoActivate + AutoCenter + AutoCloseTables + AutoOpenTables + AutoRelease + AutoSize + AvailNum + BackColor + BackStyle + BaseClass + BorderColor + BorderStyle + BorderWidth + Bound + BoundColumn + BrowseAlignment + BrowseCellMarg + BrowseDestWidth + BufferMode + BufferModeOverride + ButtonCount + ButtonIndex + Buttons + CanAccelerate + Cancel + CanGetFocus + CanLoseFocus + Caption + ChildAlias + ChildOrder + Class + ClassLibrary + ClipControls + ClipRect + Closable + ColorScheme + ColorSource + ColumnCount + ColumnHeaders + ColumnLines + ColumnOrder + Columns + ColumnWidths + Comment + ControlBox + ControlCount + ControlIndex + Controls + ControlSource + CurrentControl + CurrentX + CurrentY + CursorSource + Curvature + Database + DataSession + DataSessionId + DataSourceObj + DataType + Default + DefButton + DefButtonOrig + DefHeight + DefineWindows + DefLeft + DefTop + DefWidth + DeleteMark + Desktop + Dirty + DisabledBackColor + DisabledByEOF + DisabledForeColor + DisabledItemBackColor + DisabledItemForeColor + DisabledPicture + DisplayValue + DispPageHeight + DispPageWidth + Docked + DockPosition + DoCreate + DocumentFile + DownPicture + DragIcon + DragMode + DragState + DrawMode + DrawStyle + DrawWidth + DynamicAlignment + DynamicBackColor + DynamicCurrentControl + DynamicFontBold + DynamicFontItalic + DynamicFontName + DynamicFontOutline + DynamicFontShadow + DynamicFontSize + DynamicFontStrikethru + DynamicFontUnderline + DynamicForeColor + EditFlags + Enabled + EnabledByReadLock + EnvLevel + ErasePage + FillColor + FillStyle + Filter + FirstElement + FontBold + FontItalic + FontName + FontOutline + FontShadow + FontSize + FontStrikethru + FontUnderline + ForceFocus + ForeColor + Format + FormCount + FormIndex + FormPageCount + FormPageIndex + Forms + FoxFont + GoFirst + GoLast + GridLineColor + GridLines + GridLineWidth + HalfHeightCaption + HasClip + HeaderGap + HeaderHeight + Height + HelpContextID + HideSelection + Highlight + HostName + HotKey + HPROJ + HWnd + Icon + IgnoreInsert + Increment + IncrementalSearch + InitialSelectedAlias + InputMask + InResize + Interval + ItemBackColor + ItemData + ItemForeColor + ItemIDData + JustReadLocked + KeyboardHighValue + KeyboardLowValue + KeyPreview + Left + LeftColumn + LineSlant + LinkMaster + List + ListCount + ListIndex + ListItem + ListItemId + LockDataSource + LockScreen + Margin + MaxButton + MaxHeight + MaxLeft + MaxLength + MaxTop + MaxWidth + MDIForm + MemoWindow + MinButton + MinHeight + MinWidth + MousePointer + Movable + MoverBars + MultiSelect + Name + NapTime + NewIndex + NewItemId + NoDataOnLoad + NoDefine + NotifyContainer + NumberOfElements + OleClass + OleClassId + OleControlContainer + OleIDispatchIncoming + OleIDispatchOutgoing + OleIDispInValue + OleIDispOutValue + OLETypeAllowed + OneToMany + OnResize + OpenWindow + PageCount + PageHeight + PageOrder + Pages + PageWidth + Panel + PanelLink + Parent + ParentAlias + ParentClass + Partition + PasswordChar + Picture + ReadColors + ReadCycle + ReadFiller + ReadLock + ReadMouse + ReadOnly + ReadSave + ReadSize + ReadTimeout + RecordMark + RecordSource + RecordSourceType + Rect + RelationalExpr + RelativeColumn + RelativeRow + ReleaseErase + ReleaseType + ReleaseWindows + Resizable + RowHeight + RowSource + RowSourceType + ScaleMode + ScrollBars + Selected + SelectedBackColor + SelectedForeColor + SelectedID + SelectedItemBackColor + SelectedItemForeColor + SelectOnEntry + SelfEdit + SelLength + SelStart + SelText + ShowTips + Sizable + Skip + SkipForm + Sorted + SourceType + Sparse + SpecialEffect + SpinnerHighValue + SpinnerLowValue + StatusBarText + Stretch + Style + SystemRefCount + Tabhit + TabIndex + Tabs + TabStop + TabStretch + Tag + TerminateRead + ToolTipText + Top + TopIndex + TopItemId + UnlockDataSource + Value + ValueDirty + View + Visible + WasActive + WasOpen + Width + WindowList + WindowNTIList + WindowState + WindowType + WordWrap + ZOrderSet + AllowAddNew + AllowHeaderSizing + AllowRowSizing + Application + AutoVerbMenu + AutoYield + BoundTo + DateFormat + DateMark + DefaultFilePath + FullName + Hours + IMEMode + IntegralHeight + ItemTips + MouseIcon + NullDisplay + OLERequestPendingTimou + OLEServerBusyRaiseErro + OLEServerBusyTimout + OpenViews + RightToLeft + SDIForm + ShowWindow + SplitBar + StrictDateEntry + TabStyle + WhatsThisButton + WhatsThisHelp + WhatsThisHelpID + DisplayCount + ContinuousScroll + HscrollSmallChange + TitleBar + VscrollSmallChange + ViewPortTop + ViewPortLeft + ViewPortHeight + ViewPortWidth + SetViewPort + Scrolled + StartMode + ServerName + OLEDragMode + OLEDragPicture + OLEDropEffects + OLEDropHasData + OLEDropMode + ActiveProject + Projects + AutoIncrement + BuildDateTime + Debug + Encrypted + Files + HomeDir + MainClass + MainFile + ProjectHookClass + ProjectHookLibrary + SCCProvider + ServerHelpFile + ServerProject + TypeLibCLSID + TypeLibDesc + TypeLibName + VersionComments + VersionCompany + VersionCopyright + VersionDescription + VersionNumber + VersionProduct + VersionTrademarks + Item + CodePage + Description + FileClass + FileClassLibrary + LastModified + SCCStatus + CLSID + Instancing + ProgID + ServerClass + ServerClassLibrary + ThreadID + ProcessID + AddLineFeeds + + + MULTILOCKS + FULLPATH + UNIQUE + CLASSLIB + LIBRARY + structure + last + production + path + date + datetime + rest + fields + array + free + structure + ASCENDING + window + nowait + between + dbf + noconsole + dif + xls + csv + delimited + right + decimal + additive + between + noupdate + + Abs + Accept + Access + Aclass + Acopy + Acos + Adatabases + Adbobjects + Add + Addrelationtoenv + Addtabletoenv + Adel + Adir + Aelement + Aerror + Afields + Afont + Again + Ains + Ainstance + Alen + All + Alltrim + Alter + Amembers + Ansitooem + Append + Aprinters + Ascan + Aselobj + Asin + Asort + Assist + Asubscript + Asynchronous + Atan + Atc + Atcline + Atline + Atn2 + Aused + Autoform + Autoreport + Average + Bar + BatchMode + BatchUpdateCount + Begin + Bell + BellSound + Bitand + Bitclear + Bitlshift + Bitnot + Bitor + Bitrshift + Bitset + Bittest + Bitxor + Bof + Bottom + Browse + BrowseRefresh + Buffering + Build + BuilderLock + By + Calculate + Call + Capslock + Case + Cd + Cdow + Ceiling + Central + Century + Change + Char + Chdir + Checkbox + Chr + Chrsaw + Chrtran + Close + Cmonth + Cntbar + Cntpad + Col + Column + ComboBox + CommandButton + CommandGroup + Compile + Completed + Compobj + Compute + Concat + ConnectBusy + ConnectHandle + ConnectName + ConnectString + ConnectTimeOut + Container + Continue + Control + Copy + Cos + Cot + Count + Cpconvert + Cpcurrent + CPDialog + Cpdbf + Cpnotrans + Create + Createobject + CrsBuffering + CrsFetchMemo + CrsFetchSize + CrsMaxRows + CrsMethodUsed + CrsNumBatch + CrsShareConnection + CrsUseMemoSize + CrsWhereClause + Ctod + Ctot + Curdate + Curdir + CurrLeft + CurrSymbol + Cursor + Curtime + Curval + Custom + DataEnvironment + Databases + Datetime + Day + Dayname + Dayofmonth + Dayofweek + Dayofyear + Dbalias + Dbused + DB_BufLockRow + DB_BufLockTable + DB_BufOff + DB_BufOptRow + DB_BufOptTable + DB_Complette + DB_DeleteInsert + DB_KeyAndModified + DB_KeyAndTimestamp + DB_KeyAndUpdatable + DB_LocalSQL + DB_NoPrompt + DB_Prompt + DB_RemoteSQL + DB_TransAuto + DB_TransManual + DB_TransNone + DB_Update + Ddeaborttrans + Ddeadvise + Ddeenabled + Ddeexecute + Ddeinitiate + Ddelasterror + Ddepoke + Dderequest + Ddesetoption + Ddesetservice + Ddesettopic + Ddeterminate + Declare + DefaultValue + Define + Degrees + DeleteTrigger + Desc + Description + Difference + Dimension + Dir + Directory + Diskspace + Display + DispLogin + DispWarnings + Distinct + Dmy + Do + Doc + Dow + Drop + Dtoc + Dtor + Dtos + Dtot + Edit + EditBox + Eject + Elif + Else + Empty + End + Endcase + Enddefine + Enddo + Endfor + Endif + Endprintjob + Endscan + Endtext + Endwith + Eof + Erase + Evaluate + Exact + Exclusive + Exit + Exp + Export + External + Fchsize + Fclose + Fcount + Fcreate + Feof + Ferror + FetchMemo + FetchSize + Fflush + Fgets + File + Filer + Find + Fklabel + Fkmax + Fldlist + Flock + Floor + Flush + FontClass + Fontmetric + Fopen + For + Form + FormsClass + Formset + FormSetClass + FormSetLib + FormsLib + Found + Foxcode + Foxdoc + Foxgen + Foxgraph + FoxPro + Foxview + Fputs + Fread + From + Fseek + Fsize + Fv + Fwrite + Gather + General + Getbar + Getcolor + Getcp + Getdir + Getenv + Getexpr + Getfile + Getfldstate + Getfont + Getnextmodified + Getobject + Getpad + Getpict + Getprinter + Go + Gomonth + Goto + Graph + Grid + GridHorz + GridShow + GridShowPos + GridSnap + GridVert + Header + Help + HelpOn + HelpTo + Hour + IdleTimeOut + Idxcollate + If + Ifdef + Ifndef + Iif + Image + Import + Include + Indbc + Index + Inkey + Inlist + Input + Insert + InsertTrigger + Insmode + Into + Isalpha + Iscolor + Isdigit + Isexclusive + Islower + Isnull + Isreadonly + Isupper + Join + Keyboard + KeyField + KeyFieldList + Keymatch + Label + Lastkey + LastProject + Lcase + Len + Length + Lineno + ListBox + Local + Locate + Locfile + Log + Log10 + Logout + Lookup + Loop + Lower + Lparameters + Ltrim + Lupdate + Mail + MaxRecords + Mcol + Md + Mdown + Mdx + Mdy + Memlines + Memo + Menu + Messagebox + Minute + Mkdir + Mline + Modify + Month + Monthname + Mouse + Mrkbar + Mrkpad + Mrow + Mton + Mwindow + Native + Ndx + Network + Next + Nodefault + Normalize + Note + Now + Ntom + NullString + Numlock + Nvl + Objnum + Objref + Objtoclient + Objvar + Occurs + ODBChdbc + ODBChstmt + Oemtoansi + Off + Oldval + OleBaseControl + OleBoundControl + OleClassIDispOut + OleControl + On + Open + OptionButton + OptionGroup + Oracle + Order + Os + Otherwise + Pack + PacketSize + Padc + Padl + Padr + Page + PageFrame + Parameters + Payment + Pcol + Percent + Pi + Pivot + Play + Pop + Power + PrimaryKey + Printjob + Printstatus + Private + Prmbar + Prmpad + Program + ProjectClick + Proper + Protected + Prow + Prtinfo + Public + Push + Putfile + Pv + Qpr + Quater + QueryTimeOut + Quit + Radians + Rand + Rat + Ratline + Rd + Rdlevel + Read + Readkey + Recall + Reccount + RecentlyUsedFiles + Recno + Recsize + RectClass + Regional + Reindex + RelatedChild + RelatedTable + RelatedTag + Relation + Remove + Rename + Repeat + Replace + Replicate + Report + Reprocess + ResHeight + ResourceOn + ResourceTo + Restore + Resume + ResWidth + Retry + Return + Rgbscheme + Rlock + Rmdir + Rollback + Round + Rtod + Rtrim + RuleExpression + RuleText + Run + Runscript + Rview + Save + Safety + ScaleUnits + Scan + Scatter + Scols + Scroll + Sec + Second + Seek + Select + SendUpdates + Separator + Set + SetDefault + Setfldstate + Setup + Shape + Shared + ShareConnection + ShowOLEControls + ShowOLEInsertable + ShowVCXs + Sign + Sin + Size + Skpbar + Skppad + Sort + Soundex + SourceName + Spinner + SQLAsynchronous + SQLBatchMode + Sqlcommit + SQLConnectTimeOut + SQLDispLogin + SQLDispWarnings + SQLIdleTimeOut + Sqll + SQLQueryTimeOut + Sqlrollback + Sqlstringconnect + SQLTransactions + SQLWaitTime + Sqrt + Srows + StatusBar + Status + Store + Str + Strtran + Stuff + Substr + Substring + Sum + Suspend + Sys + Sysmetric + Table + TableRefresh + Tablerevert + Tableupdate + TabOrdering + Talk + Tan + Target + Text + TextBox + Timestamp + Timestampdiff + To + Toolbar + Total + Transaction + Transform + Trim + Truncate + Ttoc + Ttod + Txnlevel + Txtwidth + Type + Ucase + Undefine + Unlock + Unpack + Updatable + UpdatableFieldList + Update + Updated + UpdateName + UpdateNameList + UpdateTrigger + UpdateType + Upper + Upsizing + Use + Used + UseMemoSize + Val + Validate + Values + Varread + Version + Wait + WaitTime + Wborder + Wchild + Wcols + Week + Wexist + Wfont + Where + WhereType + While + Windcmd + Windhelp + Windmemo + Windmenu + Windmodify + Windquery + Windscreen + Windsnip + Windstproc + With + WizardPrompt + Wlast + Wlcol + Wlrow + Wmaximum + Wminimum + Wontop + Woutput + Wparent + Wread + Wrows + Wtitle + Wvisible + Year + Zap + [ + ] + ^ + _Alignment + _Asciicols + _Asciirows + _Assist + _Beautify + _Box + _Browser + _Builder + _Calcmem + _Calcvalue + _Cliptext + _Converter + _Curobj + _Dblclick + _Diarydate + _Dos + _Foxdoc + _Foxgraph + _Gengraph + _Genmenu + _Genpd + _Genscrn + _Genxtab + _Indent + _Lmargin + _Mac + _Mbrowse + _Mbr_appnd + _Mbr_cpart + _Mbr_delet + _Mbr_font + _Mbr_goto + _Mbr_grid + _Mbr_link + _Mbr_mode + _Mbr_mvfld + _Mbr_mvprt + _Mbr_seek + _Mbr_sp100 + _Mbr_sp200 + _Mbr_szfld + _Mdata + _Mda_appnd + _Mda_avg + _Mda_brow + _Mda_calc + _Mda_copy + _Mda_count + _Mda_label + _Mda_pack + _Mda_reprt + _Mda_rindx + _Mda_setup + _Mda_sort + _Mda_sp100 + _Mda_sp200 + _Mda_sp300 + _Mda_sum + _Mda_total + _Mdiary + _Medit + _Med_clear + _Med_copy + _Med_cut + _Med_cvtst + _Med_find + _Med_finda + _Med_goto + _Med_insob + _Med_link + _Med_obj + _Med_paste + _Med_pref + _Med_pstlk + _Med_redo + _Med_repl + _Med_repla + _Med_slcta + _Med_sp100 + _Med_sp200 + _Med_sp300 + _Med_sp400 + _Med_sp500 + _Med_undo + _Mfile + _Mfiler + _Mfirst + _Mfi_clall + _Mfi_close + _Mfi_export + _Mfi_import + _Mfi_new + _Mfi_open + _Mfi_pgset + _Mfi_prevu + _Mfi_print + _Mfi_quit + _Mfi_revrt + _Mfi_savas + _Mfi_save + _Mfi_send + _Mfi_setup + _Mfi_sp100 + _Mfi_sp200 + _Mfi_sp300 + _Mfi_sp400 + _Mlabel + _Mlast + _Mline + _Mmacro + _Mmbldr + _Mprog + _Mproj + _Mpr_beaut + _Mpr_cancl + _Mpr_compl + _Mpr_do + _Mpr_docum + _Mpr_formwz + _Mpr_gener + _Mpr_graph + _Mpr_resum + _Mpr_sp100 + _Mpr_sp200 + _Mpr_sp300 + _Mpr_suspend + _Mrc_appnd + _Mrc_chnge + _Mrc_cont + _Mrc_delet + _Mrc_goto + _Mrc_locat + _Mrc_recal + _Mrc_repl + _Mrc_seek + _Mrc_sp100 + _Mrc_sp200 + _Mrecord + _Mreport + _Mrqbe + _Mscreen + _Msm_data + _Msm_edit + _Msm_file + _Msm_format + _Msm_prog + _Msm_recrd + _Msm_systm + _Msm_text + _Msm_tools + _Msm_view + _Msm_windo + _Mst_about + _Mst_ascii + _Mst_calcu + _Mst_captr + _Mst_dbase + _Mst_diary + _Mst_filer + _Mst_help + _Mst_hphow + _Mst_hpsch + _Mst_macro + _Mst_office + _Mst_puzzl + _Mst_sp100 + _Mst_sp200 + _Mst_sp300 + _Mst_specl + _Msysmenu + _Msystem + _Mtable + _Mtb_appnd + _Mtb_cpart + _Mtb_delet + _Mtb_delrc + _Mtb_goto + _Mtb_link + _Mtb_mvfld + _Mtb_mvprt + _Mtb_props + _Mtb_recal + _Mtb_sp100 + _Mtb_sp200 + _Mtb_sp300 + _Mtb_sp400 + _Mtb_szfld + _Mwindow + _Mwizards + _Mwi_arran + _Mwi_clear + _Mwi_cmd + _Mwi_color + _Mwi_debug + _Mwi_hide + _Mwi_hidea + _Mwi_min + _Mwi_move + _Mwi_rotat + _Mwi_showa + _Mwi_size + _Mwi_sp100 + _Mwi_sp200 + _Mwi_toolb + _Mwi_trace + _Mwi_view + _Mwi_zoom + _Mwz_all + _Mwz_form + _Mwz_foxdoc + _Mwz_import + _Mwz_label + _Mwz_mail + _Mwz_pivot + _Mwz_query + _Mwz_reprt + _Mwz_setup + _Mwz_table + _Mwz_upsizing + _Netware + _Oracle + _Padvance + _Pageno + _Pbpage + _Pcolno + _Pcopies + _Pdparms + _Pdriver + _Pdsetup + _Pecode + _Peject + _Pepage + _Pform + _Plength + _Plineno + _Ploffset + _Ppitch + _Pquality + _Pretext + _Pscode + _Pspacing + _Pwait + _Rmargin + _Screen + _Shell + _Spellchk + _Sqlserver + _Startup + _Tabs + _Tally + _Text + _Throttle + _Transport + _Triggerlevel + _Unix + _Windows + _Wizard + _Wrap + French + German + Italian + Japan + Usa + Lparameter + This + Thisform + Thisformset + F + T + N + Y + OlePublic + Hidden + Each + DoEvents + Dll + Outer + At_c + Atcc + Ratc + Leftc + Rightc + Substrc + Stuffc + Lenc + Chrtranc + IsLeadByte + IMEStatus + Strconv + BinToC + CToBin + IsFLocked + IsRLocked + LoadPicture + SavePicture + Assert + DoDefault + _WebMenu + _scctext + _WebVFPHomePage + _WebVfpOnlineSupport + _WebDevOnly + _WebMsftHomePage + _Coverage + _vfp + Bintoc + Resources + Ctobin + Createoffline + Debugout + Doevents + Dropoffline + Each + Isflocked + Isrlocked + Loadpicture + Revertoffline + Savepicture + Asserts + Coverage + Eventtracking + DBGetProp + DBSetProp + CursorGetProp + CursorSetProp + Addbs + Agetclass + Agetfileversion + Alines + Amouseobj + Anetresources + Avcxclasses + Comclassinfo + Createobjectex + Defaultext + Drivetype + Filetostr + Forceext + Forcepath + Gethost + Indexseek + Ishosted + Justdrive + Justext + Justfname + Justpath + Juststem + Newobject + Olereturnerror + Strtofile + Vartype + _Coverage + _Gallery + _Genhtml + _Getexpr + _Include + _Runactivedoc + ProjectHook + ActiveDoc + HyperLink + Session + Mtdll + + + ADOCKTIP + ADirtip + ADockState + AEvents + AFONTTIP + ALanguage + AProcInfo + AStackInfo + ATagInfo + Adlls + Alentip + Amemberstip + Amemberstip2 + Ascantip + Aselobjtip + Asessions + Asorttip + Asorttip2 + BINDEVENTTIP + BindEvent + COMARRAYTIP + COMPROPTIP + Candidate + Cdx + ComArray + ComReturnError + Comprop + CreateBinary + CursorToXML + DIRTIP + Descending + DisplayPath + EditSource + EventHandler + Evl + ExecScript + FCREATETIP + FIELDTIP + FILETIP + FOPENTIP + FSEEKTIP + Fdate + Ftime + GetCursorAdapter + GetInterface + GetPem + GetWordCount + GetWordNum + InputBox + IsBlank + IsMouse + Like + Likec + Memory + Msgboxtip + Pcount + PemStatus + Popup + Quarter + RaiseEvent + RemoveProperty + SQLCancel + SQLColumns + SQLDisconnect + SQLExec + SQLGetProp + SQLMoreResults + SQLPrepare + SQLSetProp + SQLTables + STRTOFILETIP + Seconds + StrExTip + StrExtract + Strtrantip + Tagcount + Tagno + Textmerge + Try + UnBindEvents + WDockable + XMLTIP + XMLTIP2 + XMLTIP3 + XMLTIP4 + XMLTIP5 + XMLTIP6 + XMLToCursor + XMLUpdategram + Blank + Catch + Dotip + EndTry + Finally + Implements + Opendatatip + Repltip + Throw + Usetip + + + + diff --git a/extra/xmode/modes/freemarker.xml b/extra/xmode/modes/freemarker.xml new file mode 100644 index 0000000000..065e5f9ab9 --- /dev/null +++ b/extra/xmode/modes/freemarker.xml @@ -0,0 +1,205 @@ + + + + + + + + + + + + <script + </script> + + + <Script + </Script> + + + <SCRIPT + </SCRIPT> + + + + + <style + </style> + + + <Style + </Style> + + + <STYLE + </STYLE> + + + + + <!-- + --> + + + + + <! + > + + + + + + ${ + } + + + + #{ + } + + + + <#ftl\b + > + + + + <#?(if|elseif|switch|foreach|list|case|assign|local|global|setting|include|import|stop|escape|macro|function|transform|call|visit|recurse)(\s|/|$) + > + + + </#?(assign|local|global|if|switch|foreach|list|escape|macro|function|transform|compress|noescape)> + + + <#?(else|compress|noescape|default|break|flush|nested|t|rt|lt|return|recurse)\b + > + + + + </@(([_@\p{Alpha}][_@\p{Alnum}]*)(\.[_@\p{Alpha}][_@\p{Alnum}]*)*?)? + > + + + + <@([_@\p{Alpha}][_@\p{Alnum}]*)(\.[_@\p{Alpha}][_@\p{Alnum}]*?)* + > + + + + <#-- + --> + + + <stop> + + <comment> + </comment> + + + <# + > + + + </# + > + + + + + < + > + + + + + + <#-- + --> + + + <!-- + --> + + + + " + " + + + () + + = + ! + | + & + < + > + * + / + - + + + % + . + : + . + . + [ + ] + { + } + ; + + ? + + true + false + as + in + using + gt + gte + lt + lte + + + + + + " + " + + + + ' + ' + + + = + + + + + + + ${ + } + + + #{ + } + + + + + + diff --git a/extra/xmode/modes/gettext.xml b/extra/xmode/modes/gettext.xml new file mode 100644 index 0000000000..b84e7c4b64 --- /dev/null +++ b/extra/xmode/modes/gettext.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + #: + # + #. + #~ + + #, + % + $ + @ + + + " + " + + + + + msgid + msgid_plural + msgstr + fuzzy + + c-format + no-c-format + + + + + + + \" + \" + + + % + $ + @ + + + diff --git a/extra/xmode/modes/gnuplot.xml b/extra/xmode/modes/gnuplot.xml new file mode 100644 index 0000000000..f66a16955c --- /dev/null +++ b/extra/xmode/modes/gnuplot.xml @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + # + + + + " + " + + + ' + ' + + + + [ + ] + + + + { + } + + + + - + + + ~ + ! + $ + * + % + = + > + < + & + >= + <= + | + ^ + ? + : + + + ( + ) + + + + + + + cd + call + clear + exit + fit + help + history + if + load + pause + plot + using + with + index + every + smooth + thru + print + pwd + quit + replot + reread + reset + save + set + show + unset + shell + splot + system + test + unset + update + + + abs + acos + acosh + arg + asin + asinh + atan + atan2 + atanh + besj0 + besj1 + besy0 + besy1 + ceil + cos + cosh + erf + erfc + exp + floor + gamma + ibeta + inverf + igamma + imag + invnorm + int + lambertw + lgamma + log + log10 + norm + rand + real + sgn + sin + sinh + sqrt + tan + tanh + column + defined + tm_hour + tm_mday + tm_min + tm_mon + tm_sec + tm_wday + tm_yday + tm_year + valid + + + angles + arrow + autoscale + bars + bmargin + border + boxwidth + clabel + clip + cntrparam + colorbox + contour + datafile + decimalsign + dgrid3d + dummy + encoding + fit + fontpath + format + functions + function + grid + hidden3d + historysize + isosamples + key + label + lmargin + loadpath + locale + logscale + mapping + margin + mouse + multiplot + mx2tics + mxtics + my2tics + mytics + mztics + offsets + origin + output + parametric + plot + pm3d + palette + pointsize + polar + print + rmargin + rrange + samples + size + style + surface + terminal + tics + ticslevel + ticscale + timestamp + timefmt + title + tmargin + trange + urange + variables + version + view + vrange + x2data + x2dtics + x2label + x2mtics + x2range + x2tics + x2zeroaxis + xdata + xdtics + xlabel + xmtics + xrange + xtics + xzeroaxis + y2data + y2dtics + y2label + y2mtics + y2range + y2tics + y2zeroaxis + ydata + ydtics + ylabel + ymtics + yrange + ytics + yzeroaxis + zdata + zdtics + cbdata + cbdtics + zero + zeroaxis + zlabel + zmtics + zrange + ztics + cblabel + cbmtics + cbrange + cbtics + + + + + diff --git a/extra/xmode/modes/groovy.xml b/extra/xmode/modes/groovy.xml new file mode 100644 index 0000000000..5e0d8ea1a8 --- /dev/null +++ b/extra/xmode/modes/groovy.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + /**/ + + + + /** + */ + + + + + /* + */ + + + + " + " + + + ' + ' + + + + + + $1 + + + =~ + = + | + ! + <=> + >= + <= + + + -> + - + ? + & + + + .* + + + // + + + ( + ) + + + abstract + break + case + catch + continue + default + do + else + extends + final + finally + for + if + implements + instanceof + native + new + private + protected + public + return + static + switch + synchronized + throw + throws + transient + try + volatile + while + + strictfp + + package + import + + + as + assert + def + mixin + property + test + using + in + + + boolean + byte + char + class + double + float + int + interface + long + short + void + + + abs + any + append + asList + asWritable + call + collect + compareTo + count + div + dump + each + eachByte + eachFile + eachLine + every + find + findAll + flatten + getAt + getErr + getIn + getOut + getText + grep + immutable + inject + inspect + intersect + invokeMethods + isCase + join + leftShift + minus + multiply + newInputStream + newOutputStream + newPrintWriter + newReader + newWriter + next + plus + pop + power + previous + print + println + push + putAt + read + readBytes + readLines + reverse + reverseEach + round + size + sort + splitEachLine + step + subMap + times + toInteger + toList + tokenize + upto + waitForOrKill + withPrintWriter + withReader + withStream + withWriter + withWriterAppend + write + writeLine + + false + null + super + this + true + + + it + + goto + const + + + + + + + ${ + } + + + $ + + + + + { + + + * + + + + <!-- + --> + + + + << + <= + < + + + + < + > + + + @ + + + diff --git a/extra/xmode/modes/haskell.xml b/extra/xmode/modes/haskell.xml new file mode 100644 index 0000000000..b38b42db87 --- /dev/null +++ b/extra/xmode/modes/haskell.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + {-# + #-} + + + + {- + -} + + + -- + + + " + " + + + + ' ' + '!' + '"' + '$' + '%' + '/' + '(' + ')' + '[' + ']' + '+' + '-' + '*' + '=' + '/' + '^' + '.' + ',' + ':' + ';' + '<' + '>' + '|' + '@' + + + ' + ' + + + .. + && + :: + + < + > + + + - + * + / + % + ^ + = + | + @ + ~ + ! + $ + + + + + + + case + class + data + default + deriving + do + else + if + import + in + infix + infixl + infixr + instance + let + module + newtype + of + then + type + where + _ + as + qualified + hiding + + Addr + Bool + Bounded + Char + Double + Either + Enum + Eq + FilePath + Float + Floating + Fractional + Functor + IO + IOError + IOResult + Int + Integer + Integral + Ix + Maybe + Monad + Num + Ord + Ordering + Ratio + Rational + Read + ReadS + Real + RealFloat + RealFrac + Show + ShowS + String + + : + EQ + False + GT + Just + LT + Left + Nothing + Right + True + + quot + rem + div + mod + elem + notElem + seq + + + + diff --git a/extra/xmode/modes/hex.xml b/extra/xmode/modes/hex.xml new file mode 100644 index 0000000000..73a8db921b --- /dev/null +++ b/extra/xmode/modes/hex.xml @@ -0,0 +1,20 @@ + + + + + + + + + + : + + ; + + diff --git a/extra/xmode/modes/hlsl.xml b/extra/xmode/modes/hlsl.xml new file mode 100644 index 0000000000..0f361c5a29 --- /dev/null +++ b/extra/xmode/modes/hlsl.xml @@ -0,0 +1,479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + + ## + #@ + # + + + + asm + } + + + ASM + } + + + Asm + } + + + asm_fragment + } + + + + // + + + ++ + -- + && + || + == + :: + << + <<= + >> + >>= + ... + <= + >= + != + *= + /= + += + -= + %= + &= + |= + ^= + -> + + + } + { + + + - + * + / + % + = + < + > + ! + + + ( + + + .(([xyzw]{1,4})|([rgba]{1,4})|((_m[0123][0123])+)|((_[1234][1234])+))(?!\p{Alnum}) + + + bool[1234](x[1234])?\b + int[1234](x[1234])?\b + half[1234](x[1234])?\b + float[1234](x[1234])?\b + double[1234](x[1234])?\b + + + :\s*(register\s*\(\w+(\s*\,\s*\w+\s*)?\)|\w+) + + + + discard + do + else + for + if + return + typedef + while + + + compile + compile_fragment + register + sampler_state + stateblock_state + technique + Technique + TECHNIQUE + pass + Pass + PASS + decl + Decl + DECL + + + void + bool + int + half + float + double + vector + matrix + + + string + texture + texture1D + texture2D + texture3D + textureCUBE + sampler + sampler1D + sampler2D + sampler3D + samplerCUBE + pixelfragment + vertexfragment + pixelshader + vertexshader + stateblock + struct + + + static + uniform + extern + volatile + inline + shared + const + row_major + column_major + in + inout + out + + + false + true + NULL + + + abs + acos + all + any + asin + atan + atan2 + ceil + clamp + clip + cos + cosh + cross + D3DCOLORtoUBYTE4 + ddx + ddy + degrees + determinant + distance + dot + exp + exp2 + faceforward + floor + fmod + frac + frexp + fwidth + isfinite + isinf + isnan + ldexp + length + lerp + lit + log + log10 + log2 + max + min + modf + mul + noise + normalize + pow + radians + reflect + refract + round + rsqrt + saturate + sign + sin + sincos + sinh + smoothstep + sqrt + step + tan + tanh + transpose + + + tex1D + tex1Dgrad + tex1Dbias + tex1Dgrad + tex1Dlod + tex1Dproj + tex2D + tex2D + tex2Dbias + tex2Dgrad + tex2Dlod + tex2Dproj + tex3D + tex3D + tex3Dbias + tex3Dgrad + tex3Dlod + tex3Dproj + texCUBE + texCUBE + texCUBEbias + texCUBEgrad + texCUBElod + texCUBEproj + + + auto + break + case + catch + char + class + const_cast + continue + default + delete + dynamic_cast + enum + explicit + friend + goto + long + mutable + namespace + new + operator + private + protected + public + reinterpret_cast + short + signed + sizeof + static_cast + switch + template + this + throw + try + typename + union + unsigned + using + virtual + + + + + + + + + + /* + */ + + + + include + + + + define + elif + else + endif + error + if + ifdef + ifndef + line + pragma + undef + + + pack_matrix + warning + def + defined + D3DX + D3DX_VERSION + DIRECT3D + DIRECT3D_VERSION + __FILE__ + __LINE__ + + + + + + + { + + + + /* + */ + + // + ; + + + + + - + , + + + .(([xyzw]{1,4})) + + + abs(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + add(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + bem(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + break_comp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + breakp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + callnz(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + cmp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + cnd(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + crs(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + dp2add(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + dp3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + dp4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + dst(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + dsx(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + dsy(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + else(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + endif(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + endloop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + endrep(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + exp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + frc(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + if(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + label(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + lit(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + logp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + loop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + lrp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + m3x2(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + m3x3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + m3x4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + m4x3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + m4x4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + mad(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + mov(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + max(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + min(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + mova(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + mul(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + nop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + nrm(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + phase(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + pow(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + rcp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + rep(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + ret(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + rsq(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + setp_comp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + sge(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + sgn(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + sincos(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + slt(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + sub(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + + neg(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b + + + tex\w* + + + ps\w* + vs\w* + def\w* + dcl\w* + + + + + + diff --git a/extra/xmode/modes/htaccess.xml b/extra/xmode/modes/htaccess.xml new file mode 100644 index 0000000000..33bf6c41ad --- /dev/null +++ b/extra/xmode/modes/htaccess.xml @@ -0,0 +1,563 @@ + + + + + + + + + + + + # + + + " + " + + + + ]*>]]> + ]]> + + + + + AcceptPathInfo + Action + AddAlt + AddAltByEncoding + AddAltByType + AddCharset + AddDefaultCharset + AddDescription + AddEncoding + AddHandler + AddIcon + AddIconByEncoding + AddIconByType + AddInputFilter + AddLanguage + AddOutputFilter + AddOutputFilterByType + AddType + Allow + Anonymous + Anonymous_Authoritative + Anonymous_LogEmail + Anonymous_MustGiveEmail + Anonymous_NoUserID + Anonymous_VerifyEmail + AuthAuthoritative + AuthDBMAuthoritative + AuthDBMGroupFile + AuthDBMType + AuthDBMUserFile + AuthDigestAlgorithm + AuthDigestDomain + AuthDigestFile + AuthDigestGroupFile + AuthDigestNonceFormat + AuthDigestNonceLifetime + AuthDigestQop + AuthGroupFile + AuthLDAPAuthoritative + AuthLDAPBindDN + AuthLDAPBindPassword + AuthLDAPCompareDNOnServer + AuthLDAPDereferenceAliases + AuthLDAPEnabled + AuthLDAPFrontPageHack + AuthLDAPGroupAttribute + AuthLDAPGroupAttributeIsDN + AuthLDAPRemoteUserIsDN + AuthLDAPUrl + AuthName + AuthType + AuthUserFile + BrowserMatch + BrowserMatchNoCase + CGIMapExtension + CharsetDefault + CharsetOptions + CharsetSourceEnc + CheckSpelling + ContentDigest + CookieDomain + CookieExpires + CookieName + CookieStyle + CookieTracking + DefaultIcon + DefaultLanguage + DefaultType + Deny + DirectoryIndex + DirectorySlash + EnableMMAP + EnableSendfile + ErrorDocument + Example + ExpiresActive + ExpiresByType + ExpiresDefault + FileETag + ForceLanguagePriority + ForceType + Header + HeaderName + ImapBase + ImapDefault + ImapMenu + IndexIgnore + IndexOptions + IndexOrderDefault + ISAPIAppendLogToErrors + ISAPIAppendLogToQuery + ISAPIFakeAsync + ISAPILogNotSupported + ISAPIReadAheadBuffer + LanguagePriority + LimitRequestBody + LimitXMLRequestBody + MetaDir + MetaFiles + MetaSuffix + MultiviewsMatch + Options + Order + PassEnv + ReadmeName + Redirect + RedirectMatch + RedirectPermanent + RedirectTemp + RemoveCharset + RemoveEncoding + RemoveHandler + RemoveInputFilter + RemoveLanguage + RemoveOutputFilter + RemoveType + RequestHeader + Require + RewriteBase + RewriteCond + RewriteEngine + RewriteOptions + RewriteRule + RLimitCPU + RLimitMEM + RLimitNPROC + Satisfy + ScriptInterpreterSource + ServerSignature + SetEnv + SetEnvIf + SetEnvIfNoCase + SetHandler + SetInputFilter + SetOutputFilter + SSIErrorMsg + SSITimeFormat + SSLCipherSuite + SSLOptions + SSLProxyCipherSuite + SSLProxyVerify + SSLProxyVerifyDepth + SSLRequire + SSLRequireSSL + SSLUserName + SSLVerifyClient + SSLVerifyDepth + UnsetEnv + XBitHack + + Basic + Digest + None + Off + On + + + + + + + # + + + " + " + + + + ]*>]]> + ]]> + + + + + AcceptMutex + AcceptPathInfo + AccessFileName + Action + AddAlt + AddAltByEncoding + AddAltByType + AddCharset + AddDefaultCharset + AddDescription + AddEncoding + AddHandler + AddIcon + AddIconByEncoding + AddIconByType + AddInputFilter + AddLanguage + AddModuleInfo + AddOutputFilter + AddOutputFilterByType + AddType + Alias + AliasMatch + Allow + AllowCONNECT + AllowEncodedSlashes + AllowOverride + Anonymous + Anonymous_Authoritative + Anonymous_LogEmail + Anonymous_MustGiveEmail + Anonymous_NoUserID + Anonymous_VerifyEmail + AuthAuthoritative + AuthDBMAuthoritative + AuthDBMGroupFile + AuthDBMType + AuthDBMUserFile + AuthDigestAlgorithm + AuthDigestDomain + AuthDigestFile + AuthDigestGroupFile + AuthDigestNcCheck + AuthDigestNonceFormat + AuthDigestNonceLifetime + AuthDigestQop + AuthDigestShmemSize + AuthGroupFile + AuthLDAPAuthoritative + AuthLDAPBindDN + AuthLDAPBindPassword + AuthLDAPCharsetConfig + AuthLDAPCompareDNOnServer + AuthLDAPDereferenceAliases + AuthLDAPEnabled + AuthLDAPFrontPageHack + AuthLDAPGroupAttribute + AuthLDAPGroupAttributeIsDN + AuthLDAPRemoteUserIsDN + AuthLDAPUrl + AuthName + AuthType + AuthUserFile + BS2000Account + BrowserMatch + BrowserMatchNoCase + CGIMapExtension + CacheDefaultExpire + CacheDirLength + CacheDirLevels + CacheDisable + CacheEnable + CacheExpiryCheck + CacheFile + CacheForceCompletion + CacheGcClean + CacheGcDaily + CacheGcInterval + CacheGcMemUsage + CacheGcUnused + CacheIgnoreCacheControl + CacheIgnoreNoLastMod + CacheLastModifiedFactor + CacheMaxExpire + CacheMaxFileSize + CacheMinFileSize + CacheNegotiatedDocs + CacheRoot + CacheSize + CacheTimeMargin + CharsetDefault + CharsetOptions + CharsetSourceEnc + CheckSpelling + ChildPerUserID + ContentDigest + CookieDomain + CookieExpires + CookieLog + CookieName + CookieStyle + CookieTracking + CoreDumpDirectory + CustomLog + Dav + DavDepthInfinity + DavLockDB + DavMinTimeout + DefaultIcon + DefaultLanguage + DefaultType + DeflateBufferSize + DeflateCompressionLevel + DeflateFilterNote + DeflateMemLevel + DeflateWindowSize + Deny + DirectoryIndex + DirectorySlash + DocumentRoot + EnableMMAP + EnableSendfile + ErrorDocument + ErrorLog + Example + ExpiresActive + ExpiresByType + ExpiresDefault + ExtFilterDefine + ExtFilterOptions + ExtendedStatus + FileETag + ForceLanguagePriority + ForceType + Group + Header + HeaderName + HostnameLookups + ISAPIAppendLogToErrors + ISAPIAppendLogToQuery + ISAPICacheFile + ISAPIFakeAsync + ISAPILogNotSupported + ISAPIReadAheadBuffer + IdentityCheck + ImapBase + ImapDefault + ImapMenu + Include + IndexIgnore + IndexOptions + IndexOrderDefault + KeepAlive + KeepAliveTimeout + LDAPCacheEntries + LDAPCacheTTL + LDAPOpCacheEntries + LDAPOpCacheTTL + LDAPSharedCacheSize + LDAPTrustedCA + LDAPTrustedCAType + LanguagePriority + LimitInternalRecursion + LimitRequestBody + LimitRequestFields + LimitRequestFieldsize + LimitRequestLine + LimitXMLRequestBody + Listen + ListenBacklog + LoadFile + LoadModule + LockFile + LogFormat + LogLevel + MCacheMaxObjectCount + MCacheMaxObjectSize + MCacheMaxStreamingBuffer + MCacheMinObjectSize + MCacheRemovalAlgorithm + MCacheSize + MMapFile + MaxClients + MaxKeepAliveRequests + MaxMemFree + MaxRequestsPerChild + MaxRequestsPerThread + MaxSpareServers + MaxSpareThreads + MaxThreads + MaxThreadsPerChild + MetaDir + MetaFiles + MetaSuffix + MimeMagicFile + MinSpareServers + MinSpareThreads + ModMimeUsePathInfo + MultiviewsMatch + NWSSLTrustedCerts + NameVirtualHost + NoProxy + NumServers + Options + Order + PassEnv + PidFile + ProtocolEcho + ProxyBadHeader + ProxyBlock + ProxyDomain + ProxyErrorOverride + ProxyIOBufferSize + ProxyMaxForwards + ProxyPass + ProxyPassReverse + ProxyPreserveHost + ProxyReceiveBufferSize + ProxyRemote + ProxyRemoteMatch + ProxyRequests + ProxyTimeout + ProxyVia + RLimitCPU + RLimitMEM + RLimitNPROC + ReadmeName + Redirect + RedirectMatch + RedirectPermanent + RedirectTemp + RemoveCharset + RemoveEncoding + RemoveHandler + RemoveInputFilter + RemoveLanguage + RemoveOutputFilter + RemoveType + RequestHeader + Require + RewriteBase + RewriteCond + RewriteEngine + RewriteLock + RewriteLog + RewriteLogLevel + RewriteMap + RewriteOptions + RewriteRule + SSIEndTag + SSIErrorMsg + SSIStartTag + SSITimeFormat + SSIUndefinedEcho + SSLCACertificateFile + SSLCACertificatePath + SSLCARevocationFile + SSLCARevocationPath + SSLCertificateChainFile + SSLCertificateFile + SSLCertificateKeyFile + SSLCipherSuite + SSLEngine + SSLMutex + SSLOptions + SSLPassPhraseDialog + SSLProtocol + SSLProxyCACertificateFile + SSLProxyCACertificatePath + SSLProxyCARevocationFile + SSLProxyCARevocationPath + SSLProxyCipherSuite + SSLProxyEngine + SSLProxyMachineCertificateFile + SSLProxyMachineCertificatePath + SSLProxyProtocol + SSLProxyVerify + SSLProxyVerifyDepth + SSLRandomSeed + SSLRequire + SSLRequireSSL + SSLSessionCache + SSLSessionCacheTimeout + SSLVerifyClient + SSLVerifyDepth + Satisfy + ScoreBoardFile + Script + ScriptAlias + ScriptAliasMatch + ScriptInterpreterSource + ScriptLog + ScriptLogBuffer + ScriptLogLength + ScriptSock + SecureListen + SendBufferSize + ServerAdmin + ServerLimit + ServerName + ServerRoot + ServerSignature + ServerTokens + SetEnv + SetEnvIf + SetEnvIfNoCase + SetHandler + SetInputFilter + SetOutputFilter + StartServers + StartThreads + SuexecUserGroup + ThreadLimit + ThreadStackSize + ThreadsPerChild + TimeOut + TransferLog + TypesConfig + UnsetEnv + UseCanonicalName + User + UserDir + VirtualDocumentRoot + VirtualDocumentRootIP + VirtualScriptAlias + VirtualScriptAliasIP + XBitHack + + + + AddModule + ClearModuleList + + + SVNPath + SVNParentPath + SVNIndexXSLT + + + PythonHandler + PythonDebug + + + php_value + + php_flag + + All + ExecCGI + FollowSymLinks + Includes + IncludesNOEXEC + Indexes + MultiViews + None + Off + On + SymLinksIfOwnerMatch + from + + + + diff --git a/extra/xmode/modes/html.xml b/extra/xmode/modes/html.xml new file mode 100644 index 0000000000..a5af6045db --- /dev/null +++ b/extra/xmode/modes/html.xml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + + + + + " + " + + + + ' + ' + + + = + + + + fieldset + a + abbr + acronym + address + applet + area + b + base + basefont + bdo + big + blockquote + body + br + button + caption + center + cite + code + col + colgroup + dd + del + dfn + dir + div + dl + dt + em + fieldset + font + form + frame + frameset + h1 + h2 + h3 + h4 + h5 + h6 + head + hr + html + i + iframe + img + input + ins + isindex + kbd + label + legend + li + link + map + menu + meta + noframes + noscript + object + ol + optgroup + option + p + param + pre + q + s + samp + script + select + small + span + strike + strong + style + sub + sup + table + tbody + td + textarea + tfoot + th + thead + title + tr + tt + u + ul + var + + + + + > + + SRC= + + + + > + + + + > + + diff --git a/extra/xmode/modes/i4gl.xml b/extra/xmode/modes/i4gl.xml new file mode 100644 index 0000000000..0c5064822e --- /dev/null +++ b/extra/xmode/modes/i4gl.xml @@ -0,0 +1,665 @@ + + + + + + + + + + + + + + + + + + + + + + ' + ' + + + + " + " + + + -- + # + + + { + } + + + ) + + ] + [ + . + , + ; + : + = + == + != + >= + <= + <> + > + < + + + - + / + * + || + + + ( + ) + + + + + + ABORT + ABS + ABSOLUTE + ACCEPT + ACCESS + ACOS + ADA + ADD + AFTER + ALL + ALLOCATE + ALTER + AND + ANSI + ANY + APPEND + ARG_VAL + ARRAY + ARR_COUNT + ARR_CURR + AS + ASC + ASCENDING + ASCII + ASIN + AT + ATAN + ATAN2 + ATTACH + ATTRIBUTE + ATTRIBUTES + AUDIT + AUTHORIZATION + AUTO + AUTONEXT + AVERAGE + AVG + BEFORE + BEGIN + BETWEEN + BLACK + BLINK + BLUE + BOLD + BORDER + BOTH + BOTTOM + BREAK + BUFFERED + BY + BYTE + CALL + CASCADE + CASE + CHAR + CHARACTER + CHARACTER_LENGTH + CHAR_LENGTH + CHECK + CLASS_ORIGIN + CLEAR + CLIPPED + CLOSE + CLUSTER + COBOL + COLOR + COLUMN + COLUMNS + COMMAND + COMMENT + COMMENTS + COMMIT + COMMITTED + COMPOSITES + COMPRESS + CONCURRENT + CONNECT + CONNECTION + CONNECTION_ALIAS + CONSTRAINED + CONSTRAINT + CONSTRAINTS + CONSTRUCT + CONTINUE + CONTROL + COS + COUNT + CREATE + CURRENT + CURSOR + CYAN + DATA + DATABASE + DATASKIP + DATE + DATETIME + DAY + DBA + DBINFO + DBSERVERNAME + DEALLOCATE + DEBUG + DEC + DECIMAL + DECLARE + DEFAULT + DEFAULTS + DEFER + DEFERRED + DEFINE + DELETE + DELIMITER + DELIMITERS + DESC + DESCENDING + DESCRIBE + DESCRIPTOR + DETACH + DIAGNOSTICS + DIM + DIRTY + DISABLED + DISCONNECT + DISPLAY + DISTINCT + DISTRIBUTIONS + DO + DORMANT + DOUBLE + DOWN + DOWNSHIFT + DROP + EACH + ELIF + ELSE + ENABLED + END + ENTRY + ERROR + ERRORLOG + ERR_GET + ERR_PRINT + ERR_QUIT + ESC + ESCAPE + EVERY + EXCEPTION + EXCLUSIVE + EXEC + EXECUTE + EXISTS + EXIT + EXP + EXPLAIN + EXPRESSION + EXTEND + EXTENT + EXTERN + EXTERNAL + F1 + F10 + F11 + F12 + F13 + F14 + F15 + F16 + F17 + F18 + F19 + F2 + F20 + F21 + F22 + F23 + F24 + F25 + F26 + F27 + F28 + F29 + F3 + F30 + F31 + F32 + F33 + F34 + F35 + F36 + F37 + F38 + F39 + F4 + F40 + F41 + F42 + F43 + F44 + F45 + F46 + F47 + F48 + F49 + F5 + F50 + F51 + F52 + F53 + F54 + F55 + F56 + F57 + F58 + F59 + F6 + F60 + F61 + F62 + F63 + F64 + F7 + F8 + F9 + FALSE + FETCH + FGL_GETENV + FGL_KEYVAL + FGL_LASTKEY + FIELD + FIELD_TOUCHED + FILE + FILLFACTOR + FILTERING + FINISH + FIRST + FLOAT + FLUSH + FOR + FOREACH + FOREIGN + FORM + FORMAT + FORMONLY + FORTRAN + FOUND + FRACTION + FRAGMENT + FREE + FROM + FUNCTION + GET_FLDBUF + GLOBAL + GLOBALS + GO + GOTO + GRANT + GREEN + GROUP + HAVING + HEADER + HELP + HEX + HIDE + HIGH + HOLD + HOUR + IDATA + IF + ILENGTH + IMMEDIATE + IN + INCLUDE + INDEX + INDEXES + INDICATOR + INFIELD + INIT + INITIALIZE + INPUT + INSERT + INSTRUCTIONS + INT + INTEGER + INTERRUPT + INTERVAL + INTO + INT_FLAG + INVISIBLE + IS + ISAM + ISOLATION + ITYPE + KEY + LABEL + LANGUAGE + LAST + LEADING + LEFT + LENGTH + LET + LIKE + LINE + LINENO + LINES + LOAD + LOCATE + LOCK + LOG + LOG10 + LOGN + LONG + LOW + MAGENTA + MAIN + MARGIN + MATCHES + MAX + MDY + MEDIUM + MEMORY + MENU + MESSAGE + MESSAGE_LENGTH + MESSAGE_TEXT + MIN + MINUTE + MOD + MODE + MODIFY + MODULE + MONEY + MONTH + MORE + NAME + NCHAR + NEED + NEW + NEXT + NEXTPAGE + NO + NOCR + NOENTRY + NONE + NORMAL + NOT + NOTFOUND + NULL + NULLABLE + NUMBER + NUMERIC + NUM_ARGS + NVARCHAR + OCTET_LENGTH + OF + OFF + OLD + ON + ONLY + OPEN + OPTIMIZATION + OPTION + OPTIONS + OR + ORDER + OTHERWISE + OUTER + OUTPUT + PAGE + PAGENO + PASCAL + PAUSE + PDQPRIORITY + PERCENT + PICTURE + PIPE + PLI + POW + PRECISION + PREPARE + PREVIOUS + PREVPAGE + PRIMARY + PRINT + PRINTER + PRIOR + PRIVATE + PRIVILEGES + PROCEDURE + PROGRAM + PROMPT + PUBLIC + PUT + QUIT + QUIT_FLAG + RAISE + RANGE + READ + READONLY + REAL + RECORD + RECOVER + RED + REFERENCES + REFERENCING + REGISTER + RELATIVE + REMAINDER + REMOVE + RENAME + REOPTIMIZATION + REPEATABLE + REPORT + REQUIRED + RESOLUTION + RESOURCE + RESTRICT + RESUME + RETURN + RETURNED_SQLSTATE + RETURNING + REVERSE + REVOKE + RIGHT + ROBIN + ROLE + ROLLBACK + ROLLFORWARD + ROOT + ROUND + ROW + ROWID + ROWIDS + ROWS + ROW_COUNT + RUN + SCALE + SCHEMA + SCREEN + SCROLL + SCR_LINE + SECOND + SECTION + SELECT + SERIAL + SERIALIZABLE + SERVER_NAME + SESSION + SET + SET_COUNT + SHARE + SHORT + SHOW + SITENAME + SIZE + SIZEOF + SKIP + SLEEP + SMALLFLOAT + SMALLINT + SOME + SPACE + SPACES + SQL + SQLAWARN + SQLCA + SQLCODE + SQLERRD + SQLERRM + SQLERROR + SQLERRP + SQLSTATE + SQLWARNING + SQRT + STABILITY + START + STARTLOG + STATIC + STATISTICS + STATUS + STDEV + STEP + STOP + STRING + STRUCT + SUBCLASS_ORIGIN + SUM + SWITCH + SYNONYM + SYSTEM + SysBlobs + SysChecks + SysColAuth + SysColDepend + SysColumns + SysConstraints + SysDefaults + SysDepend + SysDistrib + SysFragAuth + SysFragments + SysIndexes + SysObjState + SysOpClstr + SysProcAuth + SysProcBody + SysProcPlan + SysProcedures + SysReferences + SysRoleAuth + SysSynTable + SysSynonyms + SysTabAuth + SysTables + SysTrigBody + SysTriggers + SysUsers + SysViews + SysViolations + TAB + TABLE + TABLES + TAN + TEMP + TEXT + THEN + THROUGH + THRU + TIME + TO + TODAY + TOP + TOTAL + TRACE + TRAILER + TRAILING + TRANSACTION + TRIGGER + TRIGGERS + TRIM + TRUE + TRUNC + TYPE + TYPEDEF + UNCOMMITTED + UNCONSTRAINED + UNDERLINE + UNION + UNIQUE + UNITS + UNLOAD + UNLOCK + UNSIGNED + UP + UPDATE + UPSHIFT + USER + USING + VALIDATE + VALUE + VALUES + VARCHAR + VARIABLES + VARIANCE + VARYING + VERIFY + VIEW + VIOLATIONS + WAIT + WAITING + WARNING + WEEKDAY + WHEN + WHENEVER + WHERE + WHILE + WHITE + WINDOW + WITH + WITHOUT + WORDWRAP + WORK + WRAP + WRITE + YEAR + YELLOW + ZEROFILL + + + + FALSE + NULL + TRUE + + + + + diff --git a/extra/xmode/modes/icon.xml b/extra/xmode/modes/icon.xml new file mode 100644 index 0000000000..892609b841 --- /dev/null +++ b/extra/xmode/modes/icon.xml @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + # + + + + " + " + + + + + ' + ' + + + ~=== + === + ||| + + + >>= + >> + <<= + << + ~== + == + || + + + ++ + ** + -- + + <-> + <- + op:= + <= + < + >= + > + ~= + :=: + := + -: + +: + + ~ + : + ! + | + & + not + * + ? + @ + + + + ^ + % + - + + + = + / + + + ( + ) + + + by + case + create + default + do + else + every + if + initial + next + of + repeat + then + to + until + while + + break + end + fail + global + invocable + link + local + procedure + record + return + static + suspend + + &allocated + &ascii + &clock + &collections + &cset + &current + &date + &dateline + &digits + &dump + &e + &error + &errornumber + &errortext + &errorvalue + &errout + &fail + &features + &file + &host + &input + &lcase + &letters + &level + &line + &main + &null + &output + &phi + &pi + &pos + &progname + &random + &regions + &source + &storage + &subject + &time + &trace + &ucase + &version + + + $define + $else + $endif + $error + $ifdef + $ifndef + $include + $line + $undef + + + _MACINTOSH + _MS_WINDOWS_NT + _MS_WINDOWS + _MSDOS_386 + _MSDOS + _OS2 + _PIPES + _PRESENTATION_MGR + _SYSTEM_FUNCTION + _UNIX + _VMS + _WINDOW_FUNCTIONS + _X_WINDOW_SYSTEM + + co-expression + cset + file + integer + list + null + real + set + string + table + window + + + + diff --git a/extra/xmode/modes/idl.xml b/extra/xmode/modes/idl.xml new file mode 100644 index 0000000000..65b7fc535c --- /dev/null +++ b/extra/xmode/modes/idl.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + // + + + + + } + { + : + + + ( + ) + + + any + attribute + boolean + case + char + const + context + default + double + enum + exception + FALSE + fixed + float + in + inout + interface + long + module + Object + octet + oneway + out + raises + readonly + sequence + short + string + struct + switch + TRUE + typedef + unsigned + union + void + wchar + wstring + + + diff --git a/extra/xmode/modes/inform.xml b/extra/xmode/modes/inform.xml new file mode 100644 index 0000000000..fdd7153f6b --- /dev/null +++ b/extra/xmode/modes/inform.xml @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + ! + + + + " + " + + + ' + ' + + + + # + ! + + + = + == + >= + <= + ~= + + + - + $ + / + * + > + < + % + & + | + ^ + ~ + } + { + ] + [ + + .& + .# + --> + + + ( + ) + :: + + : + + + + has + hasnt + in + notin + ofclass + provides + or + + + char + string + address + name + a + an + the + The + property + object + + + break + continue + do + until + for + give + if + else + inversion + jump + move + to + objectloop + remove + return + rfalse + rtrue + string + switch + while + + + with + + + + new_line + print + print_ret + box + font + on + off + quit + read + restore + save + spaces + style + roman + bold + underline + reverse + fixed + score + time + + + Abbreviate + Array + Attribute + Class + Constant + Default + End + Endif + Extend + Global + Ifdef + Ifndef + Ifnot + Iftrue + Iffalse + Import + Include + Link + Lowstring + Message + Object + Property + Replace + Serial + Switches + Statusline + System_file + Verb + private + + false + true + null + super + self + + this + + + + ^ + ~ + @ + \ + + + @@ + + diff --git a/extra/xmode/modes/ini.xml b/extra/xmode/modes/ini.xml new file mode 100644 index 0000000000..71c50b653d --- /dev/null +++ b/extra/xmode/modes/ini.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + [ + ] + + ; + # + + = + + diff --git a/extra/xmode/modes/inno-setup.xml b/extra/xmode/modes/inno-setup.xml new file mode 100644 index 0000000000..d40575eac4 --- /dev/null +++ b/extra/xmode/modes/inno-setup.xml @@ -0,0 +1,406 @@ + + + + + + + + + + + [code] + + [Setup] + [Types] + [Components] + [Tasks] + [Dirs] + [Files] + [Icons] + [INI] + [InstallDelete] + [Languages] + [Messages] + [CustomMessages] + [LangOptions] + [Registry] + [Run] + [UninstallRun] + [UninstallDelete] + + + #define + #dim + #undef + #include + #emit + #expr + #insert + #append + #if + #elif + #else + #endif + #ifexist + #ifnexist + #ifdef + #for + #sub + #endsub + #pragma + #error + + {# + } + + + % + + + " + " + + + ' + ' + + + + { + } + + + ; + # + + + + + + + Compression + DiskClusterSize + DiskSliceSize + DiskSpanning + Encryption + InternalCompressLevel + MergeDuplicateFiles + OutputBaseFilename + OutputDir + ReserveBytes + SlicesPerDisk + SolidCompression + SourceDir + UseSetupLdr + VersionInfoCompany + VersionInfoDescription + VersionInfoTextVersion + VersionInfoVersion + + AllowCancelDuringInstall + AllowNoIcons + AllowRootDirectory + AllowUNCPath + AlwaysRestart + AlwaysShowComponentsList + AlwaysShowDirOnReadyPage + AlwaysShowGroupOnReadyPage + AlwaysUsePersonalGroup + AppendDefaultDirName + AppendDefaultGroupName + AppComments + AppContact + AppId + AppModifyPath + AppMutex + AppName + AppPublisher + AppPublisherURL + AppReadmeFile + AppSupportURL + AppUpdatesURL + AppVersion + AppVerName + ChangesAssociations + CreateAppDir + CreateUninstallRegKey + DefaultDirName + DefaultGroupName + DefaultUserInfoName + DefaultUserInfoOrg + DefaultUserInfoSerial + DirExistsWarning + DisableDirPage + DisableFinishedPage + DisableProgramGroupPage + DisableReadyMemo + DisableReadyPage + DisableStartupPrompt + EnableDirDoesntExistWarning + ExtraDiskSpaceRequired + InfoAfterFile + InfoBeforeFile + LanguageDetectionMethod + LicenseFile + MinVersion + OnlyBelowVersion + Password + PrivilegesRequired + RestartIfNeededByRun + ShowLanguageDialog + TimeStampRounding + TimeStampsInUTC + TouchDate + TouchTime + Uninstallable + UninstallDisplayIcon + UninstallDisplayName + UninstallFilesDir + UninstallLogMode + UninstallRestartComputer + UpdateUninstallLogAppName + UsePreviousAppDir + UsePreviousGroup + UsePreviousSetupType + UsePreviousTasks + UsePreviousUserInfo + UserInfoPage + + AppCopyright + BackColor + BackColor2 + BackColorDirection + BackSolid + FlatComponentsList + SetupIconFile + ShowComponentSizes + ShowTasksTreeLines + UninstallStyle + WindowShowCaption + WindowStartMaximized + WindowResizable + WindowVisible + WizardImageBackColor + WizardImageFile + WizardImageStretch + WizardSmallImageBackColor + WizardSmallImageFile + UninstallIconFile + + + AfterInstall + Attribs + BeforeInstall + Check + Comment + Components + CopyMode + Description + DestDir + DestName + Excludes + ExtraDiskSpaceRequired + Filename + Flags + FontInstall + GroupDescription + HotKey + IconFilename + IconIndex + InfoBeforeFile + InfoAfterFile + Key + + MessagesFile + Name + Parameters + Permissions + Root + RunOnceId + Section + Source + StatusMsg + String + Subkey + Tasks + Type + Types + ValueType + ValueName + ValueData + WorkingDir + + + allowunsafefiles + checkedonce + closeonexit + compact + comparetimestamp + confirmoverwrite + createkeyifdoesntexist + createonlyiffileexists + createvalueifdoesntexist + deleteafterinstall + deletekey + deletevalue + desktopicon + dirifempty + disablenouninstallwarning + dontcloseonexit + dontcopy + dontcreatekey + dontinheritcheck + dontverifychecksum + exclusive + external + files + filesandordirs + fixed + fontisnttruetype + full + ignoreversion + iscustom + isreadme + hidden + hidewizard + modify + nocompression + noencryption + noerror + noregerror + nowait + onlyifdestfileexists + onlyifdoesntexist + overwritereadonly + postinstall + preservestringtype + promptifolder + quicklaunchicon + read + readonly + readexec + recursesubdirs + regserver + regtypelib + replacesameversion + restart + restartreplace + runhidden + runmaximized + runminimized + sharedfile + shellexec + skipifnotsilent + skipifsilent + skipifdoesntexist + skipifsourcedoesntexist + sortfilesbyextension + system + touch + unchecked + uninsalwaysuninstall + uninsclearvalue + uninsdeleteentry + uninsdeletekey + uninsdeletekeyifempty + uninsdeletesection + uninsdeletesectionifempty + uninsdeletevalue + uninsneveruninstall + uninsremovereadonly + uninsrestartdelete + useapppaths + waituntilidle + + + HKCR + HKCU + HKLM + HKU + HKCC + + + none + string + expandsz + multisz + dword + binary + + + + + + + {# + } + + + + { + } + + + + + code: + | + + + + + ; + + + /* + */ + + + + " + " + + + + + Defined + TypeOf + GetFileVersion + GetStringFileInfo + Int + Str + FileExists + FileSize + ReadIni + WriteIni + ReadReg + Exec + Copy + Pos + RPos + Len + SaveToFile + Find + SetupSetting + SetSetupSetting + LowerCase + EntryCount + GetEnv + DeleteFile + CopyFile + FindFirst + FindNext + FindClose + FindGetFileName + FileOpen + FileRead + FileReset + FileEof + FileClose + + + + diff --git a/extra/xmode/modes/interlis.xml b/extra/xmode/modes/interlis.xml new file mode 100644 index 0000000000..28960bfe41 --- /dev/null +++ b/extra/xmode/modes/interlis.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + /* + */ + + + !! + + + " + " + + + + + // + // + + + + -> + <- + .. + . + , + = + ; + : + * + [ + ] + ( + ) + > + + != + # + % + ( + ) + * + , + -- + -<#> + -<> + -> + . + .. + / + : + := + ; + < + <= + <> + = + == + > + >= + [ + \ + ] + { + } + ~ + + + + ANY + ARCS + AREA + BASE + BLANK + CODE + CONTINUE + CONTOUR + COORD2 + COORD3 + DATE + DEFAULT + DEGREES + DERIVATIVES + DIM1 + DIM2 + DOMAIN + END + FIX + FONT + FORMAT + FREE + GRADS + HALIGNMENT + I16 + I32 + IDENT + LINEATTR + LINESIZE + MODEL + NO + OPTIONAL + OVERLAPS + PERIPHERY + POLYLINE + RADIANS + STRAIGHTS + SURFACE + TABLE + TEXT + TID + TIDSIZE + TOPIC + TRANSFER + UNDEFINED + VALIGNMENT + VERTEX + VERTEXINFO + VIEW + WITH + WITHOUT + + + ABSTRACT + ACCORDING + AGGREGATES + AGGREGATION + ALL + AND + ANY + ANYCLASS + ANYSTRUCTURE + ARCS + AREA + AS + ASSOCIATION + AT + ATTRIBUTE + ATTRIBUTES + BAG + BASE + BASED + BASKET + BINARY + BLACKBOX + BOOLEAN + BY + CARDINALITY + CIRCULAR + CLASS + CLOCKWISE + CONSTRAINT + CONSTRAINTS + CONTINUE + CONTINUOUS + CONTRACTED + COORD + COUNTERCLOCKWISE + DEFINED + DEPENDS + DERIVED + DIRECTED + DOMAIN + END + ENUMTREEVAL + ENUMVAL + EQUAL + EXISTENCE + EXTENDED + EXTENDS + EXTERNAL + FINAL + FIRST + FORM + FROM + FUNCTION + GRAPHIC + HALIGNMENT + HIDING + IMPORTS + IN + INHERITANCE + INSPECTION + INTERLIS + JOIN + LAST + LINE + LIST + LNBASE + LOCAL + MANDATORY + METAOBJECT + MODEL + MTEXT + NAME + NOT + NO + NULL + NUMERIC + OBJECT + OF + OID + ON + OR + ORDERED + OTHERS + OVERLAPS + PARAMETER + PARENT + PI + POLYLINE + PROJECTION + REFERENCE + REFSYSTEM + REQUIRED + RESTRICTED + ROTATION + SET + SIGN + STRAIGHTS + STRUCTURE + SUBDIVISION + SURFACE + SYMBOLOGY + TEXT + THATAREA + THIS + THISAREA + TO + TOPIC + TRANSIENT + TRANSLATION + TYPE + UNDEFINED + UNION + UNIQUE + UNIT + UNQUALIFIED + URI + VALIGNMENT + VERSION + VERTEX + VIEW + WHEN + WHERE + WITH + WITHOUT + + + + diff --git a/extra/xmode/modes/io.xml b/extra/xmode/modes/io.xml new file mode 100644 index 0000000000..2ac4ffe61c --- /dev/null +++ b/extra/xmode/modes/io.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + // + + /* + */ + + + + + + + " + " + + + + + """ + """ + + + + + ` + ~ + @ + @@ + $ + % + ^ + & + * + - + + + / + = + { + } + [ + ] + | + \ + >= + <= + ? + + + + + + + Block + Buffer + CFunction + Date + Duration + File + Future + List + LinkedList + Map + Nop + Message + Nil + Number + Object + String + WeakLink + + + block + method + + + while + foreach + if + else + do + + + super + self + clone + proto + setSlot + hasSlot + type + write + print + forward + + + + + + + + diff --git a/extra/xmode/modes/java.xml b/extra/xmode/modes/java.xml new file mode 100644 index 0000000000..d350cdc2d1 --- /dev/null +++ b/extra/xmode/modes/java.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + /**/ + + + + /** + */ + + + + + /* + */ + + + + " + " + + + ' + ' + + + // + + = + ! + >= + <= + + + - + / + + + .* + + * + > + < + % + & + | + ^ + ~ + } + { + : + + + ( + ) + + + @ + + + abstract + break + case + catch + continue + default + do + else + extends + final + finally + for + if + implements + instanceof + native + new + private + protected + public + return + static + switch + synchronized + throw + throws + transient + try + volatile + while + + package + import + + boolean + byte + char + class + double + float + int + interface + long + short + void + + assert + strictfp + + + false + null + super + this + true + + goto + const + + + enum + + + + + + + * + + + + + + + + <!-- + --> + + + + << + <= + < + + + + < + > + + + + + + + + \{@(link|linkplain|docRoot|code|literal)\s + } + + + + + @version\s+\$ + $ + + + + + @(?:param|throws|exception|serialField)(\s) + $1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @category + @example + @exclude + @index + @internal + @obsolete + @threadsafety + @tutorial + @todo + + + @access + @beaninfo + @bon + @bug + @complexity + @design + @ensures + @equivalent + @generates + @guard + @hides + @history + @idea + @invariant + @modifies + @overrides + @post + @pre + @references + @requires + @review + @spec + @uses + @values + + + + + + diff --git a/extra/xmode/modes/javacc.xml b/extra/xmode/modes/javacc.xml new file mode 100644 index 0000000000..d3172d2a7d --- /dev/null +++ b/extra/xmode/modes/javacc.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + EOF + IGNORE_CASE + JAVACODE + LOOKAHEAD + MORE + PARSER_BEGIN + PARSER_END + SKIP + SPECIAL_TOKEN + TOKEN + TOKEN_MGR_DECLS + options + + + diff --git a/extra/xmode/modes/javascript.xml b/extra/xmode/modes/javascript.xml new file mode 100644 index 0000000000..e898fa1aeb --- /dev/null +++ b/extra/xmode/modes/javascript.xml @@ -0,0 +1,572 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + /* + */ + + + + " + " + + + + ' + ' + + + + [A-Za-z_][\w_-]*\s*\( + ) + + + + + ( + ) + + + //--> + // + + <!-- + + = + ! + >= + <= + + + - + / + * + > + < + % + & + | + ^ + ~ + . + } + { + , + ; + ] + [ + ? + : + : + + + + break + continue + delete + else + for + function + if + in + new + return + this + typeof + var + void + while + with + + + + abstract + boolean + byte + case + catch + char + class + const + debugger + default + + do + double + enum + export + extends + final + finally + float + goto + implements + + import + instanceof + int + interface + long + native + package + private + protected + public + + short + static + super + switch + synchronized + throw + throws + transient + try + volatile + + + Array + Boolean + Date + Function + Global + Math + Number + Object + RegExp + String + + + false + null + true + + NaN + Infinity + + + eval + parseInt + parseFloat + escape + unescape + isNaN + isFinite + + + + + + + adOpenForwardOnly + adOpenKeyset + adOpenDynamic + adOpenStatic + + + + + adLockReadOnly + adLockPessimistic + adLockOptimistic + adLockBatchOptimistic + + + adRunAsync + adAsyncExecute + adAsyncFetch + adAsyncFetchNonBlocking + adExecuteNoRecords + + + + + adStateClosed + adStateOpen + adStateConnecting + adStateExecuting + adStateFetching + + + adUseServer + adUseClient + + + adEmpty + adTinyInt + adSmallInt + adInteger + adBigInt + adUnsignedTinyInt + adUnsignedSmallInt + adUnsignedInt + adUnsignedBigInt + adSingle + adDouble + adCurrency + adDecimal + adNumeric + adBoolean + adError + adUserDefined + adVariant + adIDispatch + adIUnknown + adGUID + adDate + adDBDate + adDBTime + adDBTimeStamp + adBSTR + adChar + adVarChar + adLongVarChar + adWChar + adVarWChar + adLongVarWChar + adBinary + adVarBinary + adLongVarBinary + adChapter + adFileTime + adDBFileTime + adPropVariant + adVarNumeric + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + adPersistADTG + adPersistXML + + + + + + + + + + + + + + + + + adParamSigned + adParamNullable + adParamLong + + + adParamUnknown + adParamInput + adParamOutput + adParamInputOutput + adParamReturnValue + + + adCmdUnknown + adCmdText + adCmdTable + adCmdStoredProc + adCmdFile + adCmdTableDirect + + + + + + + + + + + + + + + + + + + + + + + + ( + ) + + + + + + diff --git a/extra/xmode/modes/jcl.xml b/extra/xmode/modes/jcl.xml new file mode 100644 index 0000000000..b7f0ed5893 --- /dev/null +++ b/extra/xmode/modes/jcl.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + //* + + + ' + ' + + + += +< +> +& +| +, + + + COMMAND + CNTL + DD + ENCNTL + EXEC + IF + THEN + ELSE + ENDIF + INCLUDE + JCLIB + JOB + MSG + OUTPUT + PEND + PROC + SET + XMIT + + + + diff --git a/extra/xmode/modes/jhtml.xml b/extra/xmode/modes/jhtml.xml new file mode 100644 index 0000000000..5a15907f3b --- /dev/null +++ b/extra/xmode/modes/jhtml.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + <!--# + --> + + + + + <!-- + --> + + + + + ` + ` + + + + + <java> + </java> + + + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + + + + + <!-- + --> + + + + " + " + + + + ' + ' + + + / + + + importbean + droplet + param + oparam + valueof + setvalue + servlet + bean + submitvalue + declareparam + synchronized + priority + + + converter + date + number + required + nullable + currency + currencyConversion + euro + locale + symbol + + + + + + + + + + ` + ` + + + + param: + bean: + + + diff --git a/extra/xmode/modes/jmk.xml b/extra/xmode/modes/jmk.xml new file mode 100644 index 0000000000..64ffc04aee --- /dev/null +++ b/extra/xmode/modes/jmk.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + # + + + + " + " + + + ' + ' + + + + { + } + ( + ) + - + = + + + cat + copy + create + delall + delete + dirs + equal + else + end + exec + first + forname + function + getprop + glob + if + join + load + mkdir + mkdirs + note + patsubst + rename + rest + subst + then + @ + ? + < + % + include + + + diff --git a/extra/xmode/modes/jsp.xml b/extra/xmode/modes/jsp.xml new file mode 100644 index 0000000000..31bf48b3f2 --- /dev/null +++ b/extra/xmode/modes/jsp.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + <%-- + --%> + + + + + <%@ + %> + + + <jsp:directive> + </jsp:directive> + + + + + <%= + %> + + + <jsp:expression> + </jsp:expression> + + + + + + <%! + %> + + + <jsp:declaration> + </jsp:declaration> + + + + + <% + %> + + + <jsp:scriptlet> + </jsp:scriptlet> + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + < + > + + + + + & + ; + + + + ${ + } + + + + + + + <%-- + --%> + + + + + <%= + %> + + + + + <% + %> + + + + + + <%= + %> + + + + " + " + + + + ' + ' + + + / + : + : + + + taglib + include + page + tag + tagAttribute + tagVariable + + language + session + contentType + charset + import + buffer + autoflush + isThreadSafe + info + errorPage + isErrorpage + extends + file + uri + prefix + method + name + default + required + rtexprvalue + id + type + scope + + + + + + + <%-- + --%> + + + + + <%= + %> + + + + style=' + ' + + + + style=" + " + + + + " + " + + + + ' + ' + + + / + : + : + + + + + + + <%= + %> + + + ${ + } + + + + + + + + <%= + %> + + + ${ + } + + javascript: + + + + + + + <%= + %> + + + ${ + } + + + + + + : + + + + \ No newline at end of file diff --git a/extra/xmode/modes/latex.xml b/extra/xmode/modes/latex.xml new file mode 100644 index 0000000000..b32ba9c166 --- /dev/null +++ b/extra/xmode/modes/latex.xml @@ -0,0 +1,2361 @@ + + + + + + + + + + + + + + + + + + + __NormalMode__ + + + % + + + ``'' + `' + "" + + " + ` + + + #1 + #2 + #3 + #4 + #5 + #6 + #7 + #8 + #9 + + + + \begin{verbatim} + \end{verbatim} + + + \tabs + \tabset + \tabsdone + \cleartabs + \settabs + \tabalign + \+ + \pageno + \headline + \footline + \normalbottom + \folio + \nopagenumbers + \advancepageno + \pagebody + \plainoutput + \pagecontents + \makeheadline + \makefootline + \dosupereject + \footstrut + \vfootnote + \topins + \topinsert + \midinsert + \pageinsert + \endinsert + \fivei + \fiverm + \fivesy + \fivebf + \seveni + \sevenbf + \sevensy + \teni + \oldstyle + \eqalign + \eqalignno + \leqalignno + $$ + \beginsection + \bye + \magnification + # + & + _ + \~ + + $$ + \(\) + \[\] + \begin{math}\end{math} + \begin{displaymath}\end{displaymath} + \begin{equation}\end{equation} + \ensuremath{} + \begin{eqnarray}\end{eqnarray} + \begin{eqnarray*}\end{eqnarray*} + \begin{tabular}\end{tabular} + \begin{tabular*}\end{tabular*} + \begin{tabbing}\end{tabbing} + \begin{picture}\end{picture} + ~ + } + { + totalnumber + topnumber + tocdepth + secnumdepth + dbltopnumber + ] + \~{ + \~ + \} + \| + \{ + \width + \whiledo{ + \v{ + \vspace{ + \vspace*{ + \vfill + \verb* + \verb + \value{ + \v + \u{ + \usepackage{ + \usepackage[ + \usecounter{ + \usebox{ + \upshape + \unboldmath{ + \u + \t{ + \typeout{ + \typein{ + \typein[ + \twocolumn[ + \twocolumn + \ttfamily + \totalheight + \topsep + \topfraction + \today + \title{ + \tiny + \thispagestyle{ + \thinlines + \thicklines + \thanks{ + \textwidth + \textup{ + \texttt{ + \textsl{ + \textsf{ + \textsc{ + \textrm{ + \textnormal{ + \textmd{ + \textit{ + \textfraction + \textfloatsep + \textcolor{ + \textbf{ + \tableofcontents + \tabcolsep + \tabbingsep + \t + \symbol{ + \suppressfloats[ + \suppressfloats + \subsubsection{ + \subsubsection[ + \subsubsection*{ + \subsection{ + \subsection[ + \subsection*{ + \subparagraph{ + \subparagraph[ + \subparagraph*{ + \stretch{ + \stepcounter{ + \smallskip + \small + \slshape + \sloppy + \sffamily + \settowidth{ + \settoheight{ + \settodepth{ + \setlength{ + \setcounter{ + \section{ + \section[ + \section*{ + \scshape + \scriptsize + \scalebox{ + \sbox{ + \savebox{ + \rule{ + \rule[ + \rp,am{ + \rotatebox{ + \rmfamily + \rightmargin + \reversemarginpar + \resizebox{ + \resizebox*{ + \renewenvironment{ + \renewcommand{ + \ref{ + \refstepcounter + \raisebox{ + \raggedright + \raggedleft + \qbeziermax + \providecommand{ + \protect + \printindex + \pounds + \part{ + \partopsep + \part[ + \part*{ + \parskip + \parsep + \parindent + \parbox{ + \parbox[ + \paragraph{ + \paragraph[ + \paragraph*{ + \par + \pagestyle{ + \pageref{ + \pagenumbering{ + \pagecolor{ + \pagebreak[ + \pagebreak + \onecolumn + \normalsize + \normalmarginpar + \normalfont + \nopagebreak[ + \nopagebreak + \nonfrenchspacing + \nolinebreak[ + \nolinebreak + \noindent + \nocite{ + \newtheorem{ + \newsavebox{ + \newpage + \newlength{ + \newenvironment{ + \newcounter{ + \newcommand{ + \medskip + \mdseries + \mbox{ + \mbox{ + \mathindent + \mathindent + \markright{ + \markboth{ + \marginpar{ + \marginparwidth + \marginparsep + \marginparpush + \marginpar[ + \maketitle + \makelabel + \makeindex + \makeglossary + \makebox{ + \makebox[ + \listparindent + \listoftables + \listoffigures + \listfiles + \linewidth + \linethickness{ + \linebreak[ + \linebreak + \lengthtest{ + \leftmarginvi + \leftmarginv + \leftmarginiv + \leftmarginiii + \leftmarginii + \leftmargini + \leftmargin + \large + \label{ + \labelwidth + \labelsep + \jot + \itshape + \itemsep + \itemindent + \item[ + \item + \isodd{ + \intextsep + \input{ + \index{ + \indent + \include{ + \includeonly{ + \includegraphics{ + \includegraphics[ + \includegraphics*{ + \includegraphics*[ + \ifthenelse{ + \hyphenation{ + \huge + \hspace{ + \hspace*{ + \hfill + \height + \glossary{ + \fussy + \frenchspacing + \framebox{ + \framebox[ + \fragile + \footnote{ + \footnotetext{ + \footnotetext[ + \footnotesize + \footnotesep + \footnoterule + \footnotemark[ + \footnotemark + \footnote[ + \fnsymbol{ + \floatsep + \floatpagefraction + \fill + \fcolorbox{ + \fbox{ + \fboxsep + \fboxrule + \equal{ + \ensuremath{ + \enlargethispage{ + \enlargethispage*{ + \end{ + \emph{ + \d{ + \doublerulesep + \documentclass{ + \documentclass[ + \depth + \definecolor{ + \ddag + \dbltopfraction + \dbltextfloatsep + \dblfloatsep + \dblfloatpagefraction + \date{ + \dag + \d + \c{ + \copyright + \columnwidth + \columnseprule + \columnsep + \color{ + \colorbox{ + \clearpage + \cleardoublepage + \cite{ + \cite[ + \chapter{ + \chapter[ + \chapter*{ + \centering + \caption{ + \caption[ + \c + \b{ + \bottomnumber + \bottomfraction + \boolean{ + \boldmath{ + \bigskip + \bibliography{ + \bibliographystyle{ + \bibindent + \bfseries + \belowdisplayskip + \belowdisplayshortskip + \begin{ + \baselinestretch + \baselineskip + \b + \author{ + \arraystgretch + \arrayrulewidth + \arraycolsep + \arabic{ + \appendix + \alph{ + \addvspace{ + \addtolength{ + \addtocounter{ + \addtocontents{ + \addcontentsline{ + \abovedisplayskip + \abovedisplayshortskip + \`{ + \` + \_ + \^{ + \^ + \\[ + \\*[ + \\* + \\ + \TeX + \S + \Roman{ + \P + \Large + \LaTeX + \LARGE + \H{ + \Huge + \H + \Alph{ + \@ + \={ + \= + \.{ + \. + \- + \, + \'{ + \' + \& + \% + \$ + \# + \"{ + \" + \ + [ + --- + -- + - + + \ + + + + + __MathMode__ + + + % + } + { + _ + ^ + \zeta + \xi + \wr + \wp + \widetilde{ + \widehat{ + \wedge + \veebar + \vee + \vec{ + \vdots + \vdash + \vartriangleright + \vartriangleleft + \vartriangle + \vartheta + \varsupsetneqq + \varsupsetneq + \varsubsetneqq + \varsubsetneq + \varsigma + \varrho + \varpropto + \varpi + \varphi + \varnothing + \varkappa + \varepsilon + \vDash + \urcorner + \upuparrows + \upsilon + \uplus + \upharpoonright + \upharpoonleft + \updownarrow + \uparrow + \ulcorner + \twoheadrightarrow + \twoheadleftarrow + \trianglerighteq + \triangleright + \triangleq + \trianglelefteq + \triangleleft + \triangledown + \triangle + \top + \times + \tilde{ + \thicksim + \thickapprox + \theta + \therefore + \text{ + \textstyle + \tau + \tanh + \tan + \swarrow + \surd + \supsetneqq + \supsetneq + \supseteqq + \supseteq + \supset + \sum + \succsim + \succnsim + \succnapprox + \succeq + \succcurlyeq + \succapprox + \succ + \subsetneqq + \subsetneq + \subseteqq + \subseteq + \subset + \star + \stackrel{ + \square + \sqsupseteq + \sqsupset + \sqsubseteq + \sqsubset + \sqrt{ + \sqcup + \sqcap + \sphericalangle + \spadesuit + \smile + \smallsmile + \smallsetminus + \smallfrown + \sinh + \sin + \simeq + \sim + \sigma + \shortparallel + \shortmid + \sharp + \setminus + \sec + \searrow + \scriptstyle + \scriptscriptstyle + \rtimes + \risingdotseq + \right| + \rightthreetimes + \rightsquigarrow + \rightrightarrows + \rightrightarrows + \rightleftharpoons + \rightleftharpoons + \rightleftarrows + \rightharpoonup + \rightharpoondown + \rightarrowtail + \rightarrow + \right] + \right\| + \right\updownarrow + \right\uparrow + \right\rfloor + \right\rceil + \right\rangle + \right\lfloor + \right\lceil + \right\langle + \right\downarrow + \right\backslash + \right\Updownarrow + \right\Uparrow + \right\Downarrow + \right\) + \right\( + \right[ + \right/ + \right) + \right( + \rho + \psi + \propto + \prod + \prime + \precsim + \precnsim + \precnapprox + \preceq + \preccurlyeq + \precapprox + \prec + \pmod{ + \pmb{ + \pm + \pitchfork + \pi + \phi + \perp + \partial + \parallel + \overline{ + \otimes + \oslash + \oplus + \ominus + \omega + \oint + \odot + \nwarrow + \nvdash + \nvDash + \nvDash + \nu + \ntrianglerighteq + \ntriangleright + \ntrianglelefteq + \ntriangleleft + \nsupseteqq + \nsupseteq + \nsucceq + \nsucc + \nsubseteq + \nsim + \nshortparallel + \nshortmid + \nrightarrow + \npreceq + \nprec + \nparallel + \notin + \nmid + \nless + \nleqslant + \nleqq + \nleq + \nleftrightarrow + \nleftarrow + \ni + \ngtr + \ngeqslant + \ngeqq + \ngeq + \nexists + \neq + \neg + \nearrow + \ncong + \natural + \nabla + \nVDash + \nRightarrow + \nLeftrightarrow + \nLeftarrow + \multimap + \mu + \mp + \models + \min + \mid + \mho + \measuredangle + \max + \mathtt{ + \mathsf{ + \mathrm{~~ + \mathit{ + \mathcal{ + \mathbf{ + \mapsto + \lvertneqq + \ltimes + \lrcorner + \lozenge + \looparrowright + \looparrowleft + \longrightarrow + \longmapsto + \longleftrightarrow + \longleftarrow + \log + \lnsim + \lneqq + \lneq + \lnapprox + \ln + \lll + \llcorner + \ll + \limsup + \liminf + \lim + \lg + \lesssim + \lessgtr + \lesseqqgtr + \lesseqgtr + \lessdot + \lessapprox + \leqslant + \leqq + \leq + \left| + \leftthreetimes + \leftrightsquigarrow + \leftrightharpoons + \leftrightarrows + \leftrightarrow + \leftleftarrows + \leftharpoonup + \leftharpoondown + \lefteqn{ + \leftarrowtail + \leftarrow + \left] + \left\| + \left\updownarrow + \left\uparrow + \left\rfloor + \left\rceil + \left\rangle + \left\lfloor + \left\lceil + \left\langle + \left\downarrow + \left\backslash + \left\Updownarrow + \left\Uparrow + \left\Downarrow + \left\) + \left\( + \left[ + \left/ + \left) + \left( + \ldots + \lambda + \ker + \kappa + \jmath + \jmath + \iota + \intercal + \int + \infty + \inf + \in + \imath + \imath + \hslash + \hookrightarrow + \hookleftarrow + \hom + \heartsuit + \hbar + \hat{ + \gvertneqq + \gtrsim + \gtrless + \gtreqqless + \gtreqless + \gtrdot + \gtrapprox + \grave{ + \gnsim + \gneqq + \gneq + \gnapprox + \gnapprox + \gimel + \ggg + \gg + \geqslant + \geqq + \geq + \gcd + \gamma + \frown + \frak{ + \frac{ + \forall + \flat + \fallingdotseq + \exp + \exists + \eth + \eta + \equiv + \eqslantless + \eqslantgtr + \eqcirc + \epsilon + \ensuremath{ + \end{ + \emptyset + \ell + \downharpoonright + \downharpoonleft + \downdownarrows + \downarrow + \doublebarwedge + \dot{ + \dotplus + \doteqdot + \doteq + \divideontimes + \div + \displaystyle + \dim + \digamma + \diamondsuit + \diamond + \diagup + \diagdown + \det + \delta + \deg + \ddot{ + \ddots + \ddagger + \dashv + \dashrightarrow + \dashleftarrow + \daleth + \dagger + \curvearrowright + \curvearrowleft + \curlywedge + \curlyvee + \curlyeqsucc + \curlyeqprec + \cup + \csc + \coth + \cot + \cosh + \cos + \coprod + \cong + \complement + \clubsuit + \circleddash + \circledcirc + \circledast + \circledS + \circlearrowright + \circlearrowleft + \circeq + \circ + \chi + \check{ + \centerdot + \cdots + \cdot + \cap + \bumpeq + \bullet + \breve{ + \boxtimes + \boxplus + \boxminus + \boxdot + \bowtie + \bot + \boldsymbol{ + \bmod + \blacktriangleright + \blacktriangleleft + \blacktriangledown + \blacktriangle + \blacksquare + \blacklozenge + \bigwedge + \bigvee + \biguplus + \bigtriangleup + \bigtriangledown + \bigstar + \bigsqcup + \bigotimes + \bigoplus + \bigodot + \bigcup + \bigcirc + \bigcap + \between + \beth + \beta + \begin{ + \because + \bar{ + \barwedge + \backslash + \backsimeq + \backsim + \backprime + \asymp + \ast + \arg + \arctan + \arcsin + \arccos + \approxeq + \approx + \angle + \angle + \amalg + \alpha + \aleph + \acute{ + \Xi + \Vvdash + \Vdash + \Upsilon + \Updownarrow + \Uparrow + \Theta + \Supset + \Subset + \Sigma + \Rsh + \Rightarrow + \Re + \Psi + \Pr + \Pi + \Phi + \Omega + \Lsh + \Longrightarrow + \Longleftrightarrow + \Longleftarrow + \Lleftarrow + \Leftrightarrow + \Leftarrow + \Lambda + \Im + \Gamma + \Game + \Finv + \Downarrow + \Delta + \Cup + \Cap + \Bumpeq + \Bbb{ + \Bbbk + \; + \: + \, + \! + ' + + \begin{array}\end{array} + + \ + + + + + __ArrayMode__ + + + % + } + { + _ + ^ + \zeta + \xi + \wr + \wp + \widetilde{ + \widehat{ + \wedge + \vline + \veebar + \vee + \vec{ + \vdots + \vdash + \vartriangleright + \vartriangleleft + \vartriangle + \vartheta + \varsupsetneqq + \varsupsetneq + \varsubsetneqq + \varsubsetneq + \varsigma + \varrho + \varpropto + \varpi + \varphi + \varnothing + \varkappa + \varepsilon + \vDash + \urcorner + \upuparrows + \upsilon + \uplus + \upharpoonright + \upharpoonleft + \updownarrow + \uparrow + \ulcorner + \twoheadrightarrow + \twoheadleftarrow + \trianglerighteq + \triangleright + \triangleq + \trianglelefteq + \triangleleft + \triangledown + \triangle + \top + \times + \tilde{ + \thicksim + \thickapprox + \theta + \therefore + \text{ + \textstyle + \tau + \tanh + \tan + \swarrow + \surd + \supsetneqq + \supsetneq + \supseteqq + \supseteq + \supset + \sum + \succsim + \succnsim + \succnapprox + \succeq + \succcurlyeq + \succapprox + \succ + \subsetneqq + \subsetneq + \subseteqq + \subseteq + \subset + \star + \stackrel{ + \square + \sqsupseteq + \sqsupset + \sqsubseteq + \sqsubset + \sqrt{ + \sqcup + \sqcap + \sphericalangle + \spadesuit + \smile + \smallsmile + \smallsetminus + \smallfrown + \sinh + \sin + \simeq + \sim + \sigma + \shortparallel + \shortmid + \sharp + \setminus + \sec + \searrow + \scriptstyle + \scriptscriptstyle + \rtimes + \risingdotseq + \right| + \rightthreetimes + \rightsquigarrow + \rightrightarrows + \rightrightarrows + \rightleftharpoons + \rightleftharpoons + \rightleftarrows + \rightharpoonup + \rightharpoondown + \rightarrowtail + \rightarrow + \right] + \right\| + \right\updownarrow + \right\uparrow + \right\rfloor + \right\rceil + \right\rangle + \right\lfloor + \right\lceil + \right\langle + \right\downarrow + \right\backslash + \right\Updownarrow + \right\Uparrow + \right\Downarrow + \right\) + \right\( + \right[ + \right/ + \right) + \right( + \rho + \psi + \propto + \prod + \prime + \precsim + \precnsim + \precnapprox + \preceq + \preccurlyeq + \precapprox + \prec + \pmod{ + \pmb{ + \pm + \pitchfork + \pi + \phi + \perp + \partial + \parallel + \overline{ + \otimes + \oslash + \oplus + \ominus + \omega + \oint + \odot + \nwarrow + \nvdash + \nvDash + \nvDash + \nu + \ntrianglerighteq + \ntriangleright + \ntrianglelefteq + \ntriangleleft + \nsupseteqq + \nsupseteq + \nsucceq + \nsucc + \nsubseteq + \nsim + \nshortparallel + \nshortmid + \nrightarrow + \npreceq + \nprec + \nparallel + \notin + \nmid + \nless + \nleqslant + \nleqq + \nleq + \nleftrightarrow + \nleftarrow + \ni + \ngtr + \ngeqslant + \ngeqq + \ngeq + \nexists + \neq + \neg + \nearrow + \ncong + \natural + \nabla + \nVDash + \nRightarrow + \nLeftrightarrow + \nLeftarrow + \multimap + \multicolumn{ + \mu + \mp + \models + \min + \mid + \mho + \measuredangle + \max + \mathtt{ + \mathsf{ + \mathrm{~~ + \mathit{ + \mathcal{ + \mathbf{ + \mapsto + \lvertneqq + \ltimes + \lrcorner + \lozenge + \looparrowright + \looparrowleft + \longrightarrow + \longmapsto + \longleftrightarrow + \longleftarrow + \log + \lnsim + \lneqq + \lneq + \lnapprox + \ln + \lll + \llcorner + \ll + \limsup + \liminf + \lim + \lg + \lesssim + \lessgtr + \lesseqqgtr + \lesseqgtr + \lessdot + \lessapprox + \leqslant + \leqq + \leq + \left| + \leftthreetimes + \leftrightsquigarrow + \leftrightharpoons + \leftrightarrows + \leftrightarrow + \leftleftarrows + \leftharpoonup + \leftharpoondown + \lefteqn{ + \leftarrowtail + \leftarrow + \left] + \left\| + \left\updownarrow + \left\uparrow + \left\rfloor + \left\rceil + \left\rangle + \left\lfloor + \left\lceil + \left\langle + \left\downarrow + \left\backslash + \left\Updownarrow + \left\Uparrow + \left\Downarrow + \left\) + \left\( + \left[ + \left/ + \left) + \left( + \ldots + \lambda + \ker + \kappa + \jmath + \jmath + \iota + \intercal + \int + \infty + \inf + \in + \imath + \imath + \hslash + \hookrightarrow + \hookleftarrow + \hom + \hline + \heartsuit + \hbar + \hat{ + \gvertneqq + \gtrsim + \gtrless + \gtreqqless + \gtreqless + \gtrdot + \gtrapprox + \grave{ + \gnsim + \gneqq + \gneq + \gnapprox + \gnapprox + \gimel + \ggg + \gg + \geqslant + \geqq + \geq + \gcd + \gamma + \frown + \frak{ + \frac{ + \forall + \flat + \fallingdotseq + \exp + \exists + \eth + \eta + \equiv + \eqslantless + \eqslantgtr + \eqcirc + \epsilon + \ensuremath{ + \end{ + \emptyset + \ell + \downharpoonright + \downharpoonleft + \downdownarrows + \downarrow + \doublebarwedge + \dot{ + \dotplus + \doteqdot + \doteq + \divideontimes + \div + \displaystyle + \dim + \digamma + \diamondsuit + \diamond + \diagup + \diagdown + \det + \delta + \deg + \ddot{ + \ddots + \ddagger + \dashv + \dashrightarrow + \dashleftarrow + \daleth + \dagger + \curvearrowright + \curvearrowleft + \curlywedge + \curlyvee + \curlyeqsucc + \curlyeqprec + \cup + \csc + \coth + \cot + \cosh + \cos + \coprod + \cong + \complement + \clubsuit + \cline{ + \circleddash + \circledcirc + \circledast + \circledS + \circlearrowright + \circlearrowleft + \circeq + \circ + \chi + \check{ + \centerdot + \cdots + \cdot + \cap + \bumpeq + \bullet + \breve{ + \boxtimes + \boxplus + \boxminus + \boxdot + \bowtie + \bot + \boldsymbol{ + \bmod + \blacktriangleright + \blacktriangleleft + \blacktriangledown + \blacktriangle + \blacksquare + \blacklozenge + \bigwedge + \bigvee + \biguplus + \bigtriangleup + \bigtriangledown + \bigstar + \bigsqcup + \bigotimes + \bigoplus + \bigodot + \bigcup + \bigcirc + \bigcap + \between + \beth + \beta + \begin{ + \because + \bar{ + \barwedge + \backslash + \backsimeq + \backsim + \backprime + \asymp + \ast + \arg + \arctan + \arcsin + \arccos + \approxeq + \approx + \angle + \angle + \amalg + \alpha + \aleph + \acute{ + \Xi + \Vvdash + \Vdash + \Upsilon + \Updownarrow + \Uparrow + \Theta + \Supset + \Subset + \Sigma + \Rsh + \Rightarrow + \Re + \Psi + \Pr + \Pi + \Phi + \Omega + \Lsh + \Longrightarrow + \Longleftrightarrow + \Longleftarrow + \Lleftarrow + \Leftrightarrow + \Leftarrow + \Lambda + \Im + \Gamma + \Game + \Finv + \Downarrow + \Delta + \Cup + \Cap + \Bumpeq + \Bbb{ + \Bbbk + \; + \: + \, + \! + ' + & + + \ + + + + + __TabularMode__ + + + % + + + ``'' + `' + "" + + " + ` + ~ + } + { + totalnumber + topnumber + tocdepth + secnumdepth + dbltopnumber + ] + \~{ + \~ + \} + \| + \{ + \width + \whiledo{ + \v{ + \vspace{ + \vspace*{ + \vline + \vfill + \verb* + \verb + \value{ + \v + \u{ + \usepackage{ + \usepackage[ + \usecounter{ + \usebox{ + \upshape + \unboldmath{ + \u + \t{ + \typeout{ + \typein{ + \typein[ + \twocolumn[ + \twocolumn + \ttfamily + \totalheight + \topsep + \topfraction + \today + \title{ + \tiny + \thispagestyle{ + \thinlines + \thicklines + \thanks{ + \textwidth + \textup{ + \texttt{ + \textsl{ + \textsf{ + \textsc{ + \textrm{ + \textnormal{ + \textmd{ + \textit{ + \textfraction + \textfloatsep + \textcolor{ + \textbf{ + \tableofcontents + \tabcolsep + \tabbingsep + \t + \symbol{ + \suppressfloats[ + \suppressfloats + \subsubsection{ + \subsubsection[ + \subsubsection*{ + \subsection{ + \subsection[ + \subsection*{ + \subparagraph{ + \subparagraph[ + \subparagraph*{ + \stretch{ + \stepcounter{ + \smallskip + \small + \slshape + \sloppy + \sffamily + \settowidth{ + \settoheight{ + \settodepth{ + \setlength{ + \setcounter{ + \section{ + \section[ + \section*{ + \scshape + \scriptsize + \scalebox{ + \sbox{ + \savebox{ + \rule{ + \rule[ + \rp,am{ + \rotatebox{ + \rmfamily + \rightmargin + \reversemarginpar + \resizebox{ + \resizebox*{ + \renewenvironment{ + \renewcommand{ + \ref{ + \refstepcounter + \raisebox{ + \raggedright + \raggedleft + \qbeziermax + \providecommand{ + \protect + \printindex + \pounds + \part{ + \partopsep + \part[ + \part*{ + \parskip + \parsep + \parindent + \parbox{ + \parbox[ + \paragraph{ + \paragraph[ + \paragraph*{ + \par + \pagestyle{ + \pageref{ + \pagenumbering{ + \pagecolor{ + \pagebreak[ + \pagebreak + \onecolumn + \normalsize + \normalmarginpar + \normalfont + \nopagebreak[ + \nopagebreak + \nonfrenchspacing + \nolinebreak[ + \nolinebreak + \noindent + \nocite{ + \newtheorem{ + \newsavebox{ + \newpage + \newlength{ + \newenvironment{ + \newcounter{ + \newcommand{ + \multicolumn{ + \medskip + \mdseries + \mbox{ + \mbox{ + \mathindent + \mathindent + \markright{ + \markboth{ + \marginpar{ + \marginparwidth + \marginparsep + \marginparpush + \marginpar[ + \maketitle + \makelabel + \makeindex + \makeglossary + \makebox{ + \makebox[ + \listparindent + \listoftables + \listoffigures + \listfiles + \linewidth + \linethickness{ + \linebreak[ + \linebreak + \lengthtest{ + \leftmarginvi + \leftmarginv + \leftmarginiv + \leftmarginiii + \leftmarginii + \leftmargini + \leftmargin + \large + \label{ + \labelwidth + \labelsep + \jot + \itshape + \itemsep + \itemindent + \item[ + \item + \isodd{ + \intextsep + \input{ + \index{ + \indent + \include{ + \includeonly{ + \includegraphics{ + \includegraphics[ + \includegraphics*{ + \includegraphics*[ + \ifthenelse{ + \hyphenation{ + \huge + \hspace{ + \hspace*{ + \hline + \hfill + \height + \glossary{ + \fussy + \frenchspacing + \framebox{ + \framebox[ + \fragile + \footnote{ + \footnotetext{ + \footnotetext[ + \footnotesize + \footnotesep + \footnoterule + \footnotemark[ + \footnotemark + \footnote[ + \fnsymbol{ + \floatsep + \floatpagefraction + \fill + \fcolorbox{ + \fbox{ + \fboxsep + \fboxrule + \equal{ + \ensuremath{ + \enlargethispage{ + \enlargethispage*{ + \end{ + \emph{ + \d{ + \doublerulesep + \documentclass{ + \documentclass[ + \depth + \definecolor{ + \ddag + \dbltopfraction + \dbltextfloatsep + \dblfloatsep + \dblfloatpagefraction + \date{ + \dag + \d + \c{ + \copyright + \columnwidth + \columnseprule + \columnsep + \color{ + \colorbox{ + \cline{ + \clearpage + \cleardoublepage + \cite{ + \cite[ + \chapter{ + \chapter[ + \chapter*{ + \centering + \caption{ + \caption[ + \c + \b{ + \bottomnumber + \bottomfraction + \boolean{ + \boldmath{ + \bigskip + \bibliography{ + \bibliographystyle{ + \bibindent + \bfseries + \belowdisplayskip + \belowdisplayshortskip + \begin{ + \baselinestretch + \baselineskip + \b + \author{ + \arraystgretch + \arrayrulewidth + \arraycolsep + \arabic{ + \appendix + \alph{ + \addvspace{ + \addtolength{ + \addtocounter{ + \addtocontents{ + \addcontentsline{ + \abovedisplayskip + \abovedisplayshortskip + \`{ + \` + \_ + \^{ + \^ + \\[ + \\*[ + \\* + \\ + \TeX + \S + \Roman{ + \P + \Large + \LaTeX + \LARGE + \H{ + \Huge + \H + \Alph{ + \@ + \={ + \= + \.{ + \. + \- + \, + \'{ + \' + \& + \% + \$ + \# + \"{ + \" + \ + [ + --- + -- + - + & + + \ + + + + + __TabbingMode__ + + + % + + + ``'' + `' + "" + + " + ` + ~ + } + { + totalnumber + topnumber + tocdepth + secnumdepth + dbltopnumber + ] + \~{ + \~ + \} + \| + \{ + \width + \whiledo{ + \v{ + \vspace{ + \vspace*{ + \vfill + \verb* + \verb + \value{ + \v + \u{ + \usepackage{ + \usepackage[ + \usecounter{ + \usebox{ + \upshape + \unboldmath{ + \u + \t{ + \typeout{ + \typein{ + \typein[ + \twocolumn[ + \twocolumn + \ttfamily + \totalheight + \topsep + \topfraction + \today + \title{ + \tiny + \thispagestyle{ + \thinlines + \thicklines + \thanks{ + \textwidth + \textup{ + \texttt{ + \textsl{ + \textsf{ + \textsc{ + \textrm{ + \textnormal{ + \textmd{ + \textit{ + \textfraction + \textfloatsep + \textcolor{ + \textbf{ + \tableofcontents + \tabcolsep + \tabbingsep + \t + \symbol{ + \suppressfloats[ + \suppressfloats + \subsubsection{ + \subsubsection[ + \subsubsection*{ + \subsection{ + \subsection[ + \subsection*{ + \subparagraph{ + \subparagraph[ + \subparagraph*{ + \stretch{ + \stepcounter{ + \smallskip + \small + \slshape + \sloppy + \sffamily + \settowidth{ + \settoheight{ + \settodepth{ + \setlength{ + \setcounter{ + \section{ + \section[ + \section*{ + \scshape + \scriptsize + \scalebox{ + \sbox{ + \savebox{ + \rule{ + \rule[ + \rp,am{ + \rotatebox{ + \rmfamily + \rightmargin + \reversemarginpar + \resizebox{ + \resizebox*{ + \renewenvironment{ + \renewcommand{ + \ref{ + \refstepcounter + \raisebox{ + \raggedright + \raggedleft + \qbeziermax + \pushtabs + \providecommand{ + \protect + \printindex + \pounds + \poptabs + \part{ + \partopsep + \part[ + \part*{ + \parskip + \parsep + \parindent + \parbox{ + \parbox[ + \paragraph{ + \paragraph[ + \paragraph*{ + \par + \pagestyle{ + \pageref{ + \pagenumbering{ + \pagecolor{ + \pagebreak[ + \pagebreak + \onecolumn + \normalsize + \normalmarginpar + \normalfont + \nopagebreak[ + \nopagebreak + \nonfrenchspacing + \nolinebreak[ + \nolinebreak + \noindent + \nocite{ + \newtheorem{ + \newsavebox{ + \newpage + \newlength{ + \newenvironment{ + \newcounter{ + \newcommand{ + \medskip + \mdseries + \mbox{ + \mbox{ + \mathindent + \mathindent + \markright{ + \markboth{ + \marginpar{ + \marginparwidth + \marginparsep + \marginparpush + \marginpar[ + \maketitle + \makelabel + \makeindex + \makeglossary + \makebox{ + \makebox[ + \listparindent + \listoftables + \listoffigures + \listfiles + \linewidth + \linethickness{ + \linebreak[ + \linebreak + \lengthtest{ + \leftmarginvi + \leftmarginv + \leftmarginiv + \leftmarginiii + \leftmarginii + \leftmargini + \leftmargin + \large + \label{ + \labelwidth + \labelsep + \kill + \jot + \itshape + \itemsep + \itemindent + \item[ + \item + \isodd{ + \intextsep + \input{ + \index{ + \indent + \include{ + \includeonly{ + \includegraphics{ + \includegraphics[ + \includegraphics*{ + \includegraphics*[ + \ifthenelse{ + \hyphenation{ + \huge + \hspace{ + \hspace*{ + \hfill + \height + \glossary{ + \fussy + \frenchspacing + \framebox{ + \framebox[ + \fragile + \footnote{ + \footnotetext{ + \footnotetext[ + \footnotesize + \footnotesep + \footnoterule + \footnotemark[ + \footnotemark + \footnote[ + \fnsymbol{ + \floatsep + \floatpagefraction + \fill + \fcolorbox{ + \fbox{ + \fboxsep + \fboxrule + \equal{ + \ensuremath{ + \enlargethispage{ + \enlargethispage*{ + \end{ + \emph{ + \d{ + \doublerulesep + \documentclass{ + \documentclass[ + \depth + \definecolor{ + \ddag + \dbltopfraction + \dbltextfloatsep + \dblfloatsep + \dblfloatpagefraction + \date{ + \dag + \d + \c{ + \copyright + \columnwidth + \columnseprule + \columnsep + \color{ + \colorbox{ + \clearpage + \cleardoublepage + \cite{ + \cite[ + \chapter{ + \chapter[ + \chapter*{ + \centering + \caption{ + \caption[ + \c + \b{ + \bottomnumber + \bottomfraction + \boolean{ + \boldmath{ + \bigskip + \bibliography{ + \bibliographystyle{ + \bibindent + \bfseries + \belowdisplayskip + \belowdisplayshortskip + \begin{ + \baselinestretch + \baselineskip + \b + \author{ + \arraystgretch + \arrayrulewidth + \arraycolsep + \arabic{ + \appendix + \alph{ + \addvspace{ + \addtolength{ + \addtocounter{ + \addtocontents{ + \addcontentsline{ + \abovedisplayskip + \abovedisplayshortskip + \a` + \a= + \a' + \`{ + \` + \` + \_ + \^{ + \^ + \\[ + \\*[ + \\* + \\ + \\ + \TeX + \S + \Roman{ + \P + \Large + \LaTeX + \LARGE + \H{ + \Huge + \H + \Alph{ + \@ + \={ + \= + \= + \.{ + \. + \- + \- + \, + \+ + \'{ + \' + \' + \< + \> + \& + \% + \$ + \# + \"{ + \" + \ + [ + --- + -- + - + + \ + + + + + __PictureMode__ + + + % + \vector( + \thinlines + \thicklines + \shortstack{ + \shortstack[ + \savebox{ + \qbezier[ + \qbezier( + \put( + \oval[ + \oval( + \multiput( + \makebox( + \linethickness{ + \line( + \graphpaper[ + \graphpaper( + \frame{ + \framebox( + \dashbox{ + \circle{ + \circle*{ + + \ + + + + + + + + + + + + + + + + diff --git a/extra/xmode/modes/lilypond.xml b/extra/xmode/modes/lilypond.xml new file mode 100644 index 0000000000..ca72fae0bc --- /dev/null +++ b/extra/xmode/modes/lilypond.xml @@ -0,0 +1,819 @@ + + + + + + + + + + + + + + + + + + + + %{%} + + % + + \breve + \longa + \maxima + = + = + { + } + [ + ] + << + >> + -< + -> + > + < + | + "(\\"|[^\\"]|\\)+" + "" + + + + + ' + , + + + + [rRs]\d*\b + R\d*\b + s\d*\b + + \d+\b + + . + + + + \\override\b + \\version\b + \\include\b + \\invalid\b + \\addquote\b + \\alternative\b + \\book\b + \\~\b + \\mark\b + \\default\b + \\key\b + \\skip\b + \\octave\b + \\partial\b + \\time\b + \\change\b + \\consists\b + \\remove\b + \\accepts\b + \\defaultchild\b + \\denies\b + \\alias\b + \\type\b + \\description\b + \\name\b + \\context\b + \\grobdescriptions\b + \\markup\b + \\header\b + \\notemode\b + \\drummode\b + \\figuremode\b + \\chordmode\b + \\lyricmode\b + \\drums\b + \\figures\b + \\chords\b + \\lyrics\b + \\once\b + \\revert\b + \\set\b + \\unset\b + \\addlyrics\b + \\objectid\b + \\with\b + \\rest\b + \\paper\b + \\midi\b + \\layout\b + \\new\b + \\times\b + \\transpose\b + \\tag\b + \\relative\b + \\renameinput\b + \\repeat\b + \\lyricsto\b + \\score\b + \\sequential\b + \\simultaneous\b + \\longa\b + \\breve\b + \\maxima\b + \\tempo\b + + \\AncientRemoveEmptyStaffContext\b + \\RemoveEmptyRhythmicStaffContext\b + \\RemoveEmptyStaffContext\b + \\accent\b + \\aeolian\b + \\afterGraceFraction\b + \\aikenHeads\b + \\allowPageTurn\b + \\arpeggio\b + \\arpeggioBracket\b + \\arpeggioDown\b + \\arpeggioNeutral\b + \\arpeggioUp\b + \\autoBeamOff\b + \\autoBeamOn\b + \\between-system-padding\b + \\between-system-space\b + \\bigger\b + \\blackTriangleMarkup\b + \\bookTitleMarkup\b + \\bracketCloseSymbol\b + \\bracketOpenSymbol\b + \\break\b + \\breve\b + \\cadenzaOff\b + \\cadenzaOn\b + \\center\b + \\chordmodifiers\b + \\cm\b + \\coda\b + \\cr\b + \\cresc\b + \\decr\b + \\dim\b + \\dorian\b + \\dotsDown\b + \\dotsNeutral\b + \\dotsUp\b + \\down\b + \\downbow\b + \\downmordent\b + \\downprall\b + \\drumPitchNames\b + \\dutchPitchnames\b + \\dynamicDown\b + \\dynamicNeutral\b + \\dynamicUp\b + \\emptyText\b + \\endcr\b + \\endcresc\b + \\enddecr\b + \\enddim\b + \\endincipit\b + \\escapedBiggerSymbol\b + \\escapedExclamationSymbol\b + \\escapedParenthesisCloseSymbol\b + \\escapedParenthesisOpenSymbol\b + \\escapedSmallerSymbol\b + \\espressivo\b + \\evenHeaderMarkup\b + \\f\b + \\fatText\b + \\fermata\b + \\fermataMarkup\b + \\ff\b + \\fff\b + \\ffff\b + \\first-page-number\b + \\flageolet\b + \\fp\b + \\frenchChords\b + \\fullJazzExceptions\b + \\fz\b + \\germanChords\b + \\glissando\b + \\harmonic\b + \\hideNotes\b + \\hideStaffSwitch\b + \\ignatzekExceptionMusic\b + \\ignatzekExceptions\b + \\improvisationOff\b + \\improvisationOn\b + \\in\b + \\input-encoding\b + \\instrument-definitions\b + \\ionian\b + \\italianChords\b + \\laissezVibrer\b + \\left\b + \\lheel\b + \\lineprall\b + \\locrian\b + \\longa\b + \\longfermata\b + \\ltoe\b + \\lydian\b + \\major\b + \\marcato\b + \\maxima\b + \\melisma\b + \\melismaEnd\b + \\mf\b + \\midiDrumPitches\b + \\minor\b + \\mixolydian\b + \\mm\b + \\mordent\b + \\mp\b + \\newSpacingSection\b + \\noBeam\b + \\noBreak\b + \\noPageBreak\b + \\noPageTurn\b + \\normalsize\b + \\oddFooterMarkup\b + \\oddHeaderMarkup\b + \\oneVoice\b + \\open\b + \\output-scale\b + \\p\b + \\page-top-space\b + \\pageBreak\b + \\pageTurn\b + \\parenthesisCloseSymbol\b + \\parenthesisOpenSymbol\b + \\partialJazzExceptions\b + \\partialJazzMusic\b + \\phrasingSlurDown\b + \\phrasingSlurNeutral\b + \\phrasingSlurUp\b + \\phrygian\b + \\pipeSymbol\b + \\pitchnames\b + \\portato\b + \\pp\b + \\ppp\b + \\pppp\b + \\ppppp\b + \\prall\b + \\pralldown\b + \\prallmordent\b + \\prallprall\b + \\prallup\b + \\print-first-page-number\b + \\print-page-number\b + \\pt\b + \\ragged-bottom\b + \\ragged-last-bottom\b + \\repeatTie\b + \\reverseturn\b + \\rfz\b + \\rheel\b + \\right\b + \\rtoe\b + \\sacredHarpHeads\b + \\scoreTitleMarkup\b + \\segno\b + \\semiGermanChords\b + \\setDefaultDurationToQuarter\b + \\setEasyHeads\b + \\setHairpinCresc\b + \\setHairpinDecresc\b + \\setHairpinDim\b + \\setTextCresc\b + \\setTextDecresc\b + \\setTextDim\b + \\sf\b + \\sff\b + \\sfp\b + \\sfz\b + \\shiftOff\b + \\shiftOn\b + \\shiftOnn\b + \\shiftOnnn\b + \\shortfermata\b + \\showStaffSwitch\b + \\signumcongruentiae\b + \\slashSeparator\b + \\slurDashed\b + \\slurDotted\b + \\slurDown\b + \\slurNeutral\b + \\slurSolid\b + \\slurUp\b + \\small\b + \\smaller\b + \\sostenutoDown\b + \\sostenutoUp\b + \\sp\b + \\spp\b + \\staccatissimo\b + \\staccato\b + \\start\b + \\startAcciaccaturaMusic\b + \\startAppoggiaturaMusic\b + \\startGraceMusic\b + \\startGroup\b + \\startStaff\b + \\startTextSpan\b + \\startTrillSpan\b + \\stemDown\b + \\stemNeutral\b + \\stemUp\b + \\stop\b + \\stopAcciaccaturaMusic\b + \\stopAppoggiaturaMusic\b + \\stopGraceMusic\b + \\stopGroup\b + \\stopStaff\b + \\stopTextSpan\b + \\stopTrillSpan\b + \\stopped\b + \\sustainDown\b + \\sustainUp\b + \\tagline\b + \\tenuto\b + \\textSpannerDown\b + \\textSpannerNeutral\b + \\textSpannerUp\b + \\thumb\b + \\tieDashed\b + \\tieDotted\b + \\tieDown\b + \\tieNeutral\b + \\tieSolid\b + \\tieUp\b + \\tildeSymbol\b + \\tiny\b + \\treCorde\b + \\trill\b + \\tupletDown\b + \\tupletNeutral\b + \\tupletUp\b + \\turn\b + \\unHideNotes\b + \\unaCorda\b + \\unit\b + \\up\b + \\upbow\b + \\upmordent\b + \\upprall\b + \\varcoda\b + \\verylongfermata\b + \\voiceFour\b + \\voiceOne\b + \\voiceThree\b + \\voiceTwo\b + \\whiteTriangleMarkup\b + + \\acciaccatura\b + \\addInstrumentDefinition\b + \\addquote\b + \\afterGrace\b + \\applyContext\b + \\applyMusic\b + \\applyOutput\b + \\appoggiatura\b + \\assertBeamQuant\b + \\assertBeamSlope\b + \\autochange\b + \\balloonGrobText\b + \\balloonText\b + \\bar\b + \\barNumberCheck\b + \\bendAfter\b + \\breathe\b + \\clef\b + \\compressMusic\b + \\cueDuring\b + \\displayLilyMusic\b + \\displayMusic\b + \\featherDurations\b + \\grace\b + \\includePageLayoutFile\b + \\instrumentSwitch\b + \\keepWithTag\b + \\killCues\b + \\makeClusters\b + \\musicMap\b + \\octave\b + \\oldaddlyrics\b + \\overrideProperty\b + \\parallelMusic\b + \\parenthesize\b + \\partcombine\b + \\pitchedTrill\b + \\quoteDuring\b + \\removeWithTag\b + \\resetRelativeOctave\b + \\rightHandFinger\b + \\scoreTweak\b + \\shiftDurations\b + \\spacingTweaks\b + \\tag\b + \\transposedCueDuring\b + \\transposition\b + \\tweak\b + \\unfoldRepeats\b + \\withMusicProperty\b + + \\arrow-head\b + \\beam\b + \\bigger\b + \\bold\b + \\box\b + \\bracket\b + \\bracketed-y-column\b + \\caps\b + \\center-align\b + \\char\b + \\circle\b + \\column\b + \\combine\b + \\dir-column\b + \\doubleflat\b + \\doublesharp\b + \\draw-circle\b + \\dynamic\b + \\epsfile\b + \\fill-line\b + \\filled-box\b + \\finger\b + \\flat\b + \\fontCaps\b + \\fontsize\b + \\fraction\b + \\fret-diagram\b + \\fret-diagram-terse\b + \\fret-diagram-verbose\b + \\fromproperty\b + \\general-align\b + \\halign\b + \\hbracket\b + \\hcenter\b + \\hcenter-in\b + \\hspace\b + \\huge\b + \\italic\b + \\justify\b + \\justify-field\b + \\justify-string\b + \\large\b + \\left-align\b + \\line\b + \\lookup\b + \\lower\b + \\magnify\b + \\markalphabet\b + \\markletter\b + \\medium\b + \\musicglyph\b + \\natural\b + \\normal-size-sub\b + \\normal-size-super\b + \\normal-text\b + \\normalsize\b + \\note\b + \\note-by-number\b + \\null\b + \\number\b + \\on-the-fly\b + \\override\b + \\pad-around\b + \\pad-markup\b + \\pad-to-box\b + \\pad-x\b + \\postscript\b + \\put-adjacent\b + \\raise\b + \\right-align\b + \\roman\b + \\rotate\b + \\sans\b + \\score\b + \\semiflat\b + \\semisharp\b + \\sesquiflat\b + \\sesquisharp\b + \\sharp\b + \\simple\b + \\slashed-digit\b + \\small\b + \\smallCaps\b + \\smaller\b + \\stencil\b + \\strut\b + \\sub\b + \\super\b + \\teeny\b + \\text\b + \\tied-lyric\b + \\tiny\b + \\translate\b + \\translate-scaled\b + \\transparent\b + \\triangle\b + \\typewriter\b + \\upright\b + \\vcenter\b + \\verbatim-file\b + \\whiteout\b + \\with-color\b + \\with-dimensions\b + \\with-url\b + \\wordwrap\b + \\wordwrap-field\b + \\wordwrap-string\b +\ + + staff-spacing-interface + text-script-interface + Ottava_spanner_engraver + Figured_bass_engraver + Lyrics + Separating_line_group_engraver + cluster-interface + Glissando_engraver + key-signature-interface + clef-interface + VaticanaVoice + Rest_collision_engraver + Grace_engraver + grid-point-interface + Measure_grouping_engraver + Laissez_vibrer_engraver + Script_row_engraver + bass-figure-alignment-interface + Note_head_line_engraver + ottava-bracket-interface + rhythmic-head-interface + Accidental_engraver + Mark_engraver + hara-kiri-group-interface + Instrument_name_engraver + Vaticana_ligature_engraver + Page_turn_engraver + staff-symbol-interface + Beam_performer + accidental-suggestion-interface + Key_engraver + GrandStaff + multi-measure-interface + rest-collision-interface + Dot_column_engraver + MensuralVoice + TabStaff + Pitched_trill_engraver + line-spanner-interface + Time_signature_performer + lyric-interface + StaffGroup + text-interface + slur-interface + Drum_note_performer + TabVoice + measure-grouping-interface + stanza-number-interface + self-alignment-interface + Span_arpeggio_engraver + system-interface + Engraver + RhythmicStaff + font-interface + fret-diagram-interface + Grace_spacing_engraver + Bar_engraver + Dynamic_engraver + Grob_pq_engraver + Default_bar_line_engraver + Swallow_performer + script-column-interface + Piano_pedal_performer + metronome-mark-interface + melody-spanner-interface + FretBoards + spacing-spanner-interface + Control_track_performer + Break_align_engraver + paper-column-interface + PianoStaff + Breathing_sign_engraver + accidental-placement-interface + Tuplet_engraver + stroke-finger-interface + side-position-interface + note-name-interface + bar-line-interface + lyric-extender-interface + Staff + GregorianTranscriptionStaff + Rest_swallow_translator + dynamic-text-spanner-interface + arpeggio-interface + Cluster_spanner_engraver + Collision_engraver + accidental-interface + rest-interface + Tab_note_heads_engraver + dots-interface + staff-symbol-referencer-interface + ambitus-interface + bass-figure-interface + vaticana-ligature-interface + ledgered-interface + item-interface + Tie_performer + volta-bracket-interface + vertically-spaceable-interface + ledger-line-interface + Chord_tremolo_engraver + note-column-interface + DrumVoice + axis-group-interface + Ledger_line_engraver + Slash_repeat_engraver + ligature-bracket-interface + Pitch_squash_engraver + Instrument_switch_engraver + Voice + Script_column_engraver + Volta_engraver + Stanza_number_align_engraver + Vertical_align_engraver + span-bar-interface + Staff_collecting_engraver + Ligature_bracket_engraver + Time_signature_engraver + Beam_engraver + Note_name_engraver + Note_heads_engraver + Forbid_line_break_engraver + spacing-options-interface + spacing-interface + Span_dynamic_performer + piano-pedal-script-interface + MensuralStaff + Global + trill-pitch-accidental-interface + grob-interface + Horizontal_bracket_engraver + Grid_line_span_engraver + NoteNames + piano-pedal-interface + Axis_group_engraver + Staff_symbol_engraver + stem-interface + Slur_engraver + pitched-trill-interface + tie-column-interface + stem-tremolo-interface + Grid_point_engraver + System_start_delimiter_engraver + Completion_heads_engraver + Drum_notes_engraver + Swallow_engraver + Slur_performer + lyric-hyphen-interface + Clef_engraver + dynamic-interface + Score + Output_property_engraver + Repeat_tie_engraver + Rest_engraver + break-aligned-interface + String_number_engraver + only-prebreak-interface + Lyric_engraver + Tempo_performer + Parenthesis_engraver + Repeat_acknowledge_engraver + mensural-ligature-interface + align-interface + Stanza_number_engraver + system-start-delimiter-interface + lyric-syllable-interface + bend-after-interface + dynamic-line-spanner-interface + Staff_performer + Bar_number_engraver + Fretboard_engraver + tablature-interface + Fingering_engraver + chord-name-interface + Note_swallow_translator + Chord_name_engraver + note-head-interface + breathing-sign-interface + Extender_engraver + Ambitus_engraver + DrumStaff + dot-column-interface + Lyric_performer + enclosing-bracket-interface + Trill_spanner_engraver + Key_performer + Vertically_spaced_contexts_engraver + hairpin-interface + Hyphen_engraver + Dots_engraver + multi-measure-rest-interface + break-alignment-align-interface + Multi_measure_rest_engraver + InnerStaffGroup + text-spanner-interface + Grace_beam_engraver + separation-item-interface + Balloon_engraver + Translator + separation-spanner-interface + Tweak_engraver + Devnull + Bend_after_engraver + Spacing_engraver + Piano_pedal_align_engraver + system-start-text-interface + parentheses-interface + Melisma_translator + ChoirStaff + Span_bar_engraver + Text_engraver + GregorianTranscriptionVoice + Timing_translator + script-interface + semi-tie-interface + Percent_repeat_engraver + Tab_staff_symbol_engraver + line-interface + rhythmic-grob-interface + Dynamic_performer + note-spacing-interface + spanner-interface + break-alignment-interface + tuplet-number-interface + Rhythmic_column_engraver + cluster-beacon-interface + horizontal-bracket-interface + Mensural_ligature_engraver + ChordNames + gregorian-ligature-interface + Melody_engraver + ligature-interface + Paper_column_engraver + FiguredBass + grace-spacing-interface + tie-interface + New_fingering_engraver + Script_engraver + Metronome_mark_engraver + string-number-interface + Hara_kiri_engraver + grid-line-interface + Skip_event_swallow_translator + Auto_beam_engraver + spaceable-grob-interface + Font_size_engraver + figured-bass-continuation-interface + semi-tie-column-interface + CueVoice + Phrasing_slur_engraver + InnerChoirStaff + Arpeggio_engraver + mark-interface + VaticanaStaff + piano-pedal-bracket-interface + beam-interface + Note_performer + custos-interface + percent-repeat-interface + time-signature-interface + Custos_engraver + Part_combine_engraver + Piano_pedal_engraver + tuplet-bracket-interface + Stem_engraver + finger-interface + note-collision-interface + Text_spanner_engraver + text-balloon-interface + Tie_engraver + Figured_bass_position_engraver + + + + + + diff --git a/extra/xmode/modes/lisp.xml b/extra/xmode/modes/lisp.xml new file mode 100644 index 0000000000..86983d7c53 --- /dev/null +++ b/extra/xmode/modes/lisp.xml @@ -0,0 +1,1038 @@ + + + + + + + + + + + + + + + + + + + #| + |# + + + '( + + ' + + & + + ` + @ + % + + + ;;;; + ;;; + ;; + ; + + + " + " + + + + + defclass + defconstant + defgeneric + define-compiler-macro + define-condition + define-method-combination + define-modify-macro + define-setf-expander + define-symbol-macro + defmacro + defmethod + defpackage + defparameter + defsetf + defstruct + deftype + defun + defvar + + abort + assert + block + break + case + catch + ccase + cerror + cond + ctypecase + declaim + declare + do + do* + do-all-symbols + do-external-symbols + do-symbols + dolist + dotimes + ecase + error + etypecase + eval-when + flet + handler-bind + handler-case + if + ignore-errors + in-package + labels + lambda + let + let* + locally + loop + macrolet + multiple-value-bind + proclaim + prog + prog* + prog1 + prog2 + progn + progv + provide + require + restart-bind + restart-case + restart-name + return + return-from + signal + symbol-macrolet + tagbody + the + throw + typecase + unless + unwind-protect + when + with-accessors + with-compilation-unit + with-condition-restarts + with-hash-table-iterator + with-input-from-string + with-open-file + with-open-stream + with-output-to-string + with-package-iterator + with-simple-restart + with-slots + with-standard-io-syntax + + * + ** + *** + *break-on-signals* + *compile-file-pathname* + *compile-file-truename* + *compile-print* + *compile-verbose* + *debug-io* + *debugger-hook* + *default-pathname-defaults* + *error-output* + *features* + *gensym-counter* + *load-pathname* + *load-print* + *load-truename* + *load-verbose* + *macroexpand-hook* + *modules* + *package* + *print-array* + *print-base* + *print-case* + *print-circle* + *print-escape* + *print-gensym* + *print-length* + *print-level* + *print-lines* + *print-miser-width* + *print-pprint-dispatch* + *print-pretty* + *print-radix* + *print-readably* + *print-right-margin* + *query-io* + *random-state* + *read-base* + *read-default-float-format* + *read-eval* + *read-suppress* + *readtable* + *standard-input* + *standard-output* + *terminal-io* + *trace-output* + + + ++ + +++ + - + / + // + /// + /= + 1+ + 1- + < + <= + = + > + >= + abs + acons + acos + acosh + add-method + adjoin + adjust-array + adjustable-array-p + allocate-instance + alpha-char-p + alphanumericp + and + append + apply + apropos + apropos-list + aref + arithmetic-error + arithmetic-error-operands + arithmetic-error-operation + array + array-dimension + array-dimension-limit + array-dimensions + array-displacement + array-element-type + array-has-fill-pointer-p + array-in-bounds-p + array-rank + array-rank-limit + array-row-major-index + array-total-size + array-total-size-limit + arrayp + ash + asin + asinh + assoc + assoc-if + assoc-if-not + atan + atanh + atom + base-char + base-string + bignum + bit + bit-and + bit-andc1 + bit-andc2 + bit-eqv + bit-ior + bit-nand + bit-nor + bit-not + bit-orc1 + bit-orc2 + bit-vector + bit-vector-p + bit-xor + boole + boole-1 + boole-2 + boole-and + boole-andc1 + boole-andc2 + boole-c1 + boole-c2 + boole-clr + boole-eqv + boole-ior + boole-nand + boole-nor + boole-orc1 + boole-orc2 + boole-set + boole-xor + boolean + both-case-p + boundp + broadcast-stream + broadcast-stream-streams + built-in-class + butlast + byte + byte-position + byte-size + caaaar + caaadr + caaar + caadar + caaddr + caadr + caar + cadaar + cadadr + cadar + caddar + cadddr + caddr + cadr + call-arguments-limit + call-method + call-next-method + car + cdaaar + cdaadr + cdaar + cdadar + cdaddr + cdadr + cdar + cddaar + cddadr + cddar + cdddar + cddddr + cdddr + cddr + cdr + ceiling + cell-error + cell-error-name + change-class + char + char-code + char-code-limit + char-downcase + char-equal + char-greaterp + char-int + char-lessp + char-name + char-not-equal + char-not-greaterp + char-not-lessp + char-upcase + char/= + char> + char>= + char< + char<= + char= + character + characterp + check-type + cis + class + class-name + class-of + clear-input + clear-output + close + clrhash + code-char + coerce + compilation-speed + compile + compile-file + compile-file-pathname + compiled-function + compiled-function-p + compiler-macro + compiler-macro-function + complement + complex + complexp + compute-applicable-methods + compute-restarts + concatenate + concatenated-stream + concatenated-stream-streams + condition + conjugate + cons + consp + constantly + constantp + continue + control-error + copy-alist + copy-list + copy-pprint-dispatch + copy-readtable + copy-seq + copy-structure + copy-symbol + copy-tree + cos + cosh + count + count-if + count-if-not + debug + decf + declaration + decode-float + decode-universal-time + delete + delete-duplicates + delete-file + delete-if + delete-if-not + delete-package + denominator + deposit-field + describe + describe-object + destructuring-bind + digit-char + digit-char-p + directory + directory-namestring + disassemble + division-by-zero + documentation + double-float + double-float-epsilon + double-float-negative-epsilon + dpb + dribble + dynamic-extent + echo-stream + echo-stream-input-stream + echo-stream-output-stream + ed + eighth + elt + encode-universal-time + end-of-file + endp + enough-namestring + ensure-directories-exist + ensure-generic-function + eq + eql + equal + equalp + eval + evenp + every + exp + export + expt + extended-char + fboundp + fceiling + fdefinition + ffloor + fifth + file-author + file-error + file-error-pathname + file-length + file-namestring + file-position + file-stream + file-string-length + file-write-date + fill + fill-pointer + find + find-all-symbols + find-class + find-if + find-if-not + find-method + find-package + find-restart + find-symbol + finish-output + first + fixnum + float + float-digits + float-precision + float-radix + float-sign + floating-point-inexact + floating-point-invalid-operation + floating-point-overflow + floating-point-underflow + floatp + floor + fmakunbound + force-output + format + formatter + fourth + fresh-line + fround + ftruncate + ftype + funcall + function + function-keywords + function-lambda-expression + functionp + gcd + generic-function + gensym + gentemp + get + get-decoded-time + get-dispatch-macro-character + get-internal-real-time + get-internal-run-time + get-macro-character + get-output-stream-string + get-properties + get-setf-expansion + get-universal-time + getf + gethash + go + graphic-char-p + hash-table + hash-table-count + hash-table-p + hash-table-rehash-size + hash-table-rehash-threshold + hash-table-size + hash-table-test + host-namestring + identity + ignorable + ignore + imagpart + import + incf + initialize-instance + inline + input-stream-p + inspect + integer + integer-decode-float + integer-length + integerp + interactive-stream-p + intern + internal-time-units-per-second + intersection + invalid-method-error + invoke-debugger + invoke-restart + invoke-restart-interactively + isqrt + keyword + keywordp + lambda-list-keywords + lambda-parameters-limit + last + lcm + ldb + ldb-test + ldiff + least-negative-double-float + least-negative-long-float + least-negative-normalized-double-float + least-negative-normalized-long-float + least-negative-normalized-short-float + least-negative-normalized-single-float + least-negative-short-float + least-negative-single-float + least-positive-double-float + least-positive-long-float + least-positive-normalized-double-float + least-positive-normalized-long-float + least-positive-normalized-short-float + least-positive-normalized-single-float + least-positive-short-float + least-positive-single-float + length + lisp-implementation-type + lisp-implementation-version + list + list* + list-all-packages + list-length + listen + listp + load + load-logical-pathname-translations + load-time-value + log + logand + logandc1 + logandc2 + logbitp + logcount + logeqv + logical-pathname + logical-pathname-translations + logior + lognand + lognor + lognot + logorc1 + logorc2 + logtest + logxor + long-float + long-float-epsilon + long-float-negative-epsilon + long-site-name + loop-finish + lower-case-p + machine-instance + machine-type + machine-version + macro-function + macroexpand + macroexpand-1 + make-array + make-broadcast-stream + make-concatenated-stream + make-condition + make-dispatch-macro-character + make-echo-stream + make-hash-table + make-instance + make-instances-obsolete + make-list + make-load-form + make-load-form-saving-slots + make-method + make-package + make-pathname + make-random-state + make-sequence + make-string + make-string-input-stream + make-string-output-stream + make-symbol + make-synonym-stream + make-two-way-stream + makunbound + map + map-into + mapc + mapcan + mapcar + mapcon + maphash + mapl + maplist + mask-field + max + member + member-if + member-if-not + merge + merge-pathnames + method + method-combination + method-combination-error + method-qualifiers + min + minusp + mismatch + mod + most-negative-double-float + most-negative-fixnum + most-negative-long-float + most-negative-short-float + most-negative-single-float + most-positive-double-float + most-positive-fixnum + most-positive-long-float + most-positive-short-float + most-positive-single-float + muffle-warning + multiple-value-call + multiple-value-list + multiple-value-prog1 + multiple-value-setq + multiple-values-limit + name-char + namestring + nbutlast + nconc + next-method-p + nintersection + ninth + no-applicable-method + no-next-method + not + notany + notevery + notinline + nreconc + nreverse + nset-difference + nset-exclusive-or + nstring-capitalize + nstring-downcase + nstring-upcase + nsublis + nsubst + nsubst-if + nsubst-if-not + nsubstitute + nsubstitute-if + nsubstitute-if-not + nth + nth-value + nthcdr + null + number + numberp + numerator + nunion + oddp + open + open-stream-p + optimize + or + otherwise + output-stream-p + package + package-error + package-error-package + package-name + package-nicknames + package-shadowing-symbols + package-use-list + package-used-by-list + packagep + pairlis + parse-error + parse-integer + parse-namestring + pathname + pathname-device + pathname-directory + pathname-host + pathname-match-p + pathname-name + pathname-type + pathname-version + pathnamep + peek-char + phase + pi + plusp + pop + position + position-if + position-if-not + pprint + pprint-dispatch + pprint-exit-if-list-exhausted + pprint-fill + pprint-indent + pprint-linear + pprint-logical-block + pprint-newline + pprint-pop + pprint-tab + pprint-tabular + prin1 + prin1-to-string + princ + princ-to-string + print + print-not-readable + print-not-readable-object + print-object + print-unreadable-object + probe-file + program-error + psetf + psetq + push + pushnew + quote + random + random-state + random-state-p + rassoc + rassoc-if + rassoc-if-not + ratio + rational + rationalize + rationalp + read + read-byte + read-char + read-char-no-hang + read-delimited-list + read-from-string + read-line + read-preserving-whitespace + read-sequence + reader-error + readtable + readtable-case + readtablep + real + realp + realpart + reduce + reinitialize-instance + rem + remf + remhash + remove + remove-duplicates + remove-if + remove-if-not + remove-method + remprop + rename-file + rename-package + replace + rest + restart + revappend + reverse + room + rotatef + round + row-major-aref + rplaca + rplacd + safety + satisfies + sbit + scale-float + schar + search + second + sequence + serious-condition + set + set-difference + set-dispatch-macro-character + set-exclusive-or + set-macro-character + set-pprint-dispatch + set-syntax-from-char + setf + setq + seventh + shadow + shadowing-import + shared-initialize + shiftf + short-float + short-float-epsilon + short-float-negative-epsilon + short-site-name + signed-byte + signum + simple-array + simple-base-string + simple-bit-vector + simple-bit-vector-p + simple-condition + simple-condition-format-arguments + simple-condition-format-control + simple-error + simple-string + simple-string-p + simple-type-error + simple-vector + simple-vector-p + simple-warning + sin + single-float + single-float-epsilon + single-float-negative-epsilon + sinh + sixth + sleep + slot-boundp + slot-exists-p + slot-makunbound + slot-missing + slot-unbound + slot-value + software-type + software-version + some + sort + space + special + special-operator-p + speed + sqrt + stable-sort + standard + standard-char + standard-char-p + standard-class + standard-generic-function + standard-method + standard-object + step + storage-condition + store-value + stream + stream-element-type + stream-error + stream-error-stream + stream-external-format + streamp + string + string-capitalize + string-downcase + string-equal + string-greaterp + string-left-trim + string-lessp + string-not-equal + string-not-greaterp + string-not-lessp + string-right-trim + string-stream + string-trim + string-upcase + string/= + string< + string<= + string= + string> + string>= + stringp + structure + structure-class + structure-object + style-warning + sublis + subseq + subsetp + subst + subst-if + subst-if-not + substitute + substitute-if + substitute-if-not + subtypep + svref + sxhash + symbol + symbol-function + symbol-name + symbol-package + symbol-plist + symbol-value + symbolp + synonym-stream + synonym-stream-symbol + tailp + tan + tanh + tenth + terpri + third + time + trace + translate-logical-pathname + translate-pathname + tree-equal + truename + truncate + two-way-stream + two-way-stream-input-stream + two-way-stream-output-stream + type-error-datum + type-error-expected-type + type-error + type-of + typep + type + unbound-slot-instance + unbound-slot + unbound-variable + undefined-function + unexport + unintern + union + unread-char + unsigned-byte + untrace + unuse-package + update-instance-for-different-class + update-instance-for-redefined-class + upgraded-array-element-type + upgraded-complex-part-type + upper-case-p + use-package + use-value + user-homedir-pathname + values + values-list + variable + vector + vector-pop + vector-push + vector-push-extend + vectorp + warn + warning + wild-pathname-p + write + write-byte + write-char + write-line + write-sequence + write-string + write-to-string + y-or-n-p + yes-or-no-p + zerop + + t + nil + + + + + diff --git a/extra/xmode/modes/literate-haskell.xml b/extra/xmode/modes/literate-haskell.xml new file mode 100644 index 0000000000..c74ad3a5bc --- /dev/null +++ b/extra/xmode/modes/literate-haskell.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + > + + % + + \begin{code} + \end{code} + + + + + diff --git a/extra/xmode/modes/lotos.xml b/extra/xmode/modes/lotos.xml new file mode 100644 index 0000000000..bd1d4b7850 --- /dev/null +++ b/extra/xmode/modes/lotos.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + (* + *) + + + + >> + [> + ||| + || + |[ + ]| + [] + + + + accept + actualizedby + any + behavior + behaviour + choice + endlib + endproc + endspec + endtype + eqns + exit + for + forall + formaleqns + formalopns + formalsorts + hide + i + in + is + let + library + noexit + of + ofsort + opnnames + opns + par + process + renamedby + sortnames + sorts + specification + stop + type + using + where + + + Bit + BitString + Bool + DecDigit + DecString + Element + FBool + HexDigit + HexString + OctDigit + Octet + OctString + Nat + NonEmptyString + OctetString + Set + String + + + BasicNaturalNumber + BasicNonEmptyString + BitNatRepr + Boolean + FBoolean + DecNatRepr + HexNatRepr + NatRepresentations + NaturalNumber + OctNatRepr + RicherNonEmptyString + String0 + String1 + + + false + true + + + diff --git a/extra/xmode/modes/lua.xml b/extra/xmode/modes/lua.xml new file mode 100644 index 0000000000..04f9f76d02 --- /dev/null +++ b/extra/xmode/modes/lua.xml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + --[[ + ]] + + + -- + #! + + + " + " + + + ' + ' + + + + [[ + ]] + + + + + - + * + / + ^ + .. + <= + < + >= + > + == + ~= + = + + ( + ) + { + } + " + " + ' + ' + + + + do + end + while + repeat + until + if + then + elseif + else + return + break + for + in + function + local + nil + true + false + and + or + not + + assert + collectgarbage + dofile + error + _G + getfenv + getmetatable + gcinfo + ipairs + loadfile + loadlib + loadstring + next + pairs + pcall + print + rawequal + rawget + rawset + require + setfenv + setmetatable + tonumber + tostring + type + unpack + xpcall + _VERSION + LUA_PATH + _LOADED + _REQUIREDNAME + _ALERT + _ERRORMESSAGE + _PROMPT + __add + __sub + __mul + __div + __pow + __unm + __concat + __eq + __lt + __le + __index + __newindex + __call + __metatable + __mode + __tostring + __fenv + ... + arg + coroutine.create + coroutine.resume + coroutine.status + coroutine.wrap + coroutine.yield + string.byte + string.char + string.dump + string.find + string.len + string.lower + string.rep + string.sub + string.upper + string.format + string.gfind + string.gsub + table.concat + table.foreach + table.foreachi + table.getn + table.sort + table.insert + table.remove + table.setn + math.abs + math.acos + math.asin + math.atan + math.atan2 + math.ceil + math.cos + math.deg + math.exp + math.floor + math.log + math.log10 + math.max + math.min + math.mod + math.pow + math.rad + math.sin + math.sqrt + math.tan + math.frexp + math.ldexp + math.random + math.randomseed + math.pi + io.close + io.flush + io.input + io.lines + io.open + io.read + io.tmpfile + io.type + io.write + io.stdin + io.stdout + io.stderr + os.clock + os.date + os.difftime + os.execute + os.exit + os.getenv + os.remove + os.rename + os.setlocale + os.time + os.tmpname + debug.debug + debug.gethook + debug.getinfo + debug.getlocal + debug.getupvalue + debug.setlocal + debug.setupvalue + debug.sethook + debug.traceback + + + + diff --git a/extra/xmode/modes/mail.xml b/extra/xmode/modes/mail.xml new file mode 100644 index 0000000000..ac490697b0 --- /dev/null +++ b/extra/xmode/modes/mail.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + >>> + >> + > + | + : + -- + :-) + :-( + :) + :( + ;-) + ;-( + ;) + ;( + : + + + + + < + > + + + diff --git a/extra/xmode/modes/makefile.xml b/extra/xmode/modes/makefile.xml new file mode 100644 index 0000000000..3f4fae75e3 --- /dev/null +++ b/extra/xmode/modes/makefile.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + # + + + + \$\([a-zA-Z][\w-]* + ) + + + + + $( + ) + + + ${ + } + + + $ + + + + " + " + + + ' + ' + + + ` + ` + + + = + := + += + ?= + + : + + + subst + addprefix + addsuffix + basename + dir + filter + filter-out + findstring + firstword + foreach + join + notdir + origin + patsubst + shell + sort + strip + suffix + wildcard + word + words + ifeq + ifneq + else + endif + define + endef + ifdef + ifndef + + + + + + + # + + + + $( + ) + + + ${ + } + + + diff --git a/extra/xmode/modes/maple.xml b/extra/xmode/modes/maple.xml new file mode 100644 index 0000000000..0bc33ca8ed --- /dev/null +++ b/extra/xmode/modes/maple.xml @@ -0,0 +1,735 @@ + + + + + + + + + + + + + + + + " + " + + + ' + ' + + + ` + ` + + + # + + + + - + * + / + ^ + <> + <= + < + >= + > + = + $ + @@ + @ + || + := + :: + :- + & + ! + + + + and + or + xor + union + intersect + minus + mod + not + assuming + break + by + catch + description + do + done + elif + else + end + error + export + fi + finally + for + from + global + if + implies + in + local + module + next + od + option + options + proc + quit + read + return + save + stop + subset + then + to + try + use + while + + + about + ans + add + addcoords + additionally + addproperty + addressof + AFactor + AFactors + AIrreduc + AiryAi + AiryAiZeros + AiryBi + AiryBiZeros + algebraic + algsubs + alias + allvalues + anames + AngerJ + antihermitian + antisymm + apply + applyop + applyrule + arccos + arccosh + arccot + arccoth + arccsc + arccsch + arcsec + arcsech + arcsin + arcsinh + arctan + arctanh + argument + Array + array + ArrayDims + ArrayElems + ArrayIndFns + ArrayOptions + assign + assigned + asspar + assume + asympt + attributes + band + Berlekamp + bernoulli + bernstein + BesselI + BesselJ + BesselJZeros + BesselK + BesselY + BesselYZeros + Beta + branches + C + cat + ceil + changecoords + charfcn + ChebyshevT + ChebyShevU + CheckArgs + Chi + chrem + Ci + close + coeff + coeffs + coeftayl + collect + combine + comparray + compiletable + compoly + CompSeq + conjugate + constant + Content + content + convergs + convert + coords + copy + CopySign + cos + cosh + cot + coth + coulditbe + csc + csch + csgn + currentdir + curry + CylinderD + CylinderU + CylinderV + D + dawson + Default0 + DefaultOverflow + DefaultUnderflow + define + define_external + degree + denom + depends + DESol + Det + diagon + Diff + diff + diffop + Digits + dilog + dinterp + Dirac + disassemble + discont + discrim + dismantle + DistDeg + Divide + divide + dsolve + efficiency + Ei + Eigenvals + eliminate + ellipsoid + EllipticCE + EllipticCK + EllipticCPi + EllipticE + EllipticF + EllipticK + EllipticModulus + EllipticNome + EllipticPi + elliptic_int + entries + erf + erfc + erfi + euler + eulermac + Eval + eval + evala + evalapply + evalb + evalc + evalf + evalfint + evalhf + evalm + evaln + evalr + evalrC + events + Excel + exists + exp + Expand + expand + expandoff + expandon + exports + extract + extrema + Factor + factor + Factors + factors + fclose + fdiscont + feof + fflush + FFT + filepos + fixdiv + float + floor + fnormal + fold + fopen + forall + forget + fprintf + frac + freeze + frem + fremove + FresnelC + Fresnelf + Fresnelg + FresnelS + FromInert + frontend + fscanf + fsolve + galois + GAMMA + GaussAGM + Gausselim + Gaussjord + gc + Gcd + gcd + Gcdex + gcdex + GegenbauerC + genpoly + getenv + GetResultDataType + GetResultShape + GF + Greek + HankelH1 + HankelH2 + harmonic + has + hasfun + hasoption + hastype + heap + Heaviside + Hermite + HermiteH + hermitian + Hessenberg + hfarray + history + hypergeom + icontent + identity + IEEEdiffs + ifactor + ifactors + iFFT + igcd + igcdex + ilcm + ilog10 + ilog2 + ilog + Im + implicitdiff + ImportMatrix + ImportVector + indets + index + indexed + indices + inifcn + ininame + initialcondition + initialize + insert + int + intat + interface + Interp + interp + Inverse + invfunc + invztrans + iostatus + iperfpow + iquo + iratrecon + irem + iroot + Irreduc + irreduc + is + iscont + isdifferential + IsMatrixShape + isolate + isolve + ispoly + isprime + isqrfree + isqrt + issqr + ithprime + JacobiAM + JacobiCD + JacobiCN + JacobiCS + JacobiDC + JacobiDN + JacobiDS + JacobiNC + JacobiND + JacobiNS + JacobiP + JacobiSC + JacobiSD + JacobiSN + JacobiTheta1 + JacobiTheta2 + JacobiTheta3 + JacobiTheta4 + JacobiZeta + KelvinBei + KelvinBer + KelvinHei + KelvinHer + KelvinKei + KelvinKer + KummerM + KummerU + LaguerreL + LambertW + latex + lattice + lcm + Lcm + lcoeff + leadterm + LegendreP + LegendreQ + length + LerchPhi + lexorder + lhs + CLi + Limit + limit + Linsolve + ln + lnGAMMA + log + log10 + LommelS1 + Lommels2 + lprint + map + map2 + Maple_floats + match + MatlabMatrix + Matrix + matrix + MatrixOptions + max + maximize + maxnorm + maxorder + MeijerG + member + min + minimize + mkdir + ModifiedMeijerG + modp + modp1 + modp2 + modpol + mods + module + MOLS + msolve + mtaylor + mul + NextAfter + nextprime + nops + norm + norm + Normal + normal + nprintf + Nullspace + numboccur + numer + NumericClass + NumericEvent + NumericEventHandler + NumericException + numerics + NumericStatus + odetest + op + open + order + OrderedNE + parse + patmatch + pclose + PDEplot_options + pdesolve + pdetest + pdsolve + piecewise + plot + plot3d + plotsetup + pochhammer + pointto + poisson + polar + polylog + polynom + Power + Powmod + powmod + Prem + prem + Preprocessor + prevprime + Primitive + Primpart + primpart + print + printf + ProbSplit + procbody + ProcessOptions + procmake + Product + product + proot + property + protect + Psi + psqrt + queue + Quo + quo + radfield + radnormal + radsimp + rand + randomize + Randpoly + randpoly + Randprime + range + ratinterp + rationalize + Ratrecon + ratrecon + Re + readbytes + readdata + readlib + readline + readstat + realroot + Record + Reduce + references + release + Rem + rem + remove + repository + requires + residue + RESol + Resultant + resultant + rhs + rmdir + root + rootbound + RootOf + Roots + roots + round + Rounding + rsolve + rtable + rtable_algebra + rtable_dims + rtable_elems + rtable_indfns + rtable_options + rtable_printf + rtable_scanf + SampleRTable + savelib + Scale10 + Scale2 + scalar + scan + scanf + SearchText + searchtext + sec + sech + select + selectfun + selectremove + seq + series + setattribute + SFloatExponent + SFloatMantissa + shale + Shi + showprofile + showtime + Si + sign + signum + Simplify + simplify + sin + sinh + singular + sinterp + smartplot3d + Smith + solve + solvefor + sort + sparse + spec_eval_rule + spline + spreadsheet + SPrem + sprem + sprintf + Sqrfree + sqrfree + sqrt + sscanf + Ssi + ssystem + storage + string + StruveH + StruveL + sturm + sturmseq + subs + subsindets + subsop + substring + subtype + Sum + sum + surd + Svd + symmdiff + symmetric + syntax + system + table + tan + tang + taylor + testeq + testfloat + TEXT + thaw + thiele + time + timelimit + ToInert + TopologicalSort + traperror + triangular + trigsubs + trunc + type + typematch + unames + unapply + unassign + undefined + unit + Unordered + unprotect + update + UseHardwareFloats + userinfo + value + Vector + vector + verify + WeierstrassP + WeberE + WeierstrassPPrime + WeierstrassSigma + WeierstrassZeta + whattype + WhittakerM + WhittakerW + with + worksheet + writebytes + writedata + writeline + writestat + writeto + zero + Zeta + zip + ztrans + + + Catalan + constants + Digits + FAIL + false + gamma + I + infinity + integrate + lasterror + libname + `mod` + NULL + Order + Pi + printlevel + true + undefined + + + diff --git a/extra/xmode/modes/ml.xml b/extra/xmode/modes/ml.xml new file mode 100644 index 0000000000..97ec02cfd4 --- /dev/null +++ b/extra/xmode/modes/ml.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + (* + *) + + + + + #" + " + + + + + " + " + + + + + + / + * + + + + + - + ^ + + + :: + @ + + + = + <> + <= + < + >= + > + + + := + + + + + + + + + div + mod + + + o + + + before + + + abstype + and + andalso + as + case + do + datatype + else + end + eqtype + exception + fn + fun + functor + handle + if + in + include + infix + infixr + let + local + nonfix + of + op + open + orelse + raise + rec + sharing + sig + signature + struct + structure + then + type + val + where + with + withtype + while + + + array + bool + char + exn + frag + int + list + option + order + real + ref + string + substring + unit + vector + word + word8 + + + Bind + Chr + Domain + Div + Fail + Graphic + Interrupt + Io + Match + Option + Ord + Overflow + Size + Subscript + SysErr + + + false + true + QUOTE + ANTIQUOTE + nil + NONE + SOME + LESS + EQUAL + GREATER + + + \ No newline at end of file diff --git a/extra/xmode/modes/modula3.xml b/extra/xmode/modes/modula3.xml new file mode 100644 index 0000000000..fa04e9cbfe --- /dev/null +++ b/extra/xmode/modes/modula3.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + <* + *> + + + + (* + *) + + + + + " + " + + + ' + ' + + + ^ + @ + := + = + <> + >= + <= + > + < + + + - + / + * + + + AND + DO + FROM + NOT + REPEAT + UNTIL + ANY + ELSE + GENERIC + OBJECT + RETURN + UNTRACED + ARRAY + ELSIF + IF + OF + REVEAL + VALUE + AS + END + IMPORT + OR + ROOT + VAR + BEGIN + EVAL + IN + OVERRIDES + SET + WHILE + BITS + EXCEPT + INTERFACE + PROCEDURE + THEN + WITH + BRANDED + EXCEPTION + LOCK + RAISE + TO + BY + EXIT + LOOP + RAISES + TRY + CASE + EXPORTS + METHODS + READONLY + TYPE + CONST + FINALLY + MOD + RECORD + TYPECASE + DIV + FOR + MODULE + REF + UNSAFE + + + ABS + BYTESIZE + EXTENDED + INTEGER + MIN + NUMBER + TEXT + ADDRESS + CARDINAL + FALSE + ISTYPE + MUTEX + ORD + TRUE + ADR + CEILING + FIRST + LAST + NARROW + REAL + TRUNC + ADRSIZE + CHAR + FLOAT + LONGREAL + NEW + REFANY + TYPECODE + BITSIZE + DEC + FLOOR + LOOPHOLE + NIL + ROUND + VAL + BOOLEAN + DISPOSE + INC + MAX + NULL + SUBARRAY + + + + Text + Thread + Word + Real + LongReal + ExtendedReal + RealFloat + LongFloat + ExtendedFloat + FloatMode + + + + Fmt + Lex + Pickle + Table + + + + diff --git a/extra/xmode/modes/moin.xml b/extra/xmode/modes/moin.xml new file mode 100644 index 0000000000..cc6ac757fb --- /dev/null +++ b/extra/xmode/modes/moin.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + ## + + + #pragma + + + + [[ + ]] + + + + \s+(?:\(|\)|\w)[\p{Alnum}\p{Blank}.()]+:: + + + + + + + {{{ + }}} + + + + + ` + ` + + + + ('{2,5})[^']+\1[^'] + + + -{4,} + + + + (={1,5}) + $1 + + + + [A-Z][a-z]+[A-Z][a-zA-Z]+ + + + + [" + "] + + + + + [ + ] + + + + + diff --git a/extra/xmode/modes/mqsc.xml b/extra/xmode/modes/mqsc.xml new file mode 100644 index 0000000000..9fdc9c8271 --- /dev/null +++ b/extra/xmode/modes/mqsc.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + * + + + + + (' + ') + + + + ( + ) + + + + + + + + + all + alter + alt + clear + define + def + delete + display + dis + end + like + ping + refresh + ref + replace + reset + resolve + resume + start + stop + suspend + + + channel + chl + chstatus + chst + clusqmgr + process + proc + namelist + nl + qalias + qa + qcluster + qc + qlocal + ql + qmodel + qm + qmgr + qremote + qr + queue + + + altdate + alttime + applicid + appltype + authorev + batches + batchint + batchsz + boqname + bothresh + bufsrcvd + bufssent + bytsrcvd + bytssent + ccsid + chad + chadev + chadexit + channel + chltype + chstada + chstati + clusdate + clusinfo + clusnl + clusqmgr + clusqt + cluster + clustime + clwldata + clwlexit + clwlwen + cmdlevel + commandq + conname + convert + crdate + crtime + curdepth + curluwid + curmsgs + curseqno + deadq + defbind + defprty + defpsist + defsopt + deftype + defxmitq + descr + discint + distl + envrdata + get + hardenbo + hbint + indoubt + inhibtev + initq + ipprocs + jobname + localev + longrts + longrty + longtmr + lstluwid + lstmsgda + lstmsgti + lstseqno + maxdepth + maxhands + maxmsgl + maxprty + maxumsgs + mcaname + mcastat + mcatype + mcauser + modename + mrdata + mrexit + mrrty + mrtmr + msgdata + msgdlvsq + msgexit + msgs + namcount + names + netprty + npmspeed + opprocs + password + perfmev + platform + process + put + putaut + qdepthhi + qdepthlo + qdphiev + qdploev + qdpmaxev + qmid + qmname + qmtype + qsvciev + qsvcint + qtype + rcvdata + rcvexit + remoteev + repos + reposnl + retintvl + rname + rqmname + scope + scydata + scyexit + senddata + sendexit + seqwrap + share + shortrts + shortrty + shorttmr + status + stopreq + strstpev + suspend + syncpt + targq + tpname + trigdata + trigdpth + trigger + trigint + trigmpri + trigtype + trptype + type + usage + userdata + userid + xmitq + + + \ No newline at end of file diff --git a/extra/xmode/modes/myghty.xml b/extra/xmode/modes/myghty.xml new file mode 100644 index 0000000000..1cf83ef87a --- /dev/null +++ b/extra/xmode/modes/myghty.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + # + + + + + <%attr> + </%attr> + + + + + <%(def|closure|method) + > + + </%(def|closure|method)> + + + + <%doc> + </%doc> + + + + + <%flags> + </%flags> + + + + + <%python[^>]*> + </%python> + + + + + <%(args|cleanup|filter|global|init|once|requestlocal|requestonce|shared|threadlocal|threadonce)> + </%$1> + + + + + <%text> + </%text> + + + + </&> + + <&[|]? + &> + + + + + <% + %> + + + % + + + + + + args + attr + cleanup + closure + def + doc + filter + flags + global + init + method + once + python + requestlocal + requestonce + shared + threadlocal + threadonce + + + + + + + @ + + + ARGS + MODULE + SELF + m + + r + + s + + u + + h + + + + + + + diff --git a/extra/xmode/modes/mysql.xml b/extra/xmode/modes/mysql.xml new file mode 100644 index 0000000000..fe462a75b6 --- /dev/null +++ b/extra/xmode/modes/mysql.xml @@ -0,0 +1,244 @@ + + + + + + + + + + + + + /* + */ + + + " + " + + + ' + ' + + + + + ADD + ALL + ALTER + ANALYZE + AND + AS + ASC + ASENSITIVE + BEFORE + BETWEEN + BIGINT + BINARY + BLOB + BOTH + BY + CALL + CASCADE + CASE + CHANGE + CHAR + CHARACTER + CHECK + COLLATE + COLUMN + CONDITION + CONNECTION + CONSTRAINT + CONTINUE + CONVERT + CREATE + CROSS + CURRENT_DATE + CURRENT_TIME + CURRENT_TIMESTAMP + CURRENT_USER + CURSOR + DATABASE + DATABASES + DAY_HOUR + DAY_MICROSECOND + DAY_MINUTE + DAY_SECOND + DEC + DECIMAL + DECLARE + DEFAULT + DELAYED + DELETE + DESC + DESCRIBE + DETERMINISTIC + DISTINCT + DISTINCTROW + DIV + DOUBLE + DROP + DUAL + EACH + ELSE + ELSEIF + ENCLOSED + ESCAPED + EXISTS + EXIT + EXPLAIN + FALSE + FETCH + FLOAT + FOR + FORCE + FOREIGN + FROM + FULLTEXT + GOTO + GRANT + GROUP + HAVING + HIGH_PRIORITY + HOUR_MICROSECOND + HOUR_MINUTE + HOUR_SECOND + IF + IGNORE + IN + INDEX + INFILE + INNER + INOUT + INSENSITIVE + INSERT + INT + INTEGER + INTERVAL + INTO + IS + ITERATE + JOIN + KEY + KEYS + KILL + LEADING + LEAVE + LEFT + LIKE + LIMIT + LINES + LOAD + LOCALTIME + LOCALTIMESTAMP + LOCK + LONG + LONGBLOB + LONGTEXT + LOOP + LOW_PRIORITY + MATCH + MEDIUMBLOB + MEDIUMINT + MEDIUMTEXT + MIDDLEINT + MINUTE_MICROSECOND + MINUTE_SECOND + MOD + MODIFIES + NATURAL + NOT + NO_WRITE_TO_BINLOG + NULL + NUMERIC + ON + OPTIMIZE + OPTION + OPTIONALLY + OR + ORDER + OUT + OUTER + OUTFILE + PRECISION + PRIMARY + PROCEDURE + PURGE + READ + READS + REAL + REFERENCES + REGEXP + RENAME + REPEAT + REPLACE + REQUIRE + RESTRICT + RETURN + REVOKE + RIGHT + RLIKE + SCHEMA + SCHEMAS + SECOND_MICROSECOND + SELECT + SENSITIVE + SEPARATOR + SET + SHOW + SMALLINT + SONAME + SPATIAL + SPECIFIC + SQL + SQLEXCEPTION + SQLSTATE + SQLWARNING + SQL_BIG_RESULT + SQL_CALC_FOUND_ROWS + SQL_SMALL_RESULT + SSL + STARTING + STRAIGHT_JOIN + TABLE + TERMINATED + THEN + TINYBLOB + TINYINT + TINYTEXT + TO + TRAILING + TRIGGER + TRUE + UNDO + UNION + UNIQUE + UNLOCK + UNSIGNED + UPDATE + USAGE + USE + USING + UTC_DATE + UTC_TIME + UTC_TIMESTAMP + VALUES + VARBINARY + VARCHAR + VARCHARACTER + VARYING + WHEN + WHERE + WHILE + WITH + WRITE + XOR + YEAR_MONTH + ZEROFILL + + + + + diff --git a/extra/xmode/modes/netrexx.xml b/extra/xmode/modes/netrexx.xml new file mode 100644 index 0000000000..48d50eb351 --- /dev/null +++ b/extra/xmode/modes/netrexx.xml @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + /** + */ + + + + + /* + */ + + + + " + " + + + ' + ' + + + -- + + = + ! + >= + <= + + + - + / + + + .* + + * + > + < + % + & + | + ^ + ~ + } + { + + + + abbrev + abs + b2x + center + centre + changestr + charAt + compare + copies + copyIndexed + countstr + c2d + c2x + datatype + delstr + delword + d2c + d2X + equals + exists + format + hashCode + insert + lastpos + left + length + lower + max + min + nop + overlay + parse + pos + reverse + right + say + sequence + sign + space + strip + substr + subword + toCharArray + toString + toboolean + tobyte + tochar + todouble + tofloat + toint + tolong + toshort + trunc + translate + upper + verify + word + wordindex + wordlength + wordpos + words + x2b + x2c + x2d + + class + private + public + abstract + final + interface + dependent + adapter + deprecated + extends + uses + implements + + method + native + returns + signals + + properties + private + public + inheritable + constant + static + volatile + unused + transient + indirect + + do + label + protect + catch + finally + end + signal + + if + then + else + select + case + when + otherwise + + loop + forever + for + to + by + over + until + while + leave + iterate + + return + exit + + ask + digits + form + null + source + this + super + parent + sourceline + version + + trace + var + all + results + off + methods + + package + import + numeric + scientific + engineering + + options + comments + nocomments + keep + nokeep + compact + nocompact + console + noconsole + decimal + nodecimal + explicit + noexplicit + java + nojava + savelog + nosavelog + + sourcedir + nosourcedir + symbols + nosymbols + utf8 + noutf8 + + notrace + binary + nobinary + crossref + nocrossref + diag + nodiag + format + noformat + logo + nologo + replace + noreplace + + strictassign + nostrictassign + strictcase + nostrictcase + strictargs + nostrictargs + strictimport + nostrictimport + strictsignal + nostrictsignal + strictprops + nostrictprops + + verbose + noverbose + verbose0 + verbose1 + verbose2 + verbose3 + verbose4 + verbose5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ArithmeticException + ArrayIndexOutOfBoundsException + ArrayStoreException + ClassCastException + ClassNotFoundException + CloneNotSupportedException + Exception + IllegalAccessException + IllegalArgumentException + IllegalMonitorStateException + IllegalStateException + IllegalThreadStateException + IndexOutOfBoundsException + InstantiationException + InterruptedException + NegativeArraySizeException + NoSuchFieldException + NoSuchMethodException + NullPointerException + NumberFormatException + RuntimeException + SecurityException + StringIndexOutOfBoundsException + UnsupportedOperationException + + CharConversionException + EOFException + FileNotFoundException + InterruptedIOException + InvalidClassException + InvalidObjectException + IOException + NotActiveException + NotSerializableException + ObjectStreamException + OptionalDataException + StreamCorruptedException + SyncFailedException + UnsupportedEncodingException + UTFDataFormatException + WriteAbortedException + + + RemoteException + + + BadArgumentException + BadColumnException + BadNumericException + DivideException + ExponentOverflowException + NoOtherwiseException + NotCharacterException + NotLogicException + + + + diff --git a/extra/xmode/modes/nqc.xml b/extra/xmode/modes/nqc.xml new file mode 100644 index 0000000000..1c0e0386fa --- /dev/null +++ b/extra/xmode/modes/nqc.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + + # + + // + = + ! + >= + <= + + + - + / + + * + > + < + % + & + | + ^ + ~ + } + { + : + + + ( + ) + + + __event_src + __sensor + __type + abs + aquire + catch + const + break + case + continue + default + do + else + for + monitor + if + return + repeat + sign + start + stop + sub + switch + task + while + + asm + inline + + int + void + + true + false + NULL + + SENSOR_1 + SENSOR_2 + SENSOR_3 + + SENSOR_TYPE_NONE + SENSOR_TYPE_TOUCH + SENSOR_TYPE_TEMPERATURE + SENSOR_TYPE_LIGHT + SENSOR_TYPE_ROTATION + + SENSOR_MODE_RAW + SENSOR_MODE_BOOL + SENSOR_MODE_EDGE + SENSOR_MODE_PULSE + SENSOR_MODE_PERCENT + SENSOR_MODE_FAHRENHEIT + SENSOR_MODE_CELSIUS + SENSOR_MODE_ROTATION + + SENSOR_TOUCH + SENSOR_LIGHT + SENSOR_EDGE + SENSOR_PULSE + SENSOR_FAHRENHEIT + SENSOR_CELSIUS + SENSOR_ROTATION + + OUT_A + OUT_B + OUT_C + + OUT_OFF + OUT_ON + OUT_FLOAT + + OUT_FWD + OUT_REV + OUT_TOOGLE + + OUT_FULL + OUT_HALF + OUT_LOW + + SOUND_CLICK + SOUND_DOUBLE_BEEP + SOUND_DOWN + SOUND_UP + SOUND_LOW_BEEP + SOUND_FAST_UP + + DISPLAY_WATCH + DISPLAY_OUT_A + DISPLAY_OUT_B + DISPLAY_OUT_C + DISPLAY_SENSOR_1 + DISPLAY_SENSOR_2 + DISPLAY_SENSOR_3 + + TX_POWER_LO + TX_POWER_HI + + SERIAL_COMM_DEFAULT + SERIAL_COMM_4800 + SERIAL_COMM_DUTY25 + SERIAL_COMM_76KHZ + + SERIAL_PACKET_PREAMBLE + SERIAL_PACKET_DEFAULT + SERIAL_PACKET_NEGATED + SERIAL_PACKET_CHECKSUM + SERIAL_PACKET_RCX + SERIAL_PACKET_ + + ACQUIRE_OUT_A + ACQUIRE_OUT_B + ACQUIRE_OUT_C + ACQUIRE_SOUND + ACQUIRE_USER_1 + ACQUIRE_USER_2 + ACQUIRE_USER_3 + ACQUIRE_USER_4 + + EVENT_TYPE_PRESSED + EVENT_TYPE_RELEASED + EVENT_TYPE_PULSE + EVENT_TYPE_EDGE + EVENT_TYPE_FASTCHANGE + EVENT_TYPE_LOW + EVENT_TYPE_NORMAL + EVENT_TYPE_HIGH + EVENT_TYPE_CLICK + EVENT_TYPE_DOUBLECLICK + EVENT_TYPE_MESSAGE + + EVENT_1_PRESSED + EVENT_1_RELEASED + EVENT_2_PRESSED + EVENT_2_RELEASED + EVENT_LIGHT_HIGH + EVENT_LIGHT_NORMAL + EVENT_LIGHT_LOW + EVENT_LIGHT_CLICK + EVENT_LIGHT_DOUBLECLICK + EVENT_COUNTER_0 + EVENT_COUNTER_1 + EVENT_TIMER_0 + EVENT_TIMER_1 + EVENT_TIMER_2 + EVENT_MESSAGE + + + + diff --git a/extra/xmode/modes/nsis2.xml b/extra/xmode/modes/nsis2.xml new file mode 100644 index 0000000000..1b104bd01d --- /dev/null +++ b/extra/xmode/modes/nsis2.xml @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + ; + # + + $ + :: + : + + + " + " + + + + ' + ' + + + + ` + ` + + + + + dim + uninstallexename + + + $0 + $1 + $2 + $3 + $4 + $5 + $6 + $7 + $8 + $9 + $INSTDIR + $OUTDIR + $CMDLINE + $LANGUAGE + + + $R0 + $R1 + $R2 + $R3 + $R4 + $R5 + $R6 + $R7 + $R8 + $R9 + + + ARCHIVE + CENTER + CONTROL + CUR + EXT + F1 + F2 + F3 + F4 + F5 + F6 + F7 + F8 + F9 + F10 + F11 + F12 + F13 + F14 + F15 + F16 + F17 + F18 + F19 + F20 + F21 + F22 + F23 + F24 + FILE_ATTRIBUTE_ARCHIVE + MB_ABORTRETRYIGNORE + RIGHT + RO + SET + SHIFT + SW_SHOWMAXIMIZED + SW_SHOWMINIMIZED + SW_SHOWNORMAL + a + all + alwaysoff + auto + both + bottom + bzip2 + checkbox + colored + components + current + custom + directory + false + force + hide + ifnewer + instfiles + license + listonly + manual + nevershow + none + off + on + r + radiobuttons + show + silent + silentlog + smooth + textonly + top + true + try + uninstConfirm + w + zlib + $$ + $DESKTOP + $EXEDIR + $HWNDPARENT + $PLUGINSDIR + $PROGRAMFILES + $QUICKLAUNCH + $SMPROGRAMS + $SMSTARTUP + $STARTMENU + $SYSDIR + $TEMP + $WINDIR + $\n + $\r + ${NSISDIR} + ALT + END + FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_NORMAL + FILE_ATTRIBUTE_OFFLINE + FILE_ATTRIBUTE_READONLY + FILE_ATTRIBUTE_SYSTEM + FILE_ATTRIBUTE_TEMPORARY + HIDDEN + HKCC + HKCR + HKCU + HKDD + HKLM + HKPD + HKU + SHCTX + IDABORT + IDCANCEL + IDIGNORE + IDNO + IDOK + IDRETRY + IDYES + LEFT + MB_DEFBUTTON1 + MB_DEFBUTTON2 + MB_DEFBUTTON3 + MB_DEFBUTTON4 + MB_ICONEXCLAMATION + MB_ICONINFORMATION + MB_ICONQUESTION + MB_ICONSTOP + MB_OK + MB_OKCANCEL + MB_RETRYCANCEL + MB_RIGHT + MB_SETFOREGROUND + MB_TOPMOST + MB_YESNO + MB_YESNOCANCEL + NORMAL + OFFLINE + READONLY + SYSTEM + TEMPORARY + + + /0 + /COMPONENTSONLYONCUSTOM + /CUSTOMSTRING + /FILESONLY + /IMGID + /ITALIC + /LANG + /NOCUSTOM + /NOUNLOAD + /REBOOTOK + /RESIZETOFIT + /RTL + /SHORT + /SILENT + /STRIKE + /TIMEOUT + /TRIM + /UNDERLINE + /a + /e + /ifempty + /nonfatal + /oname + /r + /windows + + + !addincludedir + !addplugindir + !define + !include + !cd + !echo + !error + !insertmacro + !packhdr + !system + !warning + !undef + !verbose + + + !ifdef + !ifndef + !if + !else + !endif + !macro + !macroend + + + function + functionend + section + sectionend + subsection + subsectionend + + + addbrandingimage + addsize + allowrootdirinstall + allowskipfiles + autoclosewindow + bggradient + brandingtext + bringtofront + callinstdll + caption + changeui + checkbitmap + completedtext + componenttext + copyfiles + crccheck + createdirectory + createfont + createshortcut + delete + deleteinisec + deleteinistr + deleteregkey + deleteregvalue + detailprint + detailsbuttontext + dirshow + dirtext + enumregkey + enumregvalue + exch + exec + execshell + execwait + expandenvstrings + file + fileclose + fileerrortext + fileopen + fileread + filereadbyte + fileseek + filewrite + filewritebyte + findclose + findfirst + findnext + findwindow + flushini + getcurinsttype + getcurrentaddress + getdlgitem + getdllversion + getdllversionlocal + getfiletime + getfiletimelocal + getfullpathname + getfunctionaddress + getlabeladdress + gettempfilename + getwindowtext + hidewindow + icon + initpluginsdir + installbuttontext + installcolors + installdir + installdirregkey + instprogressflags + insttype + insttypegettext + insttypesettext + intfmt + intop + langstring + langstringup + licensebkcolor + licensedata + licenseforceselection + licensetext + loadlanguagefile + loadlanguagefile + logset + logtext + miscbuttontext + name + nop + outfile + page + plugindir + pop + push + readenvstr + readinistr + readregdword + readregstr + regdll + rename + reservefile + rmdir + searchpath + sectiongetflags + sectiongetinsttypes + sectiongetsize + sectiongettext + sectionin + sectionsetflags + sectionsetinsttypes + sectionsetsize + sectionsettext + sendmessage + setautoclose + setbkcolor + setbrandingimage + setcompress + setcompressor + setcurinsttype + setdatablockoptimize + setdatesave + setdetailsprint + setdetailsview + setfileattributes + setfont + setoutpath + setoverwrite + setpluginunload + setrebootflag + setshellvarcontext + setstaticbkcolor + setwindowlong + showinstdetails + showuninstdetails + showwindow + silentinstall + silentuninstall + sleep + spacetexts + strcpy + strlen + subcaption + uninstallbuttontext + uninstallcaption + uninstallicon + uninstallsubcaption + uninstalltext + uninstpage + unregdll + var + viaddversionkey + videscription + vicompanyname + vicomments + vilegalcopyrights + vilegaltrademarks + viproductname + viproductversion + windowicon + writeinistr + writeregbin + writeregdword + writeregexpandstr + writeregstr + writeuninstaller + xpstyle + + + abort + call + clearerrors + goto + ifabort + iferrors + iffileexists + ifrebootflag + intcmp + intcmpu + iswindow + messagebox + reboot + return + quit + seterrors + strcmp + + + .onguiinit + .oninit + .oninstfailed + .oninstsuccess + .onmouseoversection + .onselchange + .onuserabort + .onverifyinstdir + un.onguiinit + un.oninit + un.onuninstfailed + un.onuninstsuccess + un.onuserabort + + + + + + + diff --git a/extra/xmode/modes/objective-c.xml b/extra/xmode/modes/objective-c.xml new file mode 100644 index 0000000000..c6c52c8211 --- /dev/null +++ b/extra/xmode/modes/objective-c.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + id + Class + SEL + IMP + BOOL + + + oneway + in + out + inout + bycopy + byref + self + super + + + @interface + @implementation + @protocol + @end + @private + @protected + @public + @class + @selector + @endcode + @defs + + TRUE + FALSE + YES + NO + NULL + nil + Nil + + + + + + + include\b + import\b + define\b + endif\b + elif\b + if\b + + + + + + ifdef + ifndef + else + error + line + pragma + undef + warning + + + + + + + # + + + + + + diff --git a/extra/xmode/modes/objectrexx.xml b/extra/xmode/modes/objectrexx.xml new file mode 100644 index 0000000000..875e83ec90 --- /dev/null +++ b/extra/xmode/modes/objectrexx.xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + + # + + -- + = + ! + >= + <= + + + - + / + + * + > + < + % + & + | + ^ + ~ + } + { + + :: + + : + + + ( + ) + + + Address + Arg + Call + Do + Drop + Exit + Expose + Forward + Guard + If + Interpret + Iterate + Leave + Nop + Numeric + Parse + Procedure + pull + Push + Queue + Raise + reply + Return + Say + Seleect + Signal + Trace + use + Class + Method + Requires + Routine + Result + RC + Self + Sigl + Super + Abbrev + Abs + Address + Arg + Beep + BitAnd + BitOr + BitXor + B2X + Center + ChangeStr + CharIn + CharOut + Chars + Compare + Consition + Copies + CountStr + C2D + C2X + DataType + Date + DelStr + DelWord + Digits + Directory + D2C + D2X + ErrorText + FileSpec + Form + Format + Fuzz + Insert + LastPos + Left + Length + LineIn + LineOut + Lines + Max + Min + Overlay + Pos + Queued + Random + Reverse + Right + Sign + SourceLine + Space + Stream + Strip + SubStr + SubWord + Symbol + Time + Trace + Translate + Trunc + Value + Var + Verify + Word + WordIndex + WordLength + WordPos + Words + XRange + X2B + X2C + X2D + RxFuncAdd + RxFuncDrop + RxFuncQuery + RxMessageBox + RxWinExec + SysAddRexxMacro + SysBootDrive + SysClearRexxMacroSpace + SysCloseEventSem + SysCloseMutexSem + SysCls + SysCreateEventSem + SysCreateMutexSem + SysCurPos + SysCurState + SysDriveInfo + SysDriveMap + SysDropFuncs + SysDropRexxMacro + SysDumpVariables + SysFileDelete + SysFileSearch + SysFileSystemType + SysFileTree + SysFromUnicode + SysToUnicode + SysGetErrortext + SysGetFileDateTime + SysGetKey + SysIni + SysLoadFuncs + SysLoadRexxMacroSpace + SysMkDir + SysOpenEventSem + SysOpenMutexSem + SysPostEventSem + SysPulseEventSem + SysQueryProcess + SysQueryRexxMacro + SysReleaseMutexSem + SysReorderRexxMacro + SysRequestMutexSem + SysResetEventSem + SysRmDir + SysSaveRexxMacroSpace + SysSearchPath + SysSetFileDateTime + SysSetPriority + SysSleep + SysStemCopy + SysStemDelete + SysStemInsert + SysStemSort + SysSwitchSession + SysSystemDirectory + SysTempFileName + SysTextScreenRead + SysTextScreenSize + SysUtilVersion + SysVersion + SysVolumeLabel + SysWaitEventSem + SysWaitNamedPipe + SysWinDecryptFile + SysWinEncryptFile + SysWinVer + + + diff --git a/extra/xmode/modes/occam.xml b/extra/xmode/modes/occam.xml new file mode 100644 index 0000000000..4e7265eeed --- /dev/null +++ b/extra/xmode/modes/occam.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + -- + + + # + + + ' + ' + + + + " + " + + + := + = + >> + << + <> + >< + > + < + >= + <= + + + - + / + \ + * + ? + ! + /\ + \/ + ~ + + + + ALT + ASM + CASE + FUNCTION + IF + INLINE + PAR + PLACED + PRI + PROC + RESULT + SEQ + VALOF + WHILE + + + AT + ELSE + FOR + FROM + IS + PLACE + PORT + PROTOCOL + SKIP + STOP + VAL + + + AFTER + AND + ANY + BITAND + BITNOT + BITOR + BOOL + BYTE + BYTESIN + CHAN + DATA + INT + INT32 + INT16 + INT64 + MINUS + MOSTNEG + MOSTPOS + NOT + PLUS + OF + OFFSETOF + OR + PACKED + REAL32 + REAL64 + RECORD + REM + RESHAPES + RETYPES + ROUND + SIZE + TIMER + TIMES + TRUNC + TYPE + + + BUCKET + CLAIM + ENROLL + EVENT + FALL + FLUSH + GRANT + INITIAL + RESOURCE + SEMAPHORE + SHARED + SYNC + + + LONGADD + LONGSUB + ASHIFTRIGHT + ASHIFTLEFT + ROTATERIGHT + ROTATELEFT + LONGSUM + LONGDIFF + LONGPROD + LONGDIV + SHIFTLEFT + SHIFTRIGHT + NORMALISE + ABS + DABS + SCALEB + DSCALEB + COPYSIGN + DCOPYSIGN + SQRT + DSQRT + MINUSX + DMINUSX + NEXTAFTER + DNEXTAFTER + MULBY2 + DMULBY2 + DIVBY2 + DDIVBY2 + LOGB + DLOGB + ISNAN + DISNAN + NOTFINITE + DNOTFINITE + ORDERED + DORDERED + FLOATING.UNPACK + DFLOATING.UNPACK + ARGUMENT.REDUCE + DARGUMENT.REDUCE + FPINT + DFPINT + REAL32OP + REAL64OP + IEEE32OP + IEEE64OP + REAL32REM + REAL64REM + IEEE32REM + IEEE64REM + REAL32EQ + REAL64EQ + REAL32GT + REAL64GT + IEEECOMPARE + DIEEECOMPARE + ALOG + DALOG + ALOG10 + DALOG10 + EXP + DEXP + TAN + DTAN + SIN + DSIN + ASIN + DASIN + COS + DCOS + SINH + DSINH + COSH + DCOSH + TANH + DTANH + ATAN + DATAN + ATAN2 + DATAN2 + RAN + DRAN + POWER + DPOWER + + + INTTOSTRING + INT16TOSTRING + INT32TOSTRING + INT64TOSTRING + STRINGTOINT + STRINGTOINT16 + STRINGTOINT32 + STRINGTOINT64 + HEXTOSTRING + HEX16TOSTRING + HEX32TOSTRING + HEX64TOSTRING + STRINGTOHEX + STRINGTOHEX16 + STRINGTOHEX32 + STRINGTOHEX64 + STRINGTOREAL32 + STRINGTOREAL64 + REAL32TOSTRING + REAL64TOSTRING + STRINGTOBOOL + BOOLTOSTRING + RESCHEDULE + ASSERT + + + + FALSE + TRUE + + + diff --git a/extra/xmode/modes/omnimark.xml b/extra/xmode/modes/omnimark.xml new file mode 100644 index 0000000000..721ba4ae3a --- /dev/null +++ b/extra/xmode/modes/omnimark.xml @@ -0,0 +1,455 @@ + + + + + + + + + + + + + + + + + + #! + ; + + + "((?!$)[^"])*$ + $ + + + " + " + + + '((?!$)[^'])*$ + $ + + + ' + ' + + + & + | + + + + + + = + / + < + > + ~ + @ + $ + % + ^ + * + ? + ! + + + #additional-info + #appinfo + #args + #capacity + #charset + #class + #command-line-names + #console + #current-input + #current-output + #data + #doctype + #document + #dtd + #empty + #error + #error-code + #external-exception + #file-name + #first + #group + #implied + #item + #language-version + #last + #libpath + #library + #libvalue + #line-number + #main-input + #main-output + #markup-error-count + #markup-error-total + #markup-parser + #markup-warning-count + #markup-warning-total + #message + #none + #output + #platform-info + #process-input + #process-output + #program-error + #recovery-info + #sgml + #sgml-error-count + #sgml-error-total + #sgml-warning-count + #sgml-warning-total + #suppress + #syntax + #! + abs + activate + active + after + again + ancestor + and + another + always + and + any + any-text + arg + as + assert + attached + attribute + attributes + base + bcd + before + binary + binary-input + binary-mode + binary-output + blank + break-width + buffer + buffered + by + case + catch + catchable + cdata + cdata-entity + ceiling + children + clear + close + closed + compiled-date + complement + conref + content + content-end + content-start + context-translate + copy + copy-clear + counter + created + creating + creator + cross-translate + current + data-attribute + data-attributes + data-content + data-letters + date + deactivate + declare + declared-conref + declared-current + declared-defaulted + declared-fixed + declared-implied + declared-required + decrement + default-entity + defaulted + defaulting + define + delimiter + difference + digit + directory + discard + divide + do + doctype + document + document-element + document-end + document-start + domain-free + done + down-translate + drop + dtd + dtd-end + dtd-start + dtds + element + elements + else + elsewhere + empty + entities + entity + epilog-start + equal + equals + escape + except + exists + exit + external + external-data-entity + external-entity + external-function + external-output-function + external-text-entity + false + file + find + find-end + find-start + floor + flush + for + format + function + function-library + general + global + greater-equal + greater-than + group + groups + halt + halt-everything + has + hasnt + heralded-names + id + id-checking + idref + idrefs + ignore + implied + in + in-library + include + include-end + include-guard + include-start + inclusion + increment + initial + initial-size + input + insertion-break + instance + integer + internal + invalid-data + is + isnt + item + join + key + keyed + last + lastmost + lc + length + less-equal + less-than + letter + letters + library + line-end + line-start + literal + local + ln + log + log10 + lookahead + macro + macro-end + marked-section + markup-comment + markup-error + markup-parser + markup-wrapper + mask + match + matches + minus + mixed + modifiable + modulo + name + name-letters + namecase + named + names + ndata-entity + negate + nested-referents + new + newline + next + nmtoken + nmtokens + no + no-default-io + non-cdata + non-implied + non-sdata + not + not-reached + notation + number + number-of + numbers + null + nutoken + nutokens + occurrence + of + opaque + open + optional + or + output + output-to + over + parameter + parent + past + pattern + pcdata + plus + preparent + previous + process + process-end + process-start + processing-instruction + prolog-end + prolog-in-error + proper + public + put + rcdata + remove + read-only + readable + referent + referents + referents-allowed + referents-displayed + referents-not-allowed + remainder + reopen + repeat + repeated + replacement-break + reset + rethrow + return + reversed + round + save + save-clear + scan + sdata + sdata-entity + select + set + sgml + sgml-comment + sgml-declaration-end + sgml-dtd + sgml-dtds + sgml-error + sgml-in + sgml-out + sgml-parse + sgml-parser + shift + silent-referent + size + skip + source + space + specified + sqrt + status + stream + subdoc-entity + subdocument + subdocuments + subelement + submit + succeed + suppress + switch + symbol + system + system-call + take + test-system + text + text-mode + this + throw + thrown + times + to + token + translate + true + truncate + uc + ul + unanchored + unattached + unbuffered + union + unless + up-translate + usemap + using + value + value-end + value-start + valued + variable + when + white-space + with + word-end + word-start + writable + xml + xml-dtd + xml-dtds + xml-parse + yes + + + diff --git a/extra/xmode/modes/pascal.xml b/extra/xmode/modes/pascal.xml new file mode 100644 index 0000000000..d411d56d9a --- /dev/null +++ b/extra/xmode/modes/pascal.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + {$ + } + + + (*$ + *) + + + + + { + } + + + + (* + *) + + + // + + + ' + ' + + + ) + ( + ] + [ + . + , + ; + ^ + @ + := + : + = + <> + > + < + >= + <= + + + - + / + * + + + + and + array + as + at + asm + begin + case + class + const + constructor + destructor + dispinterface + div + do + downto + else + end + except + exports + file + final + finalization + finally + for + function + goto + if + implementation + in + inherited + initialization + inline + interface + is + label + mod + not + object + of + on + or + out + packed + procedure + program + property + raise + record + repeat + resourcestring + set + sealed + shl + shr + static + string + then + threadvar + to + try + type + unit + unsafe + until + uses + var + while + with + xor + + absolute + abstract + assembler + automated + cdecl + contains + default + deprecated + dispid + dynamic + export + external + far + forward + implements + index + library + local + message + name + namespaces + near + nodefault + overload + override + package + pascal + platform + private + protected + public + published + read + readonly + register + reintroduce + requires + resident + safecall + stdcall + stored + varargs + virtual + write + writeonly + + + shortint + byte + char + smallint + integer + word + longint + cardinal + + boolean + bytebool + wordbool + longbool + + real + single + double + extended + comp + currency + + pointer + + false + nil + self + true + + + diff --git a/extra/xmode/modes/patch.xml b/extra/xmode/modes/patch.xml new file mode 100644 index 0000000000..c2ac51a8f0 --- /dev/null +++ b/extra/xmode/modes/patch.xml @@ -0,0 +1,18 @@ + + + + + + + +++ + --- + Index: + + + > + - + < + ! + @@ + * + + diff --git a/extra/xmode/modes/perl.xml b/extra/xmode/modes/perl.xml new file mode 100644 index 0000000000..2bb9f669ac --- /dev/null +++ b/extra/xmode/modes/perl.xml @@ -0,0 +1,732 @@ + + + + + + + + + + + + + + + + + + # + + + + =head1 + =cut + + + =head2 + =cut + + + =head3 + =cut + + + =head4 + =cut + + + =item + =cut + + + =over + =cut + + + =back + =cut + + + =pod + =cut + + + =for + =cut + + + =begin + =cut + + + =end + =cut + + + + *" + *' + &" + &' + + + ${ + } + + + + \$#?((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + + + @((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + + + %((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + + + \$\$+((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + @\$((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + %\$((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + \*((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + + + \$\^\p{Alpha} + \$\p{Punct} + + + \\[@%\$&]((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + + + + &{ + } + + + + &\$((\p{Alpha}\w*|_\w+)?::)*(\p{Alpha}\w*|_\w+|\d+) + + + + sub\s + { + + + + &\p{Alpha}[\p{Alnum}_]*'\p{Alpha}[\p{Alnum}_]* + + + + " + " + + + + + ' + ' + + + + -[\p{Lower}]\w+ + + + -[\p{Lower}] + + + + \{(?=\s*[\p{Alpha}_\-][\p{Alnum}_]*\s*\}) + } + + + + + { + } + + + + + @{ + } + + + + + %{ + } + + + + : + + + __\w+__ + + + + ` + ` + + + + <[\p{Punct}\p{Alnum}_]*> + + + + + $2 + + + + $1 + + + + + + /.*?[^\\]/[cgimosx]*(?!\s*[\d\$\@\(\-]) + + + + q(?:|[qrxw])([#\[{(/|]) + ~1 + + + + tr\s*\{.*?[^\\]\}\s*\{(?:.*?[^\\])*\}[cds]* + + tr([^\p{Alnum}\p{Space}\}])(?:.*?)\1(?:.*?)\1[cds]* + + + y\s*\{.*?[^\\]\}\s*\{(?:.*?[^\\])*\}[cds]* + + y([^\p{Alnum}\p{Space}\}])(?:.*?)\1(?:.*?)\1[cds]* + + + m\s*\{.*?[^\\]\}[cgimosx]* + + m([^\p{Alnum}\p{Space}\}])(?:.*?[^\\])\1[cgimosx]* + + + s\s*\{.*?\}\s*\{.*?\}[egimosx]* + + s([^\p{Alnum}\p{Space}\}])(?:.*?)\1(?:.*?)\1[egimosx]* + + + || + && + != + <=> + -> + => + == + =~ + !~ + + += + -= + /= + *= + .= + %= + + &= + |= + **= + <<= + >>= + &&= + ||= + ^= + x= + >= + <= + > + < + + + | + & + ! + = + ! + + + - + / + ** + * + ^ + ~ + { + } + ? + : + + + + new + if + until + while + elsif + else + unless + for + foreach + BEGIN + END + + cmp + eq + ne + le + ge + not + and + or + xor + + + x + + + + + chomp + chop + chr + crypt + hex + index + lc + lcfirst + length + oct + ord + pack + reverse + rindex + sprintf + substr + uc + ucfirst + + + pos + quotemeta + split + study + + + abs + atan2 + cos + exp + + int + log + + rand + sin + sqrt + srand + + + pop + push + shift + splice + unshift + + + grep + join + map + + sort + unpack + + + delete + each + exists + keys + values + + + binmode + close + closedir + dbmclose + dbmopen + + eof + fileno + flock + format + getc + print + printf + read + readdir + rewinddir + seek + seekdir + select + syscall + sysread + sysseek + syswrite + tell + telldir + truncate + warn + write + + + + + + + + + vec + + + chdir + chmod + chown + chroot + fcntl + glob + ioctl + link + lstat + mkdir + open + opendir + readlink + rename + rmdir + stat + symlink + umask + unlink + utime + + + caller + continue + die + do + dump + eval + exit + goto + last + next + redo + return + wantarray + + + + + local + my + our + package + use + + + defined + + + formline + + + reset + scalar + undef + + + + alarm + exec + fork + getpgrp + getppid + getpriority + kill + pipe + setpgrp + setpriority + sleep + system + times + wait + waitpid + + + + import + no + + require + + + + bless + + + + ref + tie + tied + untie + + + + accept + bind + connect + getpeername + getsockname + getsockopt + listen + recv + send + setsockopt + shutdown + socket + socketpair + + + msgctl + msgget + msgrcv + msgsnd + semctl + semget + + semop + shmctl + shmget + shmread + shmwrite + + + endgrent + endhostent + endnetent + endpwent + getgrent + getgrgid + getgrnam + getlogin + getpwent + getpwnam + getpwuid + setgrent + setpwent + + + endprotoent + endservent + gethostbyaddr + gethostbyname + gethostent + getnetbyaddr + getnetbyname + getnetent + getprotobyname + getprotobynumber + getprotoent + getservbyname + getservbyport + getservent + sethostent + setnetent + setprotoent + setservent + + + gmtime + localtime + time + + + + + + = + + + + + + ${ + } + + + + + ->{ + } + + + $# + $ + + + @{ + } + + + @ + + + %{ + } + + + % + + | + & + ! + > + < + ) + ( + = + ! + + + - + / + * + ^ + ~ + } + { + . + , + ; + ] + [ + ? + : + + + + + + + %\d*\.?\d*[dfis] + + + + + + # + + + + ${ + } + + + $# + $ + + + @{ + } + + + @ + + + %{ + } + + + % + + + + + { + } + + + -> + + + + + )( + + + + # + + ( + ) + + + + + $ + @ + % + & + * + \ + + + + + + ([\[{\(]) + ~1 + + + + diff --git a/extra/xmode/modes/php.xml b/extra/xmode/modes/php.xml new file mode 100644 index 0000000000..91d8781627 --- /dev/null +++ b/extra/xmode/modes/php.xml @@ -0,0 +1,4832 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + ?> + + + + + <? + ?> + + + <?= + ?> + + + + + <% + %> + + + <%= + %> + + + + + <SCRIPT\s+LANGUAGE="?PHP"?> + </SCRIPT> + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <![CDATA[ + ]]> + + + + + <! + > + + + + </?\w+ + + + + & + ; + + + + + + + > + + + + + + + + + + + > + + + + + + + + + + + + ( + ) + + + + + + + + + + [ + ] + + + + + ( + ) + + + + ->\s*\w+\s*(?=\() + + + ->\w* + + + + ! + % + & + > + < + * + + + , + - + . + /(?!/) + :(?!:) + ; + = + ? + @ + [ + ] + ^ + ` + { + | + } + ~ + + + + + + + + + + + + \{(?=\$) + } + + + + + + + + + \{(?=\$) + } + + + + + + + + + \{(?=\$) + } + + + + + + + + { + + + + /**/ + + + + /** + */ + + + + /* + */ + + + // + # + + + + extends + implements + + + + + + + + \$\w+(?=\s*=\s*(&\s*)?new) + + + $ + + + + + + /**/ + + + + /** + */ + + + + /* + */ + + + + ' + ' + + + " + " + + + ` + ` + + + // + # + + ( + ( + + + + + $1 + + + + + ! + % + & + > + < + (array) + (bool) + (boolean) + (double) + (float) + (int) + (integer) + (object) + (real) + (string) + * + + + , + - + . + / + :(?!:) + ; + = + ? + @ + [ + ] + ^ + ` + { + | + } + ~ + ( + ) + + + + \$class\w* + \$interface\w* + + + class(\s+|$) + interface(\s+|$) + + + + \$\w+(?=(\[\$?[\s\w'"]+\])?->) + :: + + + + + + + + + + true + false + null + + + + + + + + + + + + + arrayiterator + arrayobject + cachingiterator + cachingrecursiveiterator + collection + descriptor + directoryiterator + domattr + domattribute + domcharacterdata + domdocument + domdocumenttype + domelement + domimplementation + domnamednodemap + domnode + domnodelist + domprocessinginstruction + domtext + domxpath + domxsltstylesheet + filteriterator + hw_api + hw_api_attribute + hw_api_content + hw_api_error + hw_api_object + hw_api_reason + limititerator + lob + memcache + parentiterator + pdo + pdostatement + rar + recursivedirectoryiterator + recursiveiteratoriterator + simplexmlelement + simplexmliterator + soapclient + soapfault + soapheader + soapparam + soapserver + soapvar + swfaction + swfbitmap + swfbutton + swfdisplayitem + swffill + swffont + swfgradient + swfmorph + swfmovie + swfshape + swfsprite + swftext + swftextfield + tidy + tidy_node + variant + + + + __call + __construct + __getfunctions + __getlastrequest + __getlastresponse + __gettypes + __tostring + abs + acos + acosh + add + add_namespace + add_root + addaction + addcolor + addcslashes + addentry + addfill + addfunction + addshape + addslashes + addstring + aggregate + aggregate_info + aggregate_methods + aggregate_methods_by_list + aggregate_methods_by_regexp + aggregate_properties + aggregate_properties_by_list + aggregate_properties_by_regexp + aggregation_info + align + apache_child_terminate + apache_get_modules + apache_get_version + apache_getenv + apache_lookup_uri + apache_note + apache_request_headers + apache_response_headers + apache_setenv + apd_breakpoint + apd_callstack + apd_clunk + apd_continue + apd_croak + apd_dump_function_table + apd_dump_persistent_resources + apd_dump_regular_resources + apd_echo + apd_get_active_symbols + apd_set_pprof_trace + apd_set_session + apd_set_session_trace + apd_set_socket_session_trace + append + append_child + append_sibling + appendchild + appenddata + array_change_key_case + array_chunk + array_combine + array_count_values + array_diff + array_diff_assoc + array_diff_key + array_diff_uassoc + array_diff_ukey + array_fill + array_filter + array_flip + array_intersect + array_intersect_assoc + array_intersect_key + array_intersect_uassoc + array_intersect_ukey + array_key_exists + array_keys + array_map + array_merge + array_merge_recursive + array_multisort + array_pad + array_pop + array_push + array_rand + array_reduce + array_reverse + array_search + array_shift + array_slice + array_splice + array_sum + array_udiff + array_udiff_assoc + array_udiff_uassoc + array_uintersect + array_uintersect_assoc + array_uintersect_uassoc + array_unique + array_unshift + array_values + array_walk + array_walk_recursive + arsort + ascii2ebcdic + asin + asinh + asort + aspell_check + aspell_check_raw + aspell_new + aspell_suggest + assert + assert_options + assign + assignelem + asxml + atan + atan2 + atanh + attreditable + attributes + base64_decode + base64_encode + base_convert + basename + bcadd + bccomp + bcdiv + bcmod + bcmul + bcpow + bcpowmod + bcscale + bcsqrt + bcsub + begintransaction + bin2hex + bind_textdomain_codeset + bindcolumn + bindec + bindparam + bindtextdomain + bzclose + bzcompress + bzdecompress + bzerrno + bzerror + bzerrstr + bzflush + bzopen + bzread + bzwrite + cal_days_in_month + cal_from_jd + cal_info + cal_to_jd + call_user_func + call_user_func_array + call_user_method + call_user_method_array + ccvs_add + ccvs_auth + ccvs_command + ccvs_count + ccvs_delete + ccvs_done + ccvs_init + ccvs_lookup + ccvs_new + ccvs_report + ccvs_return + ccvs_reverse + ccvs_sale + ccvs_status + ccvs_textvalue + ccvs_void + ceil + chdir + checkdate + checkdnsrr + checkin + checkout + chgrp + child_nodes + children + chmod + chop + chown + chr + chroot + chunk_split + class_exists + class_implements + class_parents + classkit_import + classkit_method_add + classkit_method_copy + classkit_method_redefine + classkit_method_remove + classkit_method_rename + clearstatcache + clone_node + clonenode + close + closedir + closelog + com + com_addref + com_create_guid + com_event_sink + com_get + com_get_active_object + com_invoke + com_isenum + com_load + com_load_typelib + com_message_pump + com_print_typeinfo + com_propget + com_propput + com_propset + com_release + com_set + commit + compact + connect + connection_aborted + connection_status + connection_timeout + constant + content + convert_cyr_string + convert_uudecode + convert_uuencode + copy + cos + cosh + count + count_chars + cpdf_add_annotation + cpdf_add_outline + cpdf_arc + cpdf_begin_text + cpdf_circle + cpdf_clip + cpdf_close + cpdf_closepath + cpdf_closepath_fill_stroke + cpdf_closepath_stroke + cpdf_continue_text + cpdf_curveto + cpdf_end_text + cpdf_fill + cpdf_fill_stroke + cpdf_finalize + cpdf_finalize_page + cpdf_global_set_document_limits + cpdf_import_jpeg + cpdf_lineto + cpdf_moveto + cpdf_newpath + cpdf_open + cpdf_output_buffer + cpdf_page_init + cpdf_place_inline_image + cpdf_rect + cpdf_restore + cpdf_rlineto + cpdf_rmoveto + cpdf_rotate + cpdf_rotate_text + cpdf_save + cpdf_save_to_file + cpdf_scale + cpdf_set_action_url + cpdf_set_char_spacing + cpdf_set_creator + cpdf_set_current_page + cpdf_set_font + cpdf_set_font_directories + cpdf_set_font_map_file + cpdf_set_horiz_scaling + cpdf_set_keywords + cpdf_set_leading + cpdf_set_page_animation + cpdf_set_subject + cpdf_set_text_matrix + cpdf_set_text_pos + cpdf_set_text_rendering + cpdf_set_text_rise + cpdf_set_title + cpdf_set_viewer_preferences + cpdf_set_word_spacing + cpdf_setdash + cpdf_setflat + cpdf_setgray + cpdf_setgray_fill + cpdf_setgray_stroke + cpdf_setlinecap + cpdf_setlinejoin + cpdf_setlinewidth + cpdf_setmiterlimit + cpdf_setrgbcolor + cpdf_setrgbcolor_fill + cpdf_setrgbcolor_stroke + cpdf_show + cpdf_show_xy + cpdf_stringwidth + cpdf_stroke + cpdf_text + cpdf_translate + crack_check + crack_closedict + crack_getlastmessage + crack_opendict + crc32 + create_attribute + create_cdata_section + create_comment + create_element + create_element_ns + create_entity_reference + create_function + create_processing_instruction + create_text_node + createattribute + createattributens + createcdatasection + createcomment + createdocument + createdocumentfragment + createdocumenttype + createelement + createelementns + createentityreference + createprocessinginstruction + createtextnode + crypt + ctype_alnum + ctype_alpha + ctype_cntrl + ctype_digit + ctype_graph + ctype_lower + ctype_print + ctype_punct + ctype_space + ctype_upper + ctype_xdigit + curl_close + curl_copy_handle + curl_errno + curl_error + curl_exec + curl_getinfo + curl_init + curl_multi_add_handle + curl_multi_close + curl_multi_exec + curl_multi_getcontent + curl_multi_info_read + curl_multi_init + curl_multi_remove_handle + curl_multi_select + curl_setopt + curl_version + current + cybercash_base64_decode + cybercash_base64_encode + cybercash_decr + cybercash_encr + cyrus_authenticate + cyrus_bind + cyrus_close + cyrus_connect + cyrus_query + cyrus_unbind + data + date + date_sunrise + date_sunset + dba_close + dba_delete + dba_exists + dba_fetch + dba_firstkey + dba_handlers + dba_insert + dba_key_split + dba_list + dba_nextkey + dba_open + dba_optimize + dba_popen + dba_replace + dba_sync + dbase_add_record + dbase_close + dbase_create + dbase_delete_record + dbase_get_header_info + dbase_get_record + dbase_get_record_with_names + dbase_numfields + dbase_numrecords + dbase_open + dbase_pack + dbase_replace_record + dblist + dbmclose + dbmdelete + dbmexists + dbmfetch + dbmfirstkey + dbminsert + dbmnextkey + dbmopen + dbmreplace + dbplus_add + dbplus_aql + dbplus_chdir + dbplus_close + dbplus_curr + dbplus_errcode + dbplus_errno + dbplus_find + dbplus_first + dbplus_flush + dbplus_freealllocks + dbplus_freelock + dbplus_freerlocks + dbplus_getlock + dbplus_getunique + dbplus_info + dbplus_last + dbplus_lockrel + dbplus_next + dbplus_open + dbplus_prev + dbplus_rchperm + dbplus_rcreate + dbplus_rcrtexact + dbplus_rcrtlike + dbplus_resolve + dbplus_restorepos + dbplus_rkeys + dbplus_ropen + dbplus_rquery + dbplus_rrename + dbplus_rsecindex + dbplus_runlink + dbplus_rzap + dbplus_savepos + dbplus_setindex + dbplus_setindexbynumber + dbplus_sql + dbplus_tcl + dbplus_tremove + dbplus_undo + dbplus_undoprepare + dbplus_unlockrel + dbplus_unselect + dbplus_update + dbplus_xlockrel + dbplus_xunlockrel + dbstat + dbx_close + dbx_compare + dbx_connect + dbx_error + dbx_escape_string + dbx_fetch_row + dbx_query + dbx_sort + dcgettext + dcngettext + dcstat + deaggregate + debug_backtrace + debug_print_backtrace + debug_zval_dump + debugger_off + debugger_on + decbin + dechex + decoct + decrement + define + define_syslog_variables + defined + deg2rad + delete + deletedata + description + dgettext + dio_close + dio_fcntl + dio_open + dio_read + dio_seek + dio_stat + dio_tcsetattr + dio_truncate + dio_write + dir + dirname + disk_free_space + disk_total_space + diskfreespace + dl + dngettext + dns_check_record + dns_get_mx + dns_get_record + doctype + document_element + dom_import_simplexml + domxml_new_doc + domxml_open_file + domxml_open_mem + domxml_version + domxml_xmltree + domxml_xslt_stylesheet + domxml_xslt_stylesheet_doc + domxml_xslt_stylesheet_file + dotnet + dotnet_load + doubleval + drawcurve + drawcurveto + drawline + drawlineto + dstanchors + dstofsrcanchors + dump_file + dump_mem + dump_node + each + easter_date + easter_days + ebcdic2ascii + end + entities + eof + erase + ereg + ereg_replace + eregi + eregi_replace + error_log + error_reporting + errorcode + errorinfo + escapeshellarg + escapeshellcmd + exec + execute + exif_imagetype + exif_read_data + exif_tagname + exif_thumbnail + exp + explode + expm1 + export + extension_loaded + extract + ezmlm_hash + fam_cancel_monitor + fam_close + fam_monitor_collection + fam_monitor_directory + fam_monitor_file + fam_next_event + fam_open + fam_pending + fam_resume_monitor + fam_suspend_monitor + fbsql_affected_rows + fbsql_autocommit + fbsql_blob_size + fbsql_change_user + fbsql_clob_size + fbsql_close + fbsql_commit + fbsql_connect + fbsql_create_blob + fbsql_create_clob + fbsql_create_db + fbsql_data_seek + fbsql_database + fbsql_database_password + fbsql_db_query + fbsql_db_status + fbsql_drop_db + fbsql_errno + fbsql_error + fbsql_fetch_array + fbsql_fetch_assoc + fbsql_fetch_field + fbsql_fetch_lengths + fbsql_fetch_object + fbsql_fetch_row + fbsql_field_flags + fbsql_field_len + fbsql_field_name + fbsql_field_seek + fbsql_field_table + fbsql_field_type + fbsql_free_result + fbsql_get_autostart_info + fbsql_hostname + fbsql_insert_id + fbsql_list_dbs + fbsql_list_fields + fbsql_list_tables + fbsql_next_result + fbsql_num_fields + fbsql_num_rows + fbsql_password + fbsql_pconnect + fbsql_query + fbsql_read_blob + fbsql_read_clob + fbsql_result + fbsql_rollback + fbsql_select_db + fbsql_set_lob_mode + fbsql_set_password + fbsql_set_transaction + fbsql_start_db + fbsql_stop_db + fbsql_tablename + fbsql_username + fbsql_warnings + fclose + fdf_add_doc_javascript + fdf_add_template + fdf_close + fdf_create + fdf_enum_values + fdf_errno + fdf_error + fdf_get_ap + fdf_get_attachment + fdf_get_encoding + fdf_get_file + fdf_get_flags + fdf_get_opt + fdf_get_status + fdf_get_value + fdf_get_version + fdf_header + fdf_next_field_name + fdf_open + fdf_open_string + fdf_remove_item + fdf_save + fdf_save_string + fdf_set_ap + fdf_set_encoding + fdf_set_file + fdf_set_flags + fdf_set_javascript_action + fdf_set_on_import_javascript + fdf_set_opt + fdf_set_status + fdf_set_submit_form_action + fdf_set_target_frame + fdf_set_value + fdf_set_version + feof + fetch + fetchall + fetchsingle + fflush + fgetc + fgetcsv + fgets + fgetss + file + file_exists + file_get_contents + file_put_contents + fileatime + filectime + filegroup + fileinode + filemtime + fileowner + fileperms + filepro + filepro_fieldcount + filepro_fieldname + filepro_fieldtype + filepro_fieldwidth + filepro_retrieve + filepro_rowcount + filesize + filetype + find + first_child + floatval + flock + floor + flush + fmod + fnmatch + fopen + fpassthru + fprintf + fputcsv + fputs + fread + free + frenchtojd + fribidi_log2vis + fscanf + fseek + fsockopen + fstat + ftell + ftok + ftp_alloc + ftp_cdup + ftp_chdir + ftp_chmod + ftp_close + ftp_connect + ftp_delete + ftp_exec + ftp_fget + ftp_fput + ftp_get + ftp_get_option + ftp_login + ftp_mdtm + ftp_mkdir + ftp_nb_continue + ftp_nb_fget + ftp_nb_fput + ftp_nb_get + ftp_nb_put + ftp_nlist + ftp_pasv + ftp_put + ftp_pwd + ftp_quit + ftp_raw + ftp_rawlist + ftp_rename + ftp_rmdir + ftp_set_option + ftp_site + ftp_size + ftp_ssl_connect + ftp_systype + ftruncate + ftstat + func_get_arg + func_get_args + func_num_args + function_exists + fwrite + gd_info + get + get_attr + get_attribute + get_attribute_node + get_browser + get_cfg_var + get_class + get_class_methods + get_class_vars + get_content + get_current_user + get_declared_classes + get_declared_interfaces + get_defined_constants + get_defined_functions + get_defined_vars + get_element_by_id + get_elements_by_tagname + get_extension_funcs + get_headers + get_html_translation_table + get_include_path + get_included_files + get_loaded_extensions + get_magic_quotes_gpc + get_magic_quotes_runtime + get_meta_tags + get_nodes + get_object_vars + get_parent_class + get_required_files + get_resource_type + getallheaders + getatime + getattr + getattribute + getattributenode + getattributenodens + getattributens + getbuffering + getchildren + getcrc + getctime + getcwd + getdate + getdepth + getelem + getelementbyid + getelementsbytagname + getelementsbytagnamens + getenv + getfilename + getfiletime + getfunctions + getgroup + getheight + gethostbyaddr + gethostbyname + gethostbynamel + gethostos + getimagesize + getinneriterator + getinode + getiterator + getlastmod + getmethod + getmtime + getmxrr + getmygid + getmyinode + getmypid + getmyuid + getname + getnameditem + getnameditemns + getopt + getowner + getpackedsize + getpath + getpathname + getperms + getposition + getprotobyname + getprotobynumber + getrandmax + getrusage + getservbyname + getservbyport + getshape1 + getshape2 + getsize + getstats + getsubiterator + gettext + gettimeofday + gettype + getunpackedsize + getversion + getwidth + glob + gmdate + gmmktime + gmp_abs + gmp_add + gmp_and + gmp_clrbit + gmp_cmp + gmp_com + gmp_div + gmp_div_q + gmp_div_qr + gmp_div_r + gmp_divexact + gmp_fact + gmp_gcd + gmp_gcdext + gmp_hamdist + gmp_init + gmp_intval + gmp_invert + gmp_jacobi + gmp_legendre + gmp_mod + gmp_mul + gmp_neg + gmp_or + gmp_perfect_square + gmp_popcount + gmp_pow + gmp_powm + gmp_prob_prime + gmp_random + gmp_scan0 + gmp_scan1 + gmp_setbit + gmp_sign + gmp_sqrt + gmp_sqrtrem + gmp_strval + gmp_sub + gmp_xor + gmstrftime + gregoriantojd + gzclose + gzcompress + gzdeflate + gzencode + gzeof + gzfile + gzgetc + gzgets + gzgetss + gzinflate + gzopen + gzpassthru + gzputs + gzread + gzrewind + gzseek + gztell + gzuncompress + gzwrite + handle + has_attribute + has_attributes + has_child_nodes + hasattribute + hasattributens + hasattributes + haschildnodes + haschildren + hasfeature + hasnext + hassiblings + header + headers_list + headers_sent + hebrev + hebrevc + hexdec + highlight_file + highlight_string + html_dump_mem + html_entity_decode + htmlentities + htmlspecialchars + http_build_query + hw_array2objrec + hw_changeobject + hw_children + hw_childrenobj + hw_close + hw_connect + hw_connection_info + hw_cp + hw_deleteobject + hw_docbyanchor + hw_docbyanchorobj + hw_document_attributes + hw_document_bodytag + hw_document_content + hw_document_setcontent + hw_document_size + hw_dummy + hw_edittext + hw_error + hw_errormsg + hw_free_document + hw_getanchors + hw_getanchorsobj + hw_getandlock + hw_getchildcoll + hw_getchildcollobj + hw_getchilddoccoll + hw_getchilddoccollobj + hw_getobject + hw_getobjectbyquery + hw_getobjectbyquerycoll + hw_getobjectbyquerycollobj + hw_getobjectbyqueryobj + hw_getparents + hw_getparentsobj + hw_getrellink + hw_getremote + hw_getremotechildren + hw_getsrcbydestobj + hw_gettext + hw_getusername + hw_identify + hw_incollections + hw_info + hw_inscoll + hw_insdoc + hw_insertanchors + hw_insertdocument + hw_insertobject + hw_mapid + hw_modifyobject + hw_mv + hw_new_document + hw_objrec2array + hw_output_document + hw_pconnect + hw_pipedocument + hw_root + hw_setlinkroot + hw_stat + hw_unlock + hw_who + hwapi_hgcsp + hwstat + hypot + ibase_add_user + ibase_affected_rows + ibase_backup + ibase_blob_add + ibase_blob_cancel + ibase_blob_close + ibase_blob_create + ibase_blob_echo + ibase_blob_get + ibase_blob_import + ibase_blob_info + ibase_blob_open + ibase_close + ibase_commit + ibase_commit_ret + ibase_connect + ibase_db_info + ibase_delete_user + ibase_drop_db + ibase_errcode + ibase_errmsg + ibase_execute + ibase_fetch_assoc + ibase_fetch_object + ibase_fetch_row + ibase_field_info + ibase_free_event_handler + ibase_free_query + ibase_free_result + ibase_gen_id + ibase_maintain_db + ibase_modify_user + ibase_name_result + ibase_num_fields + ibase_num_params + ibase_param_info + ibase_pconnect + ibase_prepare + ibase_query + ibase_restore + ibase_rollback + ibase_rollback_ret + ibase_server_info + ibase_service_attach + ibase_service_detach + ibase_set_event_handler + ibase_timefmt + ibase_trans + ibase_wait_event + iconv + iconv_get_encoding + iconv_mime_decode + iconv_mime_decode_headers + iconv_mime_encode + iconv_set_encoding + iconv_strlen + iconv_strpos + iconv_strrpos + iconv_substr + id3_get_genre_id + id3_get_genre_list + id3_get_genre_name + id3_get_tag + id3_get_version + id3_remove_tag + id3_set_tag + idate + identify + ifx_affected_rows + ifx_blobinfile_mode + ifx_byteasvarchar + ifx_close + ifx_connect + ifx_copy_blob + ifx_create_blob + ifx_create_char + ifx_do + ifx_error + ifx_errormsg + ifx_fetch_row + ifx_fieldproperties + ifx_fieldtypes + ifx_free_blob + ifx_free_char + ifx_free_result + ifx_get_blob + ifx_get_char + ifx_getsqlca + ifx_htmltbl_result + ifx_nullformat + ifx_num_fields + ifx_num_rows + ifx_pconnect + ifx_prepare + ifx_query + ifx_textasvarchar + ifx_update_blob + ifx_update_char + ifxus_close_slob + ifxus_create_slob + ifxus_free_slob + ifxus_open_slob + ifxus_read_slob + ifxus_seek_slob + ifxus_tell_slob + ifxus_write_slob + ignore_user_abort + image2wbmp + image_type_to_extension + image_type_to_mime_type + imagealphablending + imageantialias + imagearc + imagechar + imagecharup + imagecolorallocate + imagecolorallocatealpha + imagecolorat + imagecolorclosest + imagecolorclosestalpha + imagecolorclosesthwb + imagecolordeallocate + imagecolorexact + imagecolorexactalpha + imagecolormatch + imagecolorresolve + imagecolorresolvealpha + imagecolorset + imagecolorsforindex + imagecolorstotal + imagecolortransparent + imagecopy + imagecopymerge + imagecopymergegray + imagecopyresampled + imagecopyresized + imagecreate + imagecreatefromgd + imagecreatefromgd2 + imagecreatefromgd2part + imagecreatefromgif + imagecreatefromjpeg + imagecreatefrompng + imagecreatefromstring + imagecreatefromwbmp + imagecreatefromxbm + imagecreatefromxpm + imagecreatetruecolor + imagedashedline + imagedestroy + imageellipse + imagefill + imagefilledarc + imagefilledellipse + imagefilledpolygon + imagefilledrectangle + imagefilltoborder + imagefilter + imagefontheight + imagefontwidth + imageftbbox + imagefttext + imagegammacorrect + imagegd + imagegd2 + imagegif + imageinterlace + imageistruecolor + imagejpeg + imagelayereffect + imageline + imageloadfont + imagepalettecopy + imagepng + imagepolygon + imagepsbbox + imagepscopyfont + imagepsencodefont + imagepsextendfont + imagepsfreefont + imagepsloadfont + imagepsslantfont + imagepstext + imagerectangle + imagerotate + imagesavealpha + imagesetbrush + imagesetpixel + imagesetstyle + imagesetthickness + imagesettile + imagestring + imagestringup + imagesx + imagesy + imagetruecolortopalette + imagettfbbox + imagettftext + imagetypes + imagewbmp + imagexbm + imap_8bit + imap_alerts + imap_append + imap_base64 + imap_binary + imap_body + imap_bodystruct + imap_check + imap_clearflag_full + imap_close + imap_createmailbox + imap_delete + imap_deletemailbox + imap_errors + imap_expunge + imap_fetch_overview + imap_fetchbody + imap_fetchheader + imap_fetchstructure + imap_get_quota + imap_get_quotaroot + imap_getacl + imap_getmailboxes + imap_getsubscribed + imap_header + imap_headerinfo + imap_headers + imap_last_error + imap_list + imap_listmailbox + imap_listscan + imap_listsubscribed + imap_lsub + imap_mail + imap_mail_compose + imap_mail_copy + imap_mail_move + imap_mailboxmsginfo + imap_mime_header_decode + imap_msgno + imap_num_msg + imap_num_recent + imap_open + imap_ping + imap_qprint + imap_renamemailbox + imap_reopen + imap_rfc822_parse_adrlist + imap_rfc822_parse_headers + imap_rfc822_write_address + imap_scanmailbox + imap_search + imap_set_quota + imap_setacl + imap_setflag_full + imap_sort + imap_status + imap_subscribe + imap_thread + imap_timeout + imap_uid + imap_undelete + imap_unsubscribe + imap_utf7_decode + imap_utf7_encode + imap_utf8 + implode + import + import_request_variables + importnode + in_array + increment + inet_ntop + inet_pton + info + ingres_autocommit + ingres_close + ingres_commit + ingres_connect + ingres_fetch_array + ingres_fetch_object + ingres_fetch_row + ingres_field_length + ingres_field_name + ingres_field_nullable + ingres_field_precision + ingres_field_scale + ingres_field_type + ingres_num_fields + ingres_num_rows + ingres_pconnect + ingres_query + ingres_rollback + ini_alter + ini_get + ini_get_all + ini_restore + ini_set + insert + insert_before + insertanchor + insertbefore + insertcollection + insertdata + insertdocument + interface_exists + internal_subset + intval + ip2long + iptcembed + iptcparse + ircg_channel_mode + ircg_disconnect + ircg_eval_ecmascript_params + ircg_fetch_error_msg + ircg_get_username + ircg_html_encode + ircg_ignore_add + ircg_ignore_del + ircg_invite + ircg_is_conn_alive + ircg_join + ircg_kick + ircg_list + ircg_lookup_format_messages + ircg_lusers + ircg_msg + ircg_names + ircg_nick + ircg_nickname_escape + ircg_nickname_unescape + ircg_notice + ircg_oper + ircg_part + ircg_pconnect + ircg_register_format_messages + ircg_set_current + ircg_set_file + ircg_set_on_die + ircg_topic + ircg_who + ircg_whois + is_a + is_array + is_blank_node + is_bool + is_callable + is_dir + is_double + is_executable + is_file + is_finite + is_float + is_infinite + is_int + is_integer + is_link + is_long + is_nan + is_null + is_numeric + is_object + is_readable + is_real + is_resource + is_scalar + is_soap_fault + is_string + is_subclass_of + is_uploaded_file + is_writable + is_writeable + isasp + iscomment + isdir + isdot + isexecutable + isfile + ishtml + isid + isjste + islink + isphp + isreadable + issamenode + issupported + istext + iswhitespaceinelementcontent + iswritable + isxhtml + isxml + item + iterator_count + iterator_to_array + java_last_exception_clear + java_last_exception_get + jddayofweek + jdmonthname + jdtofrench + jdtogregorian + jdtojewish + jdtojulian + jdtounix + jewishtojd + join + jpeg2wbmp + juliantojd + key + krsort + ksort + langdepvalue + last_child + lastinsertid + lcg_value + ldap_8859_to_t61 + ldap_add + ldap_bind + ldap_close + ldap_compare + ldap_connect + ldap_count_entries + ldap_delete + ldap_dn2ufn + ldap_err2str + ldap_errno + ldap_error + ldap_explode_dn + ldap_first_attribute + ldap_first_entry + ldap_first_reference + ldap_free_result + ldap_get_attributes + ldap_get_dn + ldap_get_entries + ldap_get_option + ldap_get_values + ldap_get_values_len + ldap_list + ldap_mod_add + ldap_mod_del + ldap_mod_replace + ldap_modify + ldap_next_attribute + ldap_next_entry + ldap_next_reference + ldap_parse_reference + ldap_parse_result + ldap_read + ldap_rename + ldap_sasl_bind + ldap_search + ldap_set_option + ldap_set_rebind_proc + ldap_sort + ldap_start_tls + ldap_t61_to_8859 + ldap_unbind + levenshtein + link + linkinfo + load + loadhtml + loadhtmlfile + loadxml + localeconv + localtime + lock + log + log10 + log1p + long2ip + lookupnamespaceuri + lookupprefix + lstat + ltrim + lzf_compress + lzf_decompress + lzf_optimized_for + mail + mailparse_determine_best_xfer_encoding + mailparse_msg_create + mailparse_msg_extract_part + mailparse_msg_extract_part_file + mailparse_msg_free + mailparse_msg_get_part + mailparse_msg_get_part_data + mailparse_msg_get_structure + mailparse_msg_parse + mailparse_msg_parse_file + mailparse_rfc822_parse_addresses + mailparse_stream_encode + mailparse_uudecode_all + main + max + mb_convert_case + mb_convert_encoding + mb_convert_kana + mb_convert_variables + mb_decode_mimeheader + mb_decode_numericentity + mb_detect_encoding + mb_detect_order + mb_encode_mimeheader + mb_encode_numericentity + mb_ereg + mb_ereg_match + mb_ereg_replace + mb_ereg_search + mb_ereg_search_getpos + mb_ereg_search_getregs + mb_ereg_search_init + mb_ereg_search_pos + mb_ereg_search_regs + mb_ereg_search_setpos + mb_eregi + mb_eregi_replace + mb_get_info + mb_http_input + mb_http_output + mb_internal_encoding + mb_language + mb_list_encodings + mb_output_handler + mb_parse_str + mb_preferred_mime_name + mb_regex_encoding + mb_regex_set_options + mb_send_mail + mb_split + mb_strcut + mb_strimwidth + mb_strlen + mb_strpos + mb_strrpos + mb_strtolower + mb_strtoupper + mb_strwidth + mb_substitute_character + mb_substr + mb_substr_count + mcal_append_event + mcal_close + mcal_create_calendar + mcal_date_compare + mcal_date_valid + mcal_day_of_week + mcal_day_of_year + mcal_days_in_month + mcal_delete_calendar + mcal_delete_event + mcal_event_add_attribute + mcal_event_init + mcal_event_set_alarm + mcal_event_set_category + mcal_event_set_class + mcal_event_set_description + mcal_event_set_end + mcal_event_set_recur_daily + mcal_event_set_recur_monthly_mday + mcal_event_set_recur_monthly_wday + mcal_event_set_recur_none + mcal_event_set_recur_weekly + mcal_event_set_recur_yearly + mcal_event_set_start + mcal_event_set_title + mcal_expunge + mcal_fetch_current_stream_event + mcal_fetch_event + mcal_is_leap_year + mcal_list_alarms + mcal_list_events + mcal_next_recurrence + mcal_open + mcal_popen + mcal_rename_calendar + mcal_reopen + mcal_snooze + mcal_store_event + mcal_time_valid + mcal_week_of_year + mcrypt_cbc + mcrypt_cfb + mcrypt_create_iv + mcrypt_decrypt + mcrypt_ecb + mcrypt_enc_get_algorithms_name + mcrypt_enc_get_block_size + mcrypt_enc_get_iv_size + mcrypt_enc_get_key_size + mcrypt_enc_get_modes_name + mcrypt_enc_get_supported_key_sizes + mcrypt_enc_is_block_algorithm + mcrypt_enc_is_block_algorithm_mode + mcrypt_enc_is_block_mode + mcrypt_enc_self_test + mcrypt_encrypt + mcrypt_generic + mcrypt_generic_deinit + mcrypt_generic_end + mcrypt_generic_init + mcrypt_get_block_size + mcrypt_get_cipher_name + mcrypt_get_iv_size + mcrypt_get_key_size + mcrypt_list_algorithms + mcrypt_list_modes + mcrypt_module_close + mcrypt_module_get_algo_block_size + mcrypt_module_get_algo_key_size + mcrypt_module_get_supported_key_sizes + mcrypt_module_is_block_algorithm + mcrypt_module_is_block_algorithm_mode + mcrypt_module_is_block_mode + mcrypt_module_open + mcrypt_module_self_test + mcrypt_ofb + mcve_adduser + mcve_adduserarg + mcve_bt + mcve_checkstatus + mcve_chkpwd + mcve_chngpwd + mcve_completeauthorizations + mcve_connect + mcve_connectionerror + mcve_deleteresponse + mcve_deletetrans + mcve_deleteusersetup + mcve_deluser + mcve_destroyconn + mcve_destroyengine + mcve_disableuser + mcve_edituser + mcve_enableuser + mcve_force + mcve_getcell + mcve_getcellbynum + mcve_getcommadelimited + mcve_getheader + mcve_getuserarg + mcve_getuserparam + mcve_gft + mcve_gl + mcve_gut + mcve_initconn + mcve_initengine + mcve_initusersetup + mcve_iscommadelimited + mcve_liststats + mcve_listusers + mcve_maxconntimeout + mcve_monitor + mcve_numcolumns + mcve_numrows + mcve_override + mcve_parsecommadelimited + mcve_ping + mcve_preauth + mcve_preauthcompletion + mcve_qc + mcve_responseparam + mcve_return + mcve_returncode + mcve_returnstatus + mcve_sale + mcve_setblocking + mcve_setdropfile + mcve_setip + mcve_setssl + mcve_setssl_files + mcve_settimeout + mcve_settle + mcve_text_avs + mcve_text_code + mcve_text_cv + mcve_transactionauth + mcve_transactionavs + mcve_transactionbatch + mcve_transactioncv + mcve_transactionid + mcve_transactionitem + mcve_transactionssent + mcve_transactiontext + mcve_transinqueue + mcve_transnew + mcve_transparam + mcve_transsend + mcve_ub + mcve_uwait + mcve_verifyconnection + mcve_verifysslcert + mcve_void + md5 + md5_file + mdecrypt_generic + memcache_debug + memory_get_usage + metaphone + method_exists + mhash + mhash_count + mhash_get_block_size + mhash_get_hash_name + mhash_keygen_s2k + microtime + mime_content_type + mimetype + min + ming_setcubicthreshold + ming_setscale + ming_useswfversion + mkdir + mktime + money_format + move + move_uploaded_file + movepen + movepento + moveto + msession_connect + msession_count + msession_create + msession_destroy + msession_disconnect + msession_find + msession_get + msession_get_array + msession_get_data + msession_inc + msession_list + msession_listvar + msession_lock + msession_plugin + msession_randstr + msession_set + msession_set_array + msession_set_data + msession_timeout + msession_uniq + msession_unlock + msg_get_queue + msg_receive + msg_remove_queue + msg_send + msg_set_queue + msg_stat_queue + msql + msql_affected_rows + msql_close + msql_connect + msql_create_db + msql_createdb + msql_data_seek + msql_db_query + msql_dbname + msql_drop_db + msql_error + msql_fetch_array + msql_fetch_field + msql_fetch_object + msql_fetch_row + msql_field_flags + msql_field_len + msql_field_name + msql_field_seek + msql_field_table + msql_field_type + msql_fieldflags + msql_fieldlen + msql_fieldname + msql_fieldtable + msql_fieldtype + msql_free_result + msql_list_dbs + msql_list_fields + msql_list_tables + msql_num_fields + msql_num_rows + msql_numfields + msql_numrows + msql_pconnect + msql_query + msql_regcase + msql_result + msql_select_db + msql_tablename + mssql_bind + mssql_close + mssql_connect + mssql_data_seek + mssql_execute + mssql_fetch_array + mssql_fetch_assoc + mssql_fetch_batch + mssql_fetch_field + mssql_fetch_object + mssql_fetch_row + mssql_field_length + mssql_field_name + mssql_field_seek + mssql_field_type + mssql_free_result + mssql_free_statement + mssql_get_last_message + mssql_guid_string + mssql_init + mssql_min_error_severity + mssql_min_message_severity + mssql_next_result + mssql_num_fields + mssql_num_rows + mssql_pconnect + mssql_query + mssql_result + mssql_rows_affected + mssql_select_db + mt_getrandmax + mt_rand + mt_srand + multcolor + muscat_close + muscat_get + muscat_give + muscat_setup + muscat_setup_net + mysql_affected_rows + mysql_change_user + mysql_client_encoding + mysql_close + mysql_connect + mysql_create_db + mysql_data_seek + mysql_db_name + mysql_db_query + mysql_drop_db + mysql_errno + mysql_error + mysql_escape_string + mysql_fetch_array + mysql_fetch_assoc + mysql_fetch_field + mysql_fetch_lengths + mysql_fetch_object + mysql_fetch_row + mysql_field_flags + mysql_field_len + mysql_field_name + mysql_field_seek + mysql_field_table + mysql_field_type + mysql_free_result + mysql_get_client_info + mysql_get_host_info + mysql_get_proto_info + mysql_get_server_info + mysql_info + mysql_insert_id + mysql_list_dbs + mysql_list_fields + mysql_list_processes + mysql_list_tables + mysql_num_fields + mysql_num_rows + mysql_pconnect + mysql_ping + mysql_query + mysql_real_escape_string + mysql_result + mysql_select_db + mysql_stat + mysql_tablename + mysql_thread_id + mysql_unbuffered_query + mysqli_affected_rows + mysqli_autocommit + mysqli_bind_param + mysqli_bind_result + mysqli_change_user + mysqli_character_set_name + mysqli_client_encoding + mysqli_close + mysqli_commit + mysqli_connect + mysqli_connect_errno + mysqli_connect_error + mysqli_data_seek + mysqli_debug + mysqli_disable_reads_from_master + mysqli_disable_rpl_parse + mysqli_dump_debug_info + mysqli_embedded_connect + mysqli_enable_reads_from_master + mysqli_enable_rpl_parse + mysqli_errno + mysqli_error + mysqli_escape_string + mysqli_execute + mysqli_fetch + mysqli_fetch_array + mysqli_fetch_assoc + mysqli_fetch_field + mysqli_fetch_field_direct + mysqli_fetch_fields + mysqli_fetch_lengths + mysqli_fetch_object + mysqli_fetch_row + mysqli_field_count + mysqli_field_seek + mysqli_field_tell + mysqli_free_result + mysqli_get_client_info + mysqli_get_client_version + mysqli_get_host_info + mysqli_get_metadata + mysqli_get_proto_info + mysqli_get_server_info + mysqli_get_server_version + mysqli_info + mysqli_init + mysqli_insert_id + mysqli_kill + mysqli_master_query + mysqli_more_results + mysqli_multi_query + mysqli_next_result + mysqli_num_fields + mysqli_num_rows + mysqli_options + mysqli_param_count + mysqli_ping + mysqli_prepare + mysqli_query + mysqli_real_connect + mysqli_real_escape_string + mysqli_real_query + mysqli_report + mysqli_rollback + mysqli_rpl_parse_enabled + mysqli_rpl_probe + mysqli_rpl_query_type + mysqli_select_db + mysqli_send_long_data + mysqli_send_query + mysqli_server_end + mysqli_server_init + mysqli_set_opt + mysqli_sqlstate + mysqli_ssl_set + mysqli_stat + mysqli_stmt_affected_rows + mysqli_stmt_bind_param + mysqli_stmt_bind_result + mysqli_stmt_close + mysqli_stmt_data_seek + mysqli_stmt_errno + mysqli_stmt_error + mysqli_stmt_execute + mysqli_stmt_fetch + mysqli_stmt_free_result + mysqli_stmt_init + mysqli_stmt_num_rows + mysqli_stmt_param_count + mysqli_stmt_prepare + mysqli_stmt_reset + mysqli_stmt_result_metadata + mysqli_stmt_send_long_data + mysqli_stmt_sqlstate + mysqli_stmt_store_result + mysqli_store_result + mysqli_thread_id + mysqli_thread_safe + mysqli_use_result + mysqli_warning_count + name + natcasesort + natsort + ncurses_addch + ncurses_addchnstr + ncurses_addchstr + ncurses_addnstr + ncurses_addstr + ncurses_assume_default_colors + ncurses_attroff + ncurses_attron + ncurses_attrset + ncurses_baudrate + ncurses_beep + ncurses_bkgd + ncurses_bkgdset + ncurses_border + ncurses_bottom_panel + ncurses_can_change_color + ncurses_cbreak + ncurses_clear + ncurses_clrtobot + ncurses_clrtoeol + ncurses_color_content + ncurses_color_set + ncurses_curs_set + ncurses_def_prog_mode + ncurses_def_shell_mode + ncurses_define_key + ncurses_del_panel + ncurses_delay_output + ncurses_delch + ncurses_deleteln + ncurses_delwin + ncurses_doupdate + ncurses_echo + ncurses_echochar + ncurses_end + ncurses_erase + ncurses_erasechar + ncurses_filter + ncurses_flash + ncurses_flushinp + ncurses_getch + ncurses_getmaxyx + ncurses_getmouse + ncurses_getyx + ncurses_halfdelay + ncurses_has_colors + ncurses_has_ic + ncurses_has_il + ncurses_has_key + ncurses_hide_panel + ncurses_hline + ncurses_inch + ncurses_init + ncurses_init_color + ncurses_init_pair + ncurses_insch + ncurses_insdelln + ncurses_insertln + ncurses_insstr + ncurses_instr + ncurses_isendwin + ncurses_keyok + ncurses_keypad + ncurses_killchar + ncurses_longname + ncurses_meta + ncurses_mouse_trafo + ncurses_mouseinterval + ncurses_mousemask + ncurses_move + ncurses_move_panel + ncurses_mvaddch + ncurses_mvaddchnstr + ncurses_mvaddchstr + ncurses_mvaddnstr + ncurses_mvaddstr + ncurses_mvcur + ncurses_mvdelch + ncurses_mvgetch + ncurses_mvhline + ncurses_mvinch + ncurses_mvvline + ncurses_mvwaddstr + ncurses_napms + ncurses_new_panel + ncurses_newpad + ncurses_newwin + ncurses_nl + ncurses_nocbreak + ncurses_noecho + ncurses_nonl + ncurses_noqiflush + ncurses_noraw + ncurses_pair_content + ncurses_panel_above + ncurses_panel_below + ncurses_panel_window + ncurses_pnoutrefresh + ncurses_prefresh + ncurses_putp + ncurses_qiflush + ncurses_raw + ncurses_refresh + ncurses_replace_panel + ncurses_reset_prog_mode + ncurses_reset_shell_mode + ncurses_resetty + ncurses_savetty + ncurses_scr_dump + ncurses_scr_init + ncurses_scr_restore + ncurses_scr_set + ncurses_scrl + ncurses_show_panel + ncurses_slk_attr + ncurses_slk_attroff + ncurses_slk_attron + ncurses_slk_attrset + ncurses_slk_clear + ncurses_slk_color + ncurses_slk_init + ncurses_slk_noutrefresh + ncurses_slk_refresh + ncurses_slk_restore + ncurses_slk_set + ncurses_slk_touch + ncurses_standend + ncurses_standout + ncurses_start_color + ncurses_termattrs + ncurses_termname + ncurses_timeout + ncurses_top_panel + ncurses_typeahead + ncurses_ungetch + ncurses_ungetmouse + ncurses_update_panels + ncurses_use_default_colors + ncurses_use_env + ncurses_use_extended_names + ncurses_vidattr + ncurses_vline + ncurses_waddch + ncurses_waddstr + ncurses_wattroff + ncurses_wattron + ncurses_wattrset + ncurses_wborder + ncurses_wclear + ncurses_wcolor_set + ncurses_werase + ncurses_wgetch + ncurses_whline + ncurses_wmouse_trafo + ncurses_wmove + ncurses_wnoutrefresh + ncurses_wrefresh + ncurses_wstandend + ncurses_wstandout + ncurses_wvline + next + next_sibling + nextframe + ngettext + nl2br + nl_langinfo + node_name + node_type + node_value + normalize + notations + notes_body + notes_copy_db + notes_create_db + notes_create_note + notes_drop_db + notes_find_note + notes_header_info + notes_list_msgs + notes_mark_read + notes_mark_unread + notes_nav_create + notes_search + notes_unread + notes_version + nsapi_request_headers + nsapi_response_headers + nsapi_virtual + number_format + ob_clean + ob_end_clean + ob_end_flush + ob_flush + ob_get_clean + ob_get_contents + ob_get_flush + ob_get_length + ob_get_level + ob_get_status + ob_gzhandler + ob_iconv_handler + ob_implicit_flush + ob_list_handlers + ob_start + ob_tidyhandler + object + objectbyanchor + oci_bind_by_name + oci_cancel + oci_close + oci_commit + oci_connect + oci_define_by_name + oci_error + oci_execute + oci_fetch + oci_fetch_all + oci_fetch_array + oci_fetch_assoc + oci_fetch_object + oci_fetch_row + oci_field_is_null + oci_field_name + oci_field_precision + oci_field_scale + oci_field_size + oci_field_type + oci_field_type_raw + oci_free_statement + oci_internal_debug + oci_lob_copy + oci_lob_is_equal + oci_new_collection + oci_new_connect + oci_new_cursor + oci_new_descriptor + oci_num_fields + oci_num_rows + oci_parse + oci_password_change + oci_pconnect + oci_result + oci_rollback + oci_server_version + oci_set_prefetch + oci_statement_type + ocibindbyname + ocicancel + ocicloselob + ocicollappend + ocicollassign + ocicollassignelem + ocicollgetelem + ocicollmax + ocicollsize + ocicolltrim + ocicolumnisnull + ocicolumnname + ocicolumnprecision + ocicolumnscale + ocicolumnsize + ocicolumntype + ocicolumntyperaw + ocicommit + ocidefinebyname + ocierror + ociexecute + ocifetch + ocifetchinto + ocifetchstatement + ocifreecollection + ocifreecursor + ocifreedesc + ocifreestatement + ociinternaldebug + ociloadlob + ocilogoff + ocilogon + ocinewcollection + ocinewcursor + ocinewdescriptor + ocinlogon + ocinumcols + ociparse + ociplogon + ociresult + ocirollback + ocirowcount + ocisavelob + ocisavelobfile + ociserverversion + ocisetprefetch + ocistatementtype + ociwritelobtofile + ociwritetemporarylob + octdec + odbc_autocommit + odbc_binmode + odbc_close + odbc_close_all + odbc_columnprivileges + odbc_columns + odbc_commit + odbc_connect + odbc_cursor + odbc_data_source + odbc_do + odbc_error + odbc_errormsg + odbc_exec + odbc_execute + odbc_fetch_array + odbc_fetch_into + odbc_fetch_object + odbc_fetch_row + odbc_field_len + odbc_field_name + odbc_field_num + odbc_field_precision + odbc_field_scale + odbc_field_type + odbc_foreignkeys + odbc_free_result + odbc_gettypeinfo + odbc_longreadlen + odbc_next_result + odbc_num_fields + odbc_num_rows + odbc_pconnect + odbc_prepare + odbc_primarykeys + odbc_procedurecolumns + odbc_procedures + odbc_result + odbc_result_all + odbc_rollback + odbc_setoption + odbc_specialcolumns + odbc_statistics + odbc_tableprivileges + odbc_tables + offsetexists + offsetget + offsetset + offsetunset + openal_buffer_create + openal_buffer_data + openal_buffer_destroy + openal_buffer_get + openal_buffer_loadwav + openal_context_create + openal_context_current + openal_context_destroy + openal_context_process + openal_context_suspend + openal_device_close + openal_device_open + openal_listener_get + openal_listener_set + openal_source_create + openal_source_destroy + openal_source_get + openal_source_pause + openal_source_play + openal_source_rewind + openal_source_set + openal_source_stop + openal_stream + opendir + openlog + openssl_csr_export + openssl_csr_export_to_file + openssl_csr_new + openssl_csr_sign + openssl_error_string + openssl_free_key + openssl_get_privatekey + openssl_get_publickey + openssl_open + openssl_pkcs7_decrypt + openssl_pkcs7_encrypt + openssl_pkcs7_sign + openssl_pkcs7_verify + openssl_pkey_export + openssl_pkey_export_to_file + openssl_pkey_get_private + openssl_pkey_get_public + openssl_pkey_new + openssl_private_decrypt + openssl_private_encrypt + openssl_public_decrypt + openssl_public_encrypt + openssl_seal + openssl_sign + openssl_verify + openssl_x509_check_private_key + openssl_x509_checkpurpose + openssl_x509_export + openssl_x509_export_to_file + openssl_x509_free + openssl_x509_parse + openssl_x509_read + ora_bind + ora_close + ora_columnname + ora_columnsize + ora_columntype + ora_commit + ora_commitoff + ora_commiton + ora_do + ora_error + ora_errorcode + ora_exec + ora_fetch + ora_fetch_into + ora_getcolumn + ora_logoff + ora_logon + ora_numcols + ora_numrows + ora_open + ora_parse + ora_plogon + ora_rollback + ord + output + output_add_rewrite_var + output_reset_rewrite_vars + overload + override_function + ovrimos_close + ovrimos_commit + ovrimos_connect + ovrimos_cursor + ovrimos_exec + ovrimos_execute + ovrimos_fetch_into + ovrimos_fetch_row + ovrimos_field_len + ovrimos_field_name + ovrimos_field_num + ovrimos_field_type + ovrimos_free_result + ovrimos_longreadlen + ovrimos_num_fields + ovrimos_num_rows + ovrimos_prepare + ovrimos_result + ovrimos_result_all + ovrimos_rollback + owner_document + pack + parent_node + parents + parse_ini_file + parse_str + parse_url + parsekit_compile_file + parsekit_compile_string + parsekit_func_arginfo + passthru + pathinfo + pclose + pcntl_alarm + pcntl_exec + pcntl_fork + pcntl_getpriority + pcntl_setpriority + pcntl_signal + pcntl_wait + pcntl_waitpid + pcntl_wexitstatus + pcntl_wifexited + pcntl_wifsignaled + pcntl_wifstopped + pcntl_wstopsig + pcntl_wtermsig + pconnect + pdf_add_annotation + pdf_add_bookmark + pdf_add_launchlink + pdf_add_locallink + pdf_add_note + pdf_add_outline + pdf_add_pdflink + pdf_add_thumbnail + pdf_add_weblink + pdf_arc + pdf_arcn + pdf_attach_file + pdf_begin_page + pdf_begin_pattern + pdf_begin_template + pdf_circle + pdf_clip + pdf_close + pdf_close_image + pdf_close_pdi + pdf_close_pdi_page + pdf_closepath + pdf_closepath_fill_stroke + pdf_closepath_stroke + pdf_concat + pdf_continue_text + pdf_curveto + pdf_delete + pdf_end_page + pdf_end_pattern + pdf_end_template + pdf_endpath + pdf_fill + pdf_fill_stroke + pdf_findfont + pdf_fit_pdi_page + pdf_get_buffer + pdf_get_font + pdf_get_fontname + pdf_get_fontsize + pdf_get_image_height + pdf_get_image_width + pdf_get_majorversion + pdf_get_minorversion + pdf_get_parameter + pdf_get_pdi_parameter + pdf_get_pdi_value + pdf_get_value + pdf_initgraphics + pdf_lineto + pdf_load_font + pdf_makespotcolor + pdf_moveto + pdf_new + pdf_open + pdf_open_ccitt + pdf_open_file + pdf_open_gif + pdf_open_image + pdf_open_image_file + pdf_open_jpeg + pdf_open_memory_image + pdf_open_pdi + pdf_open_pdi_page + pdf_open_png + pdf_open_tiff + pdf_place_image + pdf_place_pdi_page + pdf_rect + pdf_restore + pdf_rotate + pdf_save + pdf_scale + pdf_set_border_color + pdf_set_border_dash + pdf_set_border_style + pdf_set_char_spacing + pdf_set_duration + pdf_set_font + pdf_set_horiz_scaling + pdf_set_info + pdf_set_info_author + pdf_set_info_creator + pdf_set_info_keywords + pdf_set_info_subject + pdf_set_info_title + pdf_set_leading + pdf_set_parameter + pdf_set_text_matrix + pdf_set_text_pos + pdf_set_text_rendering + pdf_set_text_rise + pdf_set_value + pdf_set_word_spacing + pdf_setcolor + pdf_setdash + pdf_setflat + pdf_setfont + pdf_setgray + pdf_setgray_fill + pdf_setgray_stroke + pdf_setlinecap + pdf_setlinejoin + pdf_setlinewidth + pdf_setmatrix + pdf_setmiterlimit + pdf_setpolydash + pdf_setrgbcolor + pdf_setrgbcolor_fill + pdf_setrgbcolor_stroke + pdf_show + pdf_show_boxed + pdf_show_xy + pdf_skew + pdf_stringwidth + pdf_stroke + pdf_translate + pfpro_cleanup + pfpro_init + pfpro_process + pfpro_process_raw + pfpro_version + pfsockopen + pg_affected_rows + pg_cancel_query + pg_client_encoding + pg_close + pg_connect + pg_connection_busy + pg_connection_reset + pg_connection_status + pg_convert + pg_copy_from + pg_copy_to + pg_dbname + pg_delete + pg_end_copy + pg_escape_bytea + pg_escape_string + pg_fetch_all + pg_fetch_array + pg_fetch_assoc + pg_fetch_object + pg_fetch_result + pg_fetch_row + pg_field_is_null + pg_field_name + pg_field_num + pg_field_prtlen + pg_field_size + pg_field_type + pg_free_result + pg_get_notify + pg_get_pid + pg_get_result + pg_host + pg_insert + pg_last_error + pg_last_notice + pg_last_oid + pg_lo_close + pg_lo_create + pg_lo_export + pg_lo_import + pg_lo_open + pg_lo_read + pg_lo_read_all + pg_lo_seek + pg_lo_tell + pg_lo_unlink + pg_lo_write + pg_meta_data + pg_num_fields + pg_num_rows + pg_options + pg_parameter_status + pg_pconnect + pg_ping + pg_port + pg_put_line + pg_query + pg_result_error + pg_result_seek + pg_result_status + pg_select + pg_send_query + pg_set_client_encoding + pg_trace + pg_tty + pg_unescape_bytea + pg_untrace + pg_update + pg_version + php_check_syntax + php_ini_scanned_files + php_logo_guid + php_sapi_name + php_strip_whitespace + php_uname + phpcredits + phpinfo + phpversion + pi + png2wbmp + popen + pos + posix_ctermid + posix_get_last_error + posix_getcwd + posix_getegid + posix_geteuid + posix_getgid + posix_getgrgid + posix_getgrnam + posix_getgroups + posix_getlogin + posix_getpgid + posix_getpgrp + posix_getpid + posix_getppid + posix_getpwnam + posix_getpwuid + posix_getrlimit + posix_getsid + posix_getuid + posix_isatty + posix_kill + posix_mkfifo + posix_setegid + posix_seteuid + posix_setgid + posix_setpgid + posix_setsid + posix_setuid + posix_strerror + posix_times + posix_ttyname + posix_uname + pow + prefix + preg_grep + preg_match + preg_match_all + preg_quote + preg_replace + preg_replace_callback + preg_split + prepare + prev + previous_sibling + print_r + printer_abort + printer_close + printer_create_brush + printer_create_dc + printer_create_font + printer_create_pen + printer_delete_brush + printer_delete_dc + printer_delete_font + printer_delete_pen + printer_draw_bmp + printer_draw_chord + printer_draw_elipse + printer_draw_line + printer_draw_pie + printer_draw_rectangle + printer_draw_roundrect + printer_draw_text + printer_end_doc + printer_end_page + printer_get_option + printer_list + printer_logical_fontheight + printer_open + printer_select_brush + printer_select_font + printer_select_pen + printer_set_option + printer_start_doc + printer_start_page + printer_write + printf + proc_close + proc_get_status + proc_nice + proc_open + proc_terminate + process + pspell_add_to_personal + pspell_add_to_session + pspell_check + pspell_clear_session + pspell_config_create + pspell_config_data_dir + pspell_config_dict_dir + pspell_config_ignore + pspell_config_mode + pspell_config_personal + pspell_config_repl + pspell_config_runtogether + pspell_config_save_repl + pspell_new + pspell_new_config + pspell_new_personal + pspell_save_wordlist + pspell_store_replacement + pspell_suggest + public_id + putenv + qdom_error + qdom_tree + query + quoted_printable_decode + quotemeta + rad2deg + rand + range + rar_close + rar_entry_get + rar_list + rar_open + rawurldecode + rawurlencode + read + read_exif_data + readdir + readfile + readgzfile + readline + readline_add_history + readline_callback_handler_install + readline_callback_handler_remove + readline_callback_read_char + readline_clear_history + readline_completion_function + readline_info + readline_list_history + readline_on_new_line + readline_read_history + readline_redisplay + readline_write_history + readlink + realpath + reason + recode + recode_file + recode_string + register_shutdown_function + register_tick_function + registernamespace + relaxngvalidate + relaxngvalidatesource + remove + remove_attribute + remove_child + removeattribute + removeattributenode + removeattributens + removechild + rename + rename_function + replace + replace_child + replace_node + replacechild + replacedata + reset + restore_error_handler + restore_exception_handler + restore_include_path + result_dump_file + result_dump_mem + rewind + rewinddir + rmdir + rollback + rotate + rotateto + round + rowcount + rsort + rtrim + save + savehtml + savehtmlfile + savexml + scale + scaleto + scandir + schemavalidate + schemavalidatesource + seek + sem_acquire + sem_get + sem_release + sem_remove + serialize + sesam_affected_rows + sesam_commit + sesam_connect + sesam_diagnostic + sesam_disconnect + sesam_errormsg + sesam_execimm + sesam_fetch_array + sesam_fetch_result + sesam_fetch_row + sesam_field_array + sesam_field_name + sesam_free_result + sesam_num_fields + sesam_query + sesam_rollback + sesam_seek_row + sesam_settransaction + session_cache_expire + session_cache_limiter + session_commit + session_decode + session_destroy + session_encode + session_get_cookie_params + session_id + session_is_registered + session_module_name + session_name + session_regenerate_id + session_register + session_save_path + session_set_cookie_params + session_set_save_handler + session_start + session_unregister + session_unset + session_write_close + set + set_attribute + set_content + set_error_handler + set_exception_handler + set_file_buffer + set_include_path + set_magic_quotes_runtime + set_name + set_namespace + set_time_limit + setaction + setattribute + setattributenode + setattributenodens + setattributens + setbackground + setbounds + setbuffering + setclass + setcolor + setcommitedversion + setcookie + setdepth + setdimension + setdown + setfont + setframes + setheight + sethit + setindentation + setleftfill + setleftmargin + setline + setlinespacing + setlocale + setmargins + setname + setover + setpersistence + setrate + setratio + setrawcookie + setrightfill + setrightmargin + setspacing + settype + setup + sha1 + sha1_file + shell_exec + shm_attach + shm_detach + shm_get_var + shm_put_var + shm_remove + shm_remove_var + shmop_close + shmop_delete + shmop_open + shmop_read + shmop_size + shmop_write + show_source + shuffle + similar_text + simplexml_import_dom + simplexml_load_file + simplexml_load_string + sin + sinh + size + sizeof + skewx + skewxto + skewy + skewyto + sleep + snmp_get_quick_print + snmp_get_valueretrieval + snmp_read_mib + snmp_set_enum_print + snmp_set_oid_numeric_print + snmp_set_quick_print + snmp_set_valueretrieval + snmpget + snmpgetnext + snmprealwalk + snmpset + snmpwalk + snmpwalkoid + socket_accept + socket_bind + socket_clear_error + socket_close + socket_connect + socket_create + socket_create_listen + socket_create_pair + socket_get_option + socket_get_status + socket_getpeername + socket_getsockname + socket_last_error + socket_listen + socket_read + socket_recv + socket_recvfrom + socket_select + socket_send + socket_sendto + socket_set_block + socket_set_blocking + socket_set_nonblock + socket_set_option + socket_set_timeout + socket_shutdown + socket_strerror + socket_write + sort + soundex + specified + spl_classes + split + spliti + splittext + sprintf + sql_regcase + sqlite_array_query + sqlite_busy_timeout + sqlite_changes + sqlite_close + sqlite_column + sqlite_create_aggregate + sqlite_create_function + sqlite_current + sqlite_error_string + sqlite_escape_string + sqlite_exec + sqlite_factory + sqlite_fetch_all + sqlite_fetch_array + sqlite_fetch_column_types + sqlite_fetch_object + sqlite_fetch_single + sqlite_fetch_string + sqlite_field_name + sqlite_has_more + sqlite_has_prev + sqlite_last_error + sqlite_last_insert_rowid + sqlite_libencoding + sqlite_libversion + sqlite_next + sqlite_num_fields + sqlite_num_rows + sqlite_open + sqlite_popen + sqlite_prev + sqlite_query + sqlite_rewind + sqlite_seek + sqlite_single_query + sqlite_udf_decode_binary + sqlite_udf_encode_binary + sqlite_unbuffered_query + sqrt + srand + srcanchors + srcsofdst + sscanf + stat + str_ireplace + str_pad + str_repeat + str_replace + str_rot13 + str_shuffle + str_split + str_word_count + strcasecmp + strchr + strcmp + strcoll + strcspn + stream_context_create + stream_context_get_default + stream_context_get_options + stream_context_set_option + stream_context_set_params + stream_copy_to_stream + stream_filter_append + stream_filter_prepend + stream_filter_register + stream_filter_remove + stream_get_contents + stream_get_filters + stream_get_line + stream_get_meta_data + stream_get_transports + stream_get_wrappers + stream_register_wrapper + stream_select + stream_set_blocking + stream_set_timeout + stream_set_write_buffer + stream_socket_accept + stream_socket_client + stream_socket_enable_crypto + stream_socket_get_name + stream_socket_recvfrom + stream_socket_sendto + stream_socket_server + stream_wrapper_register + stream_wrapper_restore + stream_wrapper_unregister + streammp3 + strftime + strip_tags + stripcslashes + stripos + stripslashes + stristr + strlen + strnatcasecmp + strnatcmp + strncasecmp + strncmp + strpbrk + strpos + strptime + strrchr + strrev + strripos + strrpos + strspn + strstr + strtok + strtolower + strtotime + strtoupper + strtr + strval + substr + substr_compare + substr_count + substr_replace + substringdata + swf_actiongeturl + swf_actiongotoframe + swf_actiongotolabel + swf_actionnextframe + swf_actionplay + swf_actionprevframe + swf_actionsettarget + swf_actionstop + swf_actiontogglequality + swf_actionwaitforframe + swf_addbuttonrecord + swf_addcolor + swf_closefile + swf_definebitmap + swf_definefont + swf_defineline + swf_definepoly + swf_definerect + swf_definetext + swf_endbutton + swf_enddoaction + swf_endshape + swf_endsymbol + swf_fontsize + swf_fontslant + swf_fonttracking + swf_getbitmapinfo + swf_getfontinfo + swf_getframe + swf_labelframe + swf_lookat + swf_modifyobject + swf_mulcolor + swf_nextid + swf_oncondition + swf_openfile + swf_ortho + swf_ortho2 + swf_perspective + swf_placeobject + swf_polarview + swf_popmatrix + swf_posround + swf_pushmatrix + swf_removeobject + swf_rotate + swf_scale + swf_setfont + swf_setframe + swf_shapearc + swf_shapecurveto + swf_shapecurveto3 + swf_shapefillbitmapclip + swf_shapefillbitmaptile + swf_shapefilloff + swf_shapefillsolid + swf_shapelinesolid + swf_shapelineto + swf_shapemoveto + swf_showframe + swf_startbutton + swf_startdoaction + swf_startshape + swf_startsymbol + swf_textwidth + swf_translate + swf_viewport + swfbutton_keypress + sybase_affected_rows + sybase_close + sybase_connect + sybase_data_seek + sybase_deadlock_retry_count + sybase_fetch_array + sybase_fetch_assoc + sybase_fetch_field + sybase_fetch_object + sybase_fetch_row + sybase_field_seek + sybase_free_result + sybase_get_last_message + sybase_min_client_severity + sybase_min_error_severity + sybase_min_message_severity + sybase_min_server_severity + sybase_num_fields + sybase_num_rows + sybase_pconnect + sybase_query + sybase_result + sybase_select_db + sybase_set_message_handler + sybase_unbuffered_query + symlink + syslog + system + system_id + tagname + tan + tanh + target + tcpwrap_check + tell + tempnam + textdomain + tidy_access_count + tidy_clean_repair + tidy_config_count + tidy_diagnose + tidy_error_count + tidy_get_body + tidy_get_config + tidy_get_error_buffer + tidy_get_head + tidy_get_html + tidy_get_html_ver + tidy_get_output + tidy_get_release + tidy_get_root + tidy_get_status + tidy_getopt + tidy_is_xhtml + tidy_is_xml + tidy_load_config + tidy_parse_file + tidy_parse_string + tidy_repair_file + tidy_repair_string + tidy_reset_config + tidy_save_config + tidy_set_encoding + tidy_setopt + tidy_warning_count + time + time_nanosleep + title + tmpfile + token_get_all + token_name + touch + trigger_error + trim + truncate + type + uasort + ucfirst + ucwords + udm_add_search_limit + udm_alloc_agent + udm_alloc_agent_array + udm_api_version + udm_cat_list + udm_cat_path + udm_check_charset + udm_check_stored + udm_clear_search_limits + udm_close_stored + udm_crc32 + udm_errno + udm_error + udm_find + udm_free_agent + udm_free_ispell_data + udm_free_res + udm_get_doc_count + udm_get_res_field + udm_get_res_param + udm_hash32 + udm_load_ispell_data + udm_open_stored + udm_set_agent_param + uksort + umask + uniqid + unixtojd + unlink + unlink_node + unlock + unpack + unregister_tick_function + unserialize + urldecode + urlencode + user + user_error + userlist + usleep + usort + utf8_decode + utf8_encode + valid + validate + value + values + var_dump + var_export + variant_abs + variant_add + variant_and + variant_cast + variant_cat + variant_cmp + variant_date_from_timestamp + variant_date_to_timestamp + variant_div + variant_eqv + variant_fix + variant_get_type + variant_idiv + variant_imp + variant_int + variant_mod + variant_mul + variant_neg + variant_not + variant_or + variant_pow + variant_round + variant_set + variant_set_type + variant_sub + variant_xor + version_compare + vfprintf + virtual + vpopmail_add_alias_domain + vpopmail_add_alias_domain_ex + vpopmail_add_domain + vpopmail_add_domain_ex + vpopmail_add_user + vpopmail_alias_add + vpopmail_alias_del + vpopmail_alias_del_domain + vpopmail_alias_get + vpopmail_alias_get_all + vpopmail_auth_user + vpopmail_del_domain + vpopmail_del_domain_ex + vpopmail_del_user + vpopmail_error + vpopmail_passwd + vpopmail_set_user_quota + vprintf + vsprintf + w32api_deftype + w32api_init_dtype + w32api_invoke_function + w32api_register_function + w32api_set_call_method + wddx_add_vars + wddx_deserialize + wddx_packet_end + wddx_packet_start + wddx_serialize_value + wddx_serialize_vars + wordwrap + write + writetemporary + xattr_get + xattr_list + xattr_remove + xattr_set + xattr_supported + xdiff_file_diff + xdiff_file_diff_binary + xdiff_file_merge3 + xdiff_file_patch + xdiff_file_patch_binary + xdiff_string_diff + xdiff_string_diff_binary + xdiff_string_merge3 + xdiff_string_patch + xdiff_string_patch_binary + xinclude + xml_error_string + xml_get_current_byte_index + xml_get_current_column_number + xml_get_current_line_number + xml_get_error_code + xml_parse + xml_parse_into_struct + xml_parser_create + xml_parser_create_ns + xml_parser_free + xml_parser_get_option + xml_parser_set_option + xml_set_character_data_handler + xml_set_default_handler + xml_set_element_handler + xml_set_end_namespace_decl_handler + xml_set_external_entity_ref_handler + xml_set_notation_decl_handler + xml_set_object + xml_set_processing_instruction_handler + xml_set_start_namespace_decl_handler + xml_set_unparsed_entity_decl_handler + xmlrpc_decode + xmlrpc_decode_request + xmlrpc_encode + xmlrpc_encode_request + xmlrpc_get_type + xmlrpc_is_fault + xmlrpc_parse_method_descriptions + xmlrpc_server_add_introspection_data + xmlrpc_server_call_method + xmlrpc_server_create + xmlrpc_server_destroy + xmlrpc_server_register_introspection_callback + xmlrpc_server_register_method + xmlrpc_set_type + xpath + xpath_eval + xpath_eval_expression + xpath_new_context + xptr_eval + xptr_new_context + xsl_xsltprocessor_get_parameter + xsl_xsltprocessor_has_exslt_support + xsl_xsltprocessor_import_stylesheet + xsl_xsltprocessor_register_php_functions + xsl_xsltprocessor_remove_parameter + xsl_xsltprocessor_set_parameter + xsl_xsltprocessor_transform_to_doc + xsl_xsltprocessor_transform_to_uri + xsl_xsltprocessor_transform_to_xml + xslt_backend_info + xslt_backend_name + xslt_backend_version + xslt_create + xslt_errno + xslt_error + xslt_free + xslt_getopt + xslt_process + xslt_set_base + xslt_set_encoding + xslt_set_error_handler + xslt_set_log + xslt_set_object + xslt_set_sax_handler + xslt_set_sax_handlers + xslt_set_scheme_handler + xslt_set_scheme_handlers + xslt_setopt + yaz_addinfo + yaz_ccl_conf + yaz_ccl_parse + yaz_close + yaz_connect + yaz_database + yaz_element + yaz_errno + yaz_error + yaz_es_result + yaz_get_option + yaz_hits + yaz_itemorder + yaz_present + yaz_range + yaz_record + yaz_scan + yaz_scan_result + yaz_schema + yaz_search + yaz_set_option + yaz_sort + yaz_syntax + yaz_wait + yp_all + yp_cat + yp_err_string + yp_errno + yp_first + yp_get_default_domain + yp_master + yp_match + yp_next + yp_order + zend_logo_guid + zend_version + zip_close + zip_entry_close + zip_entry_compressedsize + zip_entry_compressionmethod + zip_entry_filesize + zip_entry_name + zip_entry_open + zip_entry_read + zip_open + zip_read + zlib_get_coding_type + + + + apache_request_headers + apache_response_headers + attr_get + attr_set + autocommit + bind_param + bind_result + bzclose + bzflush + bzwrite + change_user + character_set_name + checkdnsrr + chop + client_encoding + close + commit + connect + data_seek + debug + disable_reads_from_master + disable_rpl_parse + diskfreespace + doubleval + dump_debug_info + enable_reads_from_master + enable_rpl_parse + escape_string + execute + fbird_add_user + fbird_affected_rows + fbird_backup + fbird_blob_add + fbird_blob_cancel + fbird_blob_close + fbird_blob_create + fbird_blob_echo + fbird_blob_get + fbird_blob_import + fbird_blob_info + fbird_blob_open + fbird_close + fbird_commit + fbird_commit_ret + fbird_connect + fbird_db_info + fbird_delete_user + fbird_drop_db + fbird_errcode + fbird_errmsg + fbird_execute + fbird_fetch_assoc + fbird_fetch_object + fbird_fetch_row + fbird_field_info + fbird_free_event_handler + fbird_free_query + fbird_free_result + fbird_gen_id + fbird_maintain_db + fbird_modify_user + fbird_name_result + fbird_num_fields + fbird_num_params + fbird_num_rows + fbird_param_info + fbird_pconnect + fbird_prepare + fbird_query + fbird_restore + fbird_rollback + fbird_rollback_ret + fbird_server_info + fbird_service_attach + fbird_service_detach + fbird_set_event_handler + fbird_trans + fbird_wait_event + fbsql + fbsql_tablename + fetch + fetch_array + fetch_assoc + fetch_field + fetch_field_direct + fetch_fields + fetch_object + fetch_row + field_count + field_seek + fputs + free + free_result + ftp_quit + get_client_info + get_required_files + get_server_info + getallheaders + getmxrr + gmp_div + gzclose + gzeof + gzgetc + gzgets + gzgetss + gzpassthru + gzputs + gzread + gzrewind + gzseek + gztell + gzwrite + imap_create + imap_fetchtext + imap_header + imap_listmailbox + imap_listsubscribed + imap_rename + ini_alter + init + is_double + is_int + is_integer + is_real + is_writeable + join + key_exists + kill + ldap_close + ldap_modify + magic_quotes_runtime + master_query + ming_keypress + ming_setcubicthreshold + ming_setscale + ming_useconstants + ming_useswfversion + more_results + msql + msql_affected_rows + msql_createdb + msql_dbname + msql_dropdb + msql_fieldflags + msql_fieldlen + msql_fieldname + msql_fieldtable + msql_fieldtype + msql_freeresult + msql_listdbs + msql_listfields + msql_listtables + msql_numfields + msql_numrows + msql_regcase + msql_selectdb + msql_tablename + mssql_affected_rows + mssql_close + mssql_connect + mssql_data_seek + mssql_deadlock_retry_count + mssql_fetch_array + mssql_fetch_assoc + mssql_fetch_field + mssql_fetch_object + mssql_fetch_row + mssql_field_seek + mssql_free_result + mssql_get_last_message + mssql_min_client_severity + mssql_min_error_severity + mssql_min_message_severity + mssql_min_server_severity + mssql_num_fields + mssql_num_rows + mssql_pconnect + mssql_query + mssql_result + mssql_select_db + mssql_set_message_handler + mssql_unbuffered_query + multi_query + mysql + mysql_createdb + mysql_db_name + mysql_dbname + mysql_dropdb + mysql_fieldflags + mysql_fieldlen + mysql_fieldname + mysql_fieldtable + mysql_fieldtype + mysql_freeresult + mysql_listdbs + mysql_listfields + mysql_listtables + mysql_numfields + mysql_numrows + mysql_selectdb + mysql_table_name + mysql_tablename + mysqli + mysqli_execute + mysqli_fetch + mysqli_set_opt + next_result + num_rows + oci_free_cursor + ocibindbyname + ocicancel + ocicollappend + ocicollassignelem + ocicollgetelem + ocicollmax + ocicollsize + ocicolltrim + ocicolumnisnull + ocicolumnname + ocicolumnprecision + ocicolumnscale + ocicolumnsize + ocicolumntype + ocicolumntyperaw + ocicommit + ocidefinebyname + ocierror + ociexecute + ocifetch + ocifetchstatement + ocifreecollection + ocifreecursor + ocifreedesc + ocifreestatement + ociinternaldebug + ociloadlob + ocilogoff + ocilogon + ocinewcollection + ocinewcursor + ocinewdescriptor + ocinlogon + ocinumcols + ociparse + ocipasswordchange + ociplogon + ociresult + ocirollback + ocirowcount + ocisavelob + ocisavelobfile + ociserverversion + ocisetprefetch + ocistatementtype + ociwritelobtofile + odbc_do + odbc_field_precision + openssl_free_key + openssl_get_privatekey + openssl_get_publickey + options + pg_clientencoding + pg_cmdtuples + pg_errormessage + pg_exec + pg_fieldisnull + pg_fieldname + pg_fieldnum + pg_fieldprtlen + pg_fieldsize + pg_fieldtype + pg_freeresult + pg_getlastoid + pg_loclose + pg_locreate + pg_loexport + pg_loimport + pg_loopen + pg_loread + pg_loreadall + pg_lounlink + pg_lowrite + pg_numfields + pg_numrows + pg_result + pg_setclientencoding + ping + pos + posix_errno + prepare + query + read_exif_data + real_connect + real_escape_string + real_query + recode + reset + result_metadata + rollback + rpl_parse_enabled + rpl_probe + rpl_query_type + select_db + send_long_data + session_commit + set_file_buffer + set_local_infile_default + set_local_infile_handler + set_opt + show_source + sizeof + slave_query + snmpwalkoid + socket_get_status + socket_getopt + socket_set_blocking + socket_set_timeout + socket_setopt + sqlite_fetch_string + sqlite_has_more + ssl_set + stat + stmt + stmt_init + store_result + strchr + stream_register_wrapper + thread_safe + use_result + user_error + velocis_autocommit + velocis_close + velocis_commit + velocis_connect + velocis_exec + velocis_fetch + velocis_fieldname + velocis_fieldnum + velocis_freeresult + velocis_off_autocommit + velocis_result + velocis_rollback + virtual + + + + __CLASS__ + __FILE__ + __FUNCTION__ + __LINE__ + __METHOD__ + abstract + and + array + as + break + case + catch + cfunction + class + clone + const + continue + declare + default + die + do + echo + else + elseif + empty + enddeclare + endfor + endforeach + endif + endswitch + endwhile + eval + exception + exit + extends + false + final + for + foreach + function + global + if + implements + include + include_once + instanceof + interface + isset + list + new + null + old_function + or + php_user_filter + print + private + protected + public + require + require_once + return + static + switch + throw + true + try + unset + use + var + while + xor + + + + + + xdebug_break + xdebug_call_class + xdebug_call_file + xdebug_call_function + xdebug_call_line + xdebug_disable + xdebug_dump_function_profile + xdebug_dump_function_trace + xdebug_dump_superglobals + xdebug_enable + xdebug_get_code_coverage + xdebug_get_function_count + xdebug_get_function_profile + xdebug_get_function_stack + xdebug_get_function_trace + xdebug_get_stack_depth + xdebug_is_enabled + xdebug_memory_usage + xdebug_peak_memory_usage + xdebug_start_code_coverage + xdebug_start_profiling + xdebug_start_trace + xdebug_stop_code_coverage + xdebug_stop_profiling + xdebug_stop_trace + xdebug_time_index + xdebug_var_dump + + + + + assertCopy + assertEqual + assertError + assertErrorPattern + assertFalse + assertIdentical + assertIsA + assertNoErrors + assertNoUnwantedPattern + assertNotA + assertNotEqual + assertNotIdentical + assertNotNull + assertNull + assertReference + assertTrue + assertWantedPattern + + setReturnValue + setReturnValueAt + setReturnReference + setReturnReferenceAt + expectArguments + expectArgumentsAt + expectCallCount + expectMaximumCallCount + expectMinimumCallCount + expectNever + expectOnce + expectAtLeastOnce + tally + + dump + error + fail + pass + sendMessage + setUp + signal + swallowErrors + tearDown + + + + __autoload + __destruct + __get + __set + __sleep + __wakeup + + + parent + self + stdClass + + + + + + + private + protected + public + + + + + + + > + + + + + + + + + ' + ' + + + " + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <?php + ?> + + + + <? + ?> + + + + <%= + %> + + + + + + + | + + + + + + + + + + + + + + + + + + */ + + () + + + + + + + + + array + bool + boolean + callback + double + float + int + integer + mixed + number + NULL + object + real + resource + string + + + + + + + + + + + + + + + + () + + + + + + + + + + + + [ + ] + + ->\w+\s*(?=\() + ->\w+(?=(\[[\s\w'"]+\])?->) + ->\w* + + + + + + + + + \$\w+(?=(\[[\s\w'"]+\])?->) + + :: + + \$\w+(?=\s*=\s*(&\s*)?new) + + + $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \*\s*$ + + @(global|param|return|staticvar|var) + + @(deprecated|see|uses) + + @access + + + @(abstract|author|category|const|constant|copyright|example|filesource|final|ignore|internal|license|link|name|package|since|static|subpackage|todo|tutorial|version) + + + + + + + + <!-- + --> + + + + {@internal + }} + + + + {@link + } + + + + << + <= + < + + + <code> + </code> + + + + + < + > + + + + + + + + + + + + < + + diff --git a/extra/xmode/modes/pike.xml b/extra/xmode/modes/pike.xml new file mode 100644 index 0000000000..fa50f3edee --- /dev/null +++ b/extra/xmode/modes/pike.xml @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + /* + */ + + */ + + + //! + + // + + + + " + " + + + #" + " + + + ' + ' + + + + #.*?(?=($|/\*|//)) + + + ({ + }) + ([ + ]) + (< + >) + = + ! + + + - + / + * + > + < + % + & + | + ^ + ~ + @ + ` + . + + + ( + ) + + + + constant + extern + final + inline + local + nomask + optional + private + protected + public + static + variant + + + array + class + float + function + int + mapping + mixed + multiset + object + program + string + void + + + break + case + catch + continue + default + do + else + for + foreach + gauge + if + lambda + return + sscanf + switch + while + + + import + inherit + + + + + + FIXME + XXX + + + + + + @decl + + + + @xml{ + @} + + + + @[ + ] + + + + @(b|i|u|tt|url|pre|ref|code|expr|image)?(\{.*@\}) + + + @decl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %([^ a-z]*[a-z]|\[[^\]]*\]) + DEBUG: + + \ No newline at end of file diff --git a/extra/xmode/modes/pl-sql.xml b/extra/xmode/modes/pl-sql.xml new file mode 100644 index 0000000000..b3e084d611 --- /dev/null +++ b/extra/xmode/modes/pl-sql.xml @@ -0,0 +1,502 @@ + + + + + + + + + + + + + + + + /*+ + */ + + + /* + */ + + + ' + ' + + + " + " + + + [ + ] + + --+ + -- + REM + REMARK + + + - + / + * + = + > + < + % + & + | + ^ + ~ + != + !> + !< + := + . + ( + ) + @@ + @ + ! + host + : + + + + ABORT + ACCESS + ACCEPT + ADD + ALTER + ARRAY + ARRAY_LEN + AS + ASC + ASSERT + ASSIGN + AT + AUDIT + AUTHORIZATION + AVG + BASE_TABLE + BEGIN + BINARY_INTEGER + BODY + BREAK + BREAKS + BTITLE + CASE + CALL + CENTER + CHAR + CHAR_BASE + CHECK + CLEAR + CLOSE + CLUSTER + CLUSTERS + CMPVAR + COL + COLAUTH + COLUMN + COLUMNS + COMMENT + COMMIT + COMPRESS + COMPUTE + CONSTANT + CONSTRAINT + CONTINUE + COUNT + CREATE + CURRENT + CURRVAL + CURSOR + DATABASE + DATA_BASE + DATE + DBA + DEBUGOFF + DEBUGON + DECLARE + DEFAULT + DEFINITION + DELAY + DELETE + DESC + EXPLAIN + DIGITS + DISPOSE + DISTINCT + DO + DROP + DUMP + ELSE + ELSIF + END + ENTRY> + ERRORS + EXCEPTION + EXCEPTION_INIT + EXCLUSIVE + EXECUTE + EXIT + EXTERNAL + FALSE + FETCH + FILE + FOR + FOREIGN + FORM + FORMAT + FROM + FUNCTION + GENERIC + GOTO + GRANT + GREATEST + GROUP + HAVING + HEADING + IDENTIFIED + IDENTITYCOL + IF + IMMEDIATE + INCREMENT + INDEX + INDEXES + INDICATOR + INITIAL + INSERT + INTERFACE + INTO + IS + KEY + LEAST + LEVEL + LIMITED + LOCK + LONG + LOOP + MATCHED + MAX + MAXEXTENTS + MERGE + MEMBER + MIN + MINUS + MLSLABEL + MOD + MODIFY + MORE + NATURAL + NATURALN + NEW + NEW_VALUE + NEXT + NEXTVAL + NOAUDIT + NOCOMPRESS + NOPRINT + NOWAIT + NULL + NUMBER + NUMBER_BASE + OF + OFFLINE + ON + OFF + ONLINE + OPEN + OPTION + ORDER + ORGANIZATION + OTHERS + OUT + PACKAGE + PAGE + PARTITION + PCTFREE + PCTINCREASE + PLAN + POSITIVE + POSITIVEN + PRAGMA + PRINT + PRIMARY + PRIOR + PRIVATE + PRIVILEGES + PROCEDURE + PROMPT + PUBLIC + QUOTED_IDENTIFIER + RAISE + RANGE + RAW + RECORD + REF + REFERENCES + RELEASE + REMR + RENAME + RESOURCE + RETURN + REVERSE + REVOKE + ROLLBACK + ROW + ROWID + ROWLABEL + ROWNUM + ROWS + ROWTYPE + RUN + SAVEPOINT + SCHEMA + SELECT + SEPERATE + SEQUENCE + SESSION + SET + SHARE + SHOW + SIGNTYPE + SKIP + SPACE + SPOOL + .SQL + SQL + SQLCODE + SQLERRM + SQLERROR + STATEMENT + STDDEV + STORAGE + SUBTYPE + SUCCESSFULL + SUM + SYNONYM + SYSDATE + TABAUTH + TABLE + TABLES + TABLESPACE + TASK + TERMINATE + THEN + TO + TRIGGER + TRUE + TRUNCATE + TTITLE + TYPE + UID + UNION + UNIQUE + UNDEFINE + UPDATE + UPDATETEXT + USE + USER + USING + VALIDATE + VALUES + VARIANCE + VIEW + VIEWS + WHEN + WHENEVER + WHERE + WHILE + WITH + WORK + WRITE + XOR + + + binary + bit + blob + boolean + char + character + datetime + decimal + float + image + int + integer + money + numeric + nchar + nvarchar + ntext + object + pls_integer + real + smalldatetime + smallint + smallmoney + text + timestamp + tinyint + uniqueidentifier + varbinary + varchar + varchar2 + varray + + + ABS + ACOS + ADD_MONTHS + ASCII + ASIN + ATAN + ATAN2 + BITAND + CEIL + CHARTOROWID + CHR + CONCAT + CONVERT + COS + COSH + DECODE + DEFINE + DUAL + FLOOR + HEXTORAW + INITCAP + INSTR + INSTRB + LAST_DAY + LENGTH + LENGTHB + LN + LOG + LOWER + LPAD + LTRIM + MOD + MONTHS_BETWEEN + NEW_TIME + NEXT_DAY + NLSSORT + NSL_INITCAP + NLS_LOWER + NLS_UPPER + NVL + POWER + RAWTOHEX + REPLACE + ROUND + ROWIDTOCHAR + RPAD + RTRIM + SIGN + SOUNDEX + SIN + SINH + SQRT + SUBSTR + SUBSTRB + TAN + TANH + TO_CHAR + TO_DATE + TO_MULTIBYTE + TO_NUMBER + TO_SINGLE_BYTE + TRANSLATE + TRUNC + UPPER + + + ALL + AND + ANY + BETWEEN + BY + CONNECT + EXISTS + IN + INTERSECT + LIKE + NOT + NULL + OR + START + UNION + WITH + NOTFOUND + ISOPEN + JOIN + LEFT + RIGHT + FULL + OUTER + CROSS + + + DBMS_SQL + OPEN_CURSOR + PARSE + BIND_VARIABLE + BIND_ARRAY + DEFINE_COLUMN + DEFINE_COLUMN_LONG + DEFINE_ARRAY + EXECUTE + FETCH_ROWS + EXECUTE_AND_FETCH + VARIABLE_VALUE + COLUMN_VALUE + COLUMN_VALUE_LONG + CLOSE_CURSOR + DEFINE_COLUMN_CHAR + COLUMN_VALUE_CHAR + + DBMS_PROFILER + START_PROFILER + STOP_PROFILER + ROLLUP_RUN + + + _EDITOR + ARRAYSIZE + AUTOTRACE + DBMS_OUTPUT + ECHO + ENABLE + FCLOSE + FCLOSE_ALL + FEED + FEEDBACK + FILE_TYPE + FOPEN + HEAD + INVALID_OPERATION + INVALID_PATH + LINESIZE + PAGESIZE + PAGES + PAUSE + DOC + PUTF + PUT_LINE + SERVEROUTPUT + SQL.PNO + UTL_FILE + VER + VERIFY + WRITE_ERROR + + + + + diff --git a/extra/xmode/modes/pl1.xml b/extra/xmode/modes/pl1.xml new file mode 100644 index 0000000000..ae4f609b74 --- /dev/null +++ b/extra/xmode/modes/pl1.xml @@ -0,0 +1,597 @@ + + + + + + + + + + + + + + + + + + /* + */ + + + + ' + ' + + + + " + " + + + + \* *process + + = + + + - + * + / + > + < + ^ + ¬ + & + | + . + , + ; + : + + + ( + ) + + + + alias + alloc + allocate + attach + begin + by + byname + call + close + copy + dcl + declare + default + define + delay + delete + detach + dft + display + do + downthru + else + end + entry + exit + fetch + flush + format + free + from + get + go + goto + if + ignore + %include + into + iterate + key + keyfrom + keyto + leave + line + locate + loop + name + on + open + ordinal + other + otherwise + package + page + proc + procedure + put + read + release + repeat + reply + resignal + return + revert + rewrite + select + set + signal + skip + snap + stop + string + structure + then + thread + to + tstack + unlock + until + upthru + wait + when + while + write + + + A + abnormal + aligned + anycond + anycondition + area + asgn + asm + assembler + assignable + attn + attention + auto + automatic + b + b3 + b4 + based + bigendian + bin + binary + bit + buf + buffered + builtin + bx + byaddr + byvalue + C + cdecl + cell + char + character + charg + chargraphic + cobol + column + complex + cond + condition + conn + connected + controlled + conv + conversion + cplx + ctl + data + date + dec + decimal + def + defined + descriptor + descriptors + dim + dimension + direct + E + edit + endfile + endpage + env + environment + error + exclusive + exports + ext + external + F + fetchable + file + finish + fixed + fixedoverflow + float + fofl + format + fortran + fromalien + g + generic + graphic + gx + handle + hexadec + ieee + imported + init + initial + inline + input + inter + internal + invalidop + irred + irreducible + keyed + L + label + like + limited + linesize + linkage + list + littleendian + m + main + native + nonasgn + nocharg + nochargraphic + nodescriptor + noexecops + nomap + nomapin + nomapout + nonasgn + nonassignable + nonconn + nonconnected + nonnative + nonvar + nonvarying + normal + offset + ofl + optional + options + optlink + order + output + overflow + P + pagesize + parameter + pic + picture + pointer + pos + position + prec + precision + print + ptr + R + range + real + record + recursive + red + reducible + reentrant + refer + reorder + reserved + reserves + retcode + returns + seql + sequential + signed + size + static + stdcall + storage + stream + strg + stringrange + strz + stringsize + subrg + subscriptrange + system + task + title + transmit + type + ufl + unal + unaligned + unbuf + unbuffered + undefinedfile + underflow + undf + union + unsigned + update + value + var + variable + varying + varyingz + varz + wchar + widechar + winmain + wx + x + xn + xu + zdiv + zerodivide + + + abs + acos + acosf + add + addr + address + addrdata + all + allocation + allocn + allocsize + any + asin + asinf + atan + atand + atanf + atanh + availablearea + binaryvalue + bind + binvalue + bitlocation + bitloc + bool + byte + cast + cds + ceil + center + centre + centreleft + centreleft + centreright + centerright + charg + chargraphic + chargval + checkstg + collate + compare + conjg + cos + cosd + cosf + cosh + count + cs + cstg + currentsize + currentstorage + datafield + date + datetime + days + daystodate + daystosecs + divide + empty + entryaddr + epsilon + erfc + exp + expf + exponent + fileddint + fileddtest + fileddword + fileid + fileopen + fileread + fileseek + filetell + filewrite + first + floor + gamma + getenv + hbound + hex + heximage + high + huge + iand + ieor + imag + index + inot + ior + isigned + isll + ismain + isrl + iunsigned + last + lbound + left + length + lineno + loc + location + log + logf + loggamma + log2 + log10 + log10f + low + lowercase + lower2 + max + maxexp + maxlength + min + minexp + mod + mpstr + multiply + new + null + offestadd + offestdiff + offestsubtract + offestvalue + omitted + onchar + oncode + oncondond + oncondid + oncount + onfile + ongsource + onkey + onloc + onsource + onsubcode + onwchar + onwsource + ordinalname + ordinalpred + ordinalsucc + packagename + pageno + places + pliascii + plianc + plickpt + plidelete + plidump + pliebcdic + plifill + plifree + plimove + pliover + plirest + pliretc + pliretv + plisaxa + plisaxb + plisrta + plisrtb + plisrtc + plisrtd + pointeradd + ptradd + pointerdiff + ptrdiff + pointersubtract + ptrsubtract + pointervalue + ptrvalue + poly + pred + present + procname + procedurename + prod + putenv + radix + raise + random + rank + rem + repattern + respec + reverse + right + round + samekey + scale + search + searchr + secs + secstodate + secstodays + sign + signed + sin + sind + sinf + sinh + size + sourcefile + sourceline + sqrt + sqrtf + stg + storage + string + substr + subtract + succ + sum + sysnull + tally + tan + tand + tanf + tanh + threadid + time + tiny + translate + trim + trunc + type + unallocated + unspec + uppercase + valid + validdate + varglist + vargsizer + verify + verifyr + wcharval + weekday + whigh + wlow + y4date + y4julian + y4year + + + + diff --git a/extra/xmode/modes/pop11.xml b/extra/xmode/modes/pop11.xml new file mode 100644 index 0000000000..47685dd8dc --- /dev/null +++ b/extra/xmode/modes/pop11.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + /* + */ + + + ;;; + + + ' + ' + + + + " + " + + + + ` + ` + + + + [ + ] + + + + { + } + + + + ![ + ] + + + + ( + ) + + : + + + #_< + >_# + + + #_ + + ) + ( + . + , + ; + ^ + @ + : + | + = + >= + <= + <> + > + < + + + / + - + * + + + false + true + database + it + undef + + + define + class + enddefine + dlocal + lvars + vars + slot + instance + endinstance + method + syntax + biginteger + boolean + complex + ddecimal + decimal + device + ident + integer + intvec + key + nil + pair + procedure + process + prologterm + prologvar + ratio + ref + section + string + termin + vector + word + + + if + forevery + endforevery + then + switchon + endswitchon + case + elseif + else + endif + for + repeat + from + till + step + while + endfor + endrepeat + endwhile + times + to + do + by + in + return + + + and + or + matches + quitloop + goto + uses + trace + cons_with + consstring + + + interrupt + partapply + consclosure + max + add + remove + alladd + quitif + copydata + copytree + copylist + length + hd + tl + rev + shuffle + oneof + sort + syssort + random + readline + not + pr + nl + present + subword + member + length + listlength + datalength + mishap + last + delete + valof + dataword + + + isnumber + isinteger + islist + isboolean + + + + + + [ + ] + + + + { + } + + + + ![ + ] + + + + ' + ' + + + + " + " + + + + % + % + + + + /* + */ + + + ;;; + = + == + + ^ + ? + + + + + + + : + * + + diff --git a/extra/xmode/modes/postscript.xml b/extra/xmode/modes/postscript.xml new file mode 100644 index 0000000000..1588b6272e --- /dev/null +++ b/extra/xmode/modes/postscript.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + %! + %? + %% + % + + + + ( + ) + + + + < + > + + + / + + } + { + ] + [ + + + pop + exch + dup + copy + roll + clear + count + mark + cleartomark + counttomark + + exec + if + ifelse + for + repeat + loop + exit + stop + stopped + countexecstack + execstack + quit + start + + add + div + idiv + mod + mul + sub + abs + ned + ceiling + floor + round + truncate + sqrt + atan + cos + sin + exp + ln + log + rand + srand + rrand + + true + false + NULL + + + + + + ( + ) + + + diff --git a/extra/xmode/modes/povray.xml b/extra/xmode/modes/povray.xml new file mode 100644 index 0000000000..b76ba9ece8 --- /dev/null +++ b/extra/xmode/modes/povray.xml @@ -0,0 +1,518 @@ + + + + + + + + + + + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + // + = + ! + >= + <= + + + - + / + * + > + < + % + & + | + ^ + ~ + } + { + : + + + ( + ) + + + aa_level + aa_threshold + abs + absorption + accuracy + acos + acosh + adaptive + adc_bailout + agate + agate_turb + all + all_intersections + alpha + altitude + always_sample + ambient + ambient_light + angle + aperture + append + arc_angle + area_light + array + asc + ascii + asin + asinh + assumed_gamma + atan + atan2 + atanh + autostop + average + b_spline + background + bezier_spline + bicubic_patch + black_hole + blob + blue + blur_samples + bounded_by + box + boxed + bozo + #break + brick + brick_size + brightness + brilliance + bump_map + bump_size + bumps + camera + #case + caustics + ceil + cells + charset + checker + chr + circular + clipped_by + clock + clock_delta + clock_on + collect + color + color_map + colour + colour_map + component + composite + concat + cone + confidence + conic_sweep + conserve_energy + contained_by + control0 + control1 + coords + cos + cosh + count + crackle + crand + cube + cubic + cubic_spline + cubic_wave + cutaway_textures + cylinder + cylindrical + #debug + #declare + #default + defined + degrees + density + density_file + density_map + dents + df3 + difference + diffuse + dimension_size + dimensions + direction + disc + dispersion + dispersion_samples + dist_exp + distance + div + double_illuminate + eccentricity + #else + emission + #end + #error + error_bound + evaluate + exp + expand_thresholds + exponent + exterior + extinction + face_indices + facets + fade_color + fade_colour + fade_distance + fade_power + falloff + falloff_angle + false + #fclose + file_exists + filter + final_clock + final_frame + finish + fisheye + flatness + flip + floor + focal_point + fog + fog_alt + fog_offset + fog_type + #fopen + form + frame_number + frequency + fresnel + function + gather + gif + global_lights + global_settings + gradient + granite + gray + gray_threshold + green + h_angle + height_field + hexagon + hf_gray_16 + hierarchy + hollow + hypercomplex + #if + #ifdef + iff + #ifndef + image_height + image_map + image_pattern + image_width + #include + initial_clock + initial_frame + inside + int + interior + interior_texture + internal + interpolate + intersection + intervals + inverse + ior + irid + irid_wavelength + isosurface + jitter + jpeg + julia + julia_fractal + lathe + lambda + leopard + light_group + light_source + linear_spline + linear_sweep + ln + load_file + #local + location + log + look_at + looks_like + low_error_factor + #macro + magnet + major_radius + mandel + map_type + marble + material + material_map + matrix + max + max_extent + max_gradient + max_intersections + max_iteration + max_sample + max_trace + max_trace_level + media + media_attenuation + media_interaction + merge + mesh + mesh2 + metallic + method + metric + min + min_extent + minimum_reuse + mod + mortar + natural_spline + nearest_count + no + no_bump_scale + no_image + no_reflection + no_shadow + noise_generator + normal + normal_indices + normal_map + normal_vectors + number_of_waves + object + octaves + off + offset + omega + omnimax + on + once + onion + open + orient + orientation + orthographic + panoramic + parallel + parametric + pass_through + pattern + perspective + pgm + phase + phong + phong_size + photons + pi + pigment + pigment_map + pigment_pattern + planar + plane + png + point_at + poly + poly_wave + polygon + pot + pow + ppm + precision + precompute + pretrace_end + pretrace_start + prism + projected_through + pwr + quadratic_spline + quadric + quartic + quaternion + quick_color + quick_colour + quilted + radial + radians + radiosity + radius + rainbow + ramp_wave + rand + #range + range_divider + ratio + #read + reciprocal + recursion_limit + red + reflection + reflection_exponent + refraction + #render + repeat + rgb + rgbf + rgbft + rgbt + right + ripples + rotate + roughness + samples + save_file + scale + scallop_wave + scattering + seed + select + shadowless + sin + sine_wave + sinh + size + sky + sky_sphere + slice + slope + slope_map + smooth + smooth_triangle + solid + sor + spacing + specular + sphere + sphere_sweep + spherical + spiral1 + spiral2 + spline + split_union + spotlight + spotted + sqr + sqrt + #statistics + str + strcmp + strength + strlen + strlwr + strupr + sturm + substr + superellipsoid + #switch + sys + t + tan + tanh + target + text + texture + texture_list + texture_map + tga + thickness + threshold + tiff + tightness + tile2 + tiles + tolerance + toroidal + torus + trace + transform + translate + transmit + triangle + triangle_wave + true + ttf + turb_depth + turbulence + type + u + u_steps + ultra_wide_angle + #undef + union + up + use_alpha + use_color + use_colour + use_index + utf8 + uv_indices + uv_mapping + uv_vectors + v + v_angle + v_steps + val + variance + vaxis_rotate + vcross + vdot + #version + vertex_vectors + vlength + vnormalize + vrotate + vstr + vturbulence + #warning + warp + water_level + waves + #while + width + wood + wrinkles + #write + x + y + yes + z + + + diff --git a/extra/xmode/modes/powerdynamo.xml b/extra/xmode/modes/powerdynamo.xml new file mode 100644 index 0000000000..7babf3dc74 --- /dev/null +++ b/extra/xmode/modes/powerdynamo.xml @@ -0,0 +1,464 @@ + + + + + + + + + + + + + + + + <!--script + --> + + + + + <!--data + --> + + + + <!--document + --> + + + + <!--evaluate + --> + + + + <!--execute + --> + + + + <!--formatting + --> + + + + <!--/formatting + --> + + + + <!--include + --> + + + + <!--label + --> + + + + <!--sql + --> + + + + <!--sql_error_code + --> + + + + <!--sql_error_info + --> + + + + <!--sql_state + --> + + + + <!--sql_on_no_error + --> + + + <!--/sql_on_no_error + --> + + + + <!--sql_on_error + --> + + + <!--/sql_on_error + --> + + + + <!--sql_on_no_rows + --> + + + <!--/sql_on_no_rows + --> + + + + <!--sql_on_rows + --> + + + <!--/sql_on_rows + --> + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + + + + <!--script + --?> + + + + " + " + + + + ' + ' + + + = + + + + + <!--script + ?--> + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + // + + = + ! + >= + <= + = + + + - + / + * + > + < + % + & + | + ^ + ~ + . + } + { + , + ; + ] + [ + ? + @ + : + + ( + ) + + + + abstract + break + byte + boolean + catch + case + class + char + continue + default + double + do + else + exists + extends + false + file + final + float + for + finally + function + if + import + implements + int + interface + instanceof + long + length + native + new + null + package + private + protected + public + return + switch + synchronized + short + static + super + try + true + this + throw + throws + threadsafe + transient + var + void + while + + + + document + connection + file + query + session + site + system + typeof + + + AskQuestion + autoCommit + Close + Commit + Connect + CreateConnection + CreateDocument + CreatePropertySheet + CreateQuery + CreateWizard + cachedOutputTimeOut + charAt + connected + connection + connectionId + connectionName + connectionType + connectParameters + contentType + DeleteConnection + DeleteDocument + Disconnect + database + dataSource + dataSourceList + description + Exec + Execute + ExportTo + eof + errorNumber + errorString + GetColumnCount + GetColumnIndex + GetColumnLabel + GetConnection + GetConnectionIdList + GetConnectionNameList + GetCWD + GetDirectory + GetDocument + GetEmpty + GetEnv + GetErrorCode + GetErrorInfo + GetEventList + GetFilePtr + GetGenerated + GetRootDocument + GetRowCount + GetServerVariable + GetState + GetSupportedMoves + GetValue + ImportFrom + Include + id + indexOf + lastIndexOf + lastModified + length + location + Move + MoveFirst + MoveLast + MoveNext + MovePrevious + MoveRelative + mode + name + OnEvent + Open + Opened + parent + password + ReadChar + ReadLine + Refresh + Rollback + redirect + Seek + SetEnv + SetSQL + ShowMessage + substring + server + simulateCursors + size + source + status + timeOut + toLowerCase + toUpperCase + type + userId + value + WriteLine + Write + write + writeln + + + + + + " + " + + + ' + ' + + + + NAME + + + + + + " + " + + + ' + ' + + + + NAME + QUERY + + + + + + " + " + + + ' + ' + + + + CONTENT_TYPE + REDIRECT + STATUS + CACHED_OUTPUT_TIMEOUT + + + + diff --git a/extra/xmode/modes/progress.xml b/extra/xmode/modes/progress.xml new file mode 100644 index 0000000000..480bdef76f --- /dev/null +++ b/extra/xmode/modes/progress.xml @@ -0,0 +1,3748 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* */ + + + + + + + + + + + + + + + + + /* + */ + + + + ' + ' + + + + " + " + + + + {& + + + * + + + , + . + / + = + ? + @ + [ + ] + ^ + ( + ) + + >= + <= + <> + + + + + + : + + + :accelerator + :accept-changes + :accept-row-changes + :add-buffer + :add-calc-column + :add-columns-from + :add-events-procedure + :add-fields-from + :add-first + :add-index-field + :add-last + :add-like-column + :add-like-field + :add-like-index + :add-new-field + :add-new-index + :add-super-procedure + :adm-data + :after-buffer + :after-rowid + :after-table + :allow-column-searching + :always-on-top + :ambiguous + :append-child + :appl-alert-boxes + :apply-callback + :appserver-info + :appserver-password + :appserver-userid + :async-request-count + :async-request-handle + :asynchronous + :attach-data-source + :attr-space + :attribute-names + :auto-completion + :auto-delete + :auto-delete-xml + :auto-end-key + :auto-go + :auto-indent + :auto-resize + :auto-return + :auto-validate + :auto-zap + :available + :available-formats + :background + :base-ade + :basic-logging + :batch-mode + :before-buffer + :before-rowid + :before-table + :bgcolor + :blank + :block-iteration-display + :border-bottom-chars + :border-bottom-pixels + :border-left-chars + :border-left-pixels + :border-right-chars + :border-right-pixels + :border-top-chars + :border-top-pixels + :box + :box-selectable + :browse-column-data-types + :browse-column-formats + :browse-column-labels + :buffer-chars + :buffer-compare + :buffer-copy + :buffer-create + :buffer-delete + :buffer-field + :buffer-handle + :buffer-lines + :buffer-name + :buffer-release + :buffer-validate + :buffer-value + :bytes-read + :bytes-written + :cache + :call-name + :call-type + :can-create + :can-delete + :can-read + :can-write + :cancel-break + :cancel-button + :cancel-requests + :cancelled + :careful-paint + :case-sensitive + :centered + :character_length + :charset + :checked + :child-num + :clear + :clear-selection + :client-connection-id + :client-type + :clone-node + :code + :codepage + :column-bgcolor + :column-dcolor + :column-fgcolor + :column-font + :column-label + :column-movable + :column-pfcolor + :column-read-only + :column-resizable + :column-scrolling + :columns + :com-handle + :complete + :config-name + :connect + :connected + :context-help + :context-help-file + :context-help-id + :control-box + :convert-3d-colors + :convert-to-offset + :coverage + :cpcase + :cpcoll + :cplog + :cpprint + :cprcodein + :cprcodeout + :cpstream + :cpterm + :crc-value + :create-like + :create-node + :create-node-namespace + :create-on-add + :create-result-list-entry + :current-changed + :current-column + :current-environment + :current-iteration + :current-result-row + :current-row-modified + :current-window + :cursor-char + :cursor-line + :cursor-offset + :data-entry-return + :data-source + :data-type + :dataset + :date-format + :db-references + :dbname + :dcolor + :dde-error + :dde-id + :dde-item + :dde-name + :dde-topic + :deblank + :debug + :debug-alert + :decimals + :default + :default-buffer-handle + :default-button + :default-commit + :default-string + :delete + :delete-current-row + :delete-line + :delete-node + :delete-result-list-entry + :delete-selected-row + :delete-selected-rows + :delimiter + :description + :deselect-focused-row + :deselect-rows + :deselect-selected-row + :detach-data-source + :directory + :disable + :disable-auto-zap + :disable-connections + :disable-dump-triggers + :disable-load-triggers + :disconnect + :display-message + :display-timezone + :display-type + :down + :drag-enabled + :drop-target + :dump-logging-now + :dynamic + :edge-chars + :edge-pixels + :edit-can-paste + :edit-can-undo + :edit-clear + :edit-copy + :edit-cut + :edit-paste + :edit-undo + :empty + :empty-temp-table + :enable + :enable-connections + :enabled + :encoding + :end-file-drop + :end-user-prompt + :error-column + :error-object-detail + :error-row + :error-string + :event-procedure + :event-procedure-context + :event-type + :exclusive-id + :execution-log + :expand + :expandable + :export + :extent + :fetch-selected-row + :fgcolor + :file-create-date + :file-create-time + :file-mod-date + :file-mod-time + :file-name + :file-offset + :file-size + :file-type + :fill + :fill-mode + :filled + :find-by-rowid + :find-current + :find-first + :find-last + :find-unique + :first-async-request + :first-buffer + :first-child + :first-column + :first-data-source + :first-dataset + :first-procedure + :first-query + :first-server + :first-server-socket + :first-socket + :first-tab-item + :fit-last-column + :flat-button + :focused-row + :focused-row-selected + :font + :font-based-layout + :foreground + :form-input + :format + :forward-only + :frame + :frame-col + :frame-name + :frame-row + :frame-spacing + :frame-x + :frame-y + :frequency + :full-height-chars + :full-height-pixels + :full-pathname + :full-width-chars + :full-width-pixels + :function + :get-attribute + :get-attribute-node + :get-blue-value + :get-browse-column + :get-buffer-handle + :get-bytes-available + :get-cgi-list + :get-cgi-value + :get-changes + :get-child + :get-child-relation + :get-config-value + :get-current + :get-document-element + :get-dropped-file + :get-dynamic + :get-first + :get-green-value + :get-iteration + :get-last + :get-message + :get-next + :get-number + :get-parent + :get-prev + :get-printers + :get-red-value + :get-repositioned-row + :get-rgb-value + :get-selected-widget + :get-signature + :get-socket-option + :get-tab-item + :get-text-height-chars + :get-text-height-pixels + :get-text-width-chars + :get-text-width-pixels + :get-wait-state + :graphic-edge + :grid-factor-horizontal + :grid-factor-vertical + :grid-snap + :grid-unit-height-chars + :grid-unit-height-pixels + :grid-unit-width-chars + :grid-unit-width-pixels + :grid-visible + :handle + :handler + :has-lobs + :has-records + :height-chars + :height-pixels + :hidden + :horizontal + :html-charset + :html-end-of-line + :html-end-of-page + :html-frame-begin + :html-frame-end + :html-header-begin + :html-header-end + :html-title-begin + :html-title-end + :hwnd + :icfparameter + :icon + :image + :image-down + :image-insensitive + :image-up + :immediate-display + :import-node + :in-handle + :increment-exclusive-id + :index + :index-information + :initial + :initialize-document-type + :initiate + :inner-chars + :inner-lines + :input-value + :insert + :insert-backtab + :insert-before + :insert-file + :insert-row + :insert-string + :insert-tab + :instantiating-procedure + :internal-entries + :invoke + :is-open + :is-parameter-set + :is-row-selected + :is-selected + :is-xml + :items-per-row + :keep-connection-open + :keep-frame-z-order + :keep-security-cache + :key + :label + :label-bgcolor + :label-dcolor + :label-fgcolor + :label-font + :labels + :languages + :large + :large-to-small + :last-async-request + :last-child + :last-procedure + :last-server + :last-server-socket + :last-socket + :last-tab-item + :line + :list-item-pairs + :list-items + :listings + :literal-question + :load + :load-icon + :load-image + :load-image-down + :load-image-insensitive + :load-image-up + :load-mouse-pointer + :load-small-icon + :local-host + :local-name + :local-port + :locator-column-number + :locator-line-number + :locator-public-id + :locator-system-id + :locator-type + :locked + :log-id + :longchar-to-node-value + :lookup + :mandatory + :manual-highlight + :margin-height-chars + :margin-height-pixels + :margin-width-chars + :margin-width-pixels + :max-button + :max-chars + :max-data-guess + :max-height-chars + :max-height-pixels + :max-value + :max-width-chars + :max-width-pixels + :md5-value + :memptr-to-node-value + :menu-bar + :menu-key + :menu-mouse + :merge-changes + :merge-row-changes + :message-area + :message-area-font + :min-button + :min-column-width-chars + :min-column-width-pixels + :min-height-chars + :min-height-pixels + :min-schema-marshall + :min-value + :min-width-chars + :min-width-pixels + :modified + :mouse-pointer + :movable + :move-after-tab-item + :move-before-tab-item + :move-column + :move-to-bottom + :move-to-eof + :move-to-top + :multiple + :multitasking-interval + :name + :namespace-prefix + :namespace-uri + :needs-appserver-prompt + :needs-prompt + :new + :new-row + :next-column + :next-sibling + :next-tab-item + :no-current-value + :no-empty-space + :no-focus + :no-schema-marshall + :no-validate + :node-type + :node-value + :node-value-to-longchar + :node-value-to-memptr + :normalize + :num-buffers + :num-buttons + :num-child-relations + :num-children + :num-columns + :num-dropped-files + :num-entries + :num-fields + :num-formats + :num-items + :num-iterations + :num-lines + :num-locked-columns + :num-messages + :num-parameters + :num-replaced + :num-results + :num-selected-rows + :num-selected-widgets + :num-tabs + :num-to-retain + :num-visible-columns + :numeric-decimal-point + :numeric-format + :numeric-separator + :ole-invoke-locale + :ole-names-locale + :on-frame-border + :origin-handle + :origin-rowid + :overlay + :owner + :owner-document + :page-bottom + :page-top + :parameter + :parent + :parent-relation + :parse-status + :password-field + :pathname + :persistent + :persistent-cache-disabled + :persistent-procedure + :pfcolor + :pixels-per-column + :pixels-per-row + :popup-menu + :popup-only + :position + :prepare-string + :prepared + :prev-column + :prev-sibling + :prev-tab-item + :primary + :printer-control-handle + :printer-hdc + :printer-name + :printer-port + :private-data + :procedure-name + :profiling + :progress-source + :proxy + :proxy-password + :proxy-userid + :public-id + :published-events + :query + :query-close + :query-off-end + :query-open + :query-prepare + :quit + :radio-buttons + :raw-transfer + :read + :read-file + :read-only + :recid + :record-length + :refresh + :refreshable + :reject-changes + :reject-row-changes + :rejected + :remote + :remote-host + :remote-port + :remove-attribute + :remove-child + :remove-events-procedure + :remove-super-procedure + :replace + :replace-child + :replace-selection-text + :reposition-backwards + :reposition-forwards + :reposition-parent-relation + :reposition-to-row + :reposition-to-rowid + :resizable + :resize + :retain-shape + :return-inserted + :return-value + :return-value-data-type + :row + :row-height-chars + :row-height-pixels + :row-markers + :row-resizable + :row-state + :rowid + :rule-row + :rule-y + :save + :save-file + :save-row-changes + :sax-parse + :sax-parse-first + :sax-parse-next + :sax-xml + :schema-change + :schema-path + :screen-lines + :screen-value + :scroll-bars + :scroll-delta + :scroll-offset + :scroll-to-current-row + :scroll-to-item + :scroll-to-selected-row + :scrollable + :scrollbar-horizontal + :scrollbar-vertical + :search + :select-all + :select-focused-row + :select-next-row + :select-prev-row + :select-row + :selectable + :selected + :selection-end + :selection-start + :selection-text + :sensitive + :separator-fgcolor + :separators + :server + :server-connection-bound + :server-connection-bound-request + :server-connection-context + :server-connection-id + :server-operating-mode + :session-end + :set-attribute + :set-attribute-node + :set-blue-value + :set-break + :set-buffers + :set-callback-procedure + :set-commit + :set-connect-procedure + :set-dynamic + :set-green-value + :set-input-source + :set-numeric-format + :set-parameter + :set-read-response-procedure + :set-red-value + :set-repositioned-row + :set-rgb-value + :set-rollback + :set-selection + :set-socket-option + :set-wait-state + :show-in-taskbar + :side-label-handle + :side-labels + :skip-deleted-record + :small-icon + :small-title + :sort + :startup-parameters + :status-area + :status-area-font + :stop + :stop-parsing + :stopped + :stretch-to-fit + :string-value + :sub-menu-help + :subtype + :super-procedures + :suppress-namespace-processing + :suppress-warnings + :synchronize + :system-alert-boxes + :system-id + :tab-position + :tab-stop + :table + :table-crc-list + :table-handle + :table-list + :table-number + :temp-directory + :temp-table-prepare + :text-selected + :three-d + :tic-marks + :time-source + :title + :title-bgcolor + :title-dcolor + :title-fgcolor + :title-font + :toggle-box + :tooltip + :tooltips + :top-only + :trace-filter + :tracing + :tracking-changes + :trans-init-procedure + :transaction + :transparent + :type + :undo + :unique-id + :unique-match + :url + :url-decode + :url-encode + :url-password + :url-userid + :user-data + :v6display + :validate + :validate-expression + :validate-message + :validate-xml + :validation-enabled + :value + :view-first-column-on-reopen + :virtual-height-chars + :virtual-height-pixels + :virtual-width-chars + :virtual-width-pixels + :visible + :warning + :widget-enter + :widget-leave + :width-chars + :width-pixels + :window + :window-state + :window-system + :word-wrap + :work-area-height-pixels + :work-area-width-pixels + :work-area-x + :work-area-y + :write + :write-data + :x + :x-document + :xml-schema-path + :xml-suppress-namespace-processing + :y + :year-offset + :_dcm + + + put\s+screen + :WHERE-STRING + :REPOSITION-PARENT-RELATION + + + choose\s+of + + + + + + + + + + + + + + any-key + any-printable + back-tab + backspace + bell + choose + container-event + dde-notify + default-action + del + delete-char + delete-character + deselect + deselection + drop-file-notify + empty-selection + end + end-box-selection + end-error + end-move + end-resize + end-search + endkey + entry + error + go + help + home + leave + menu-drop + off-end + off-home + parent-window-close + procedure-complete + read-response + recall + return + row-display + row-entry + row-leave + scroll-notify + select + selection + start-box-selection + start-move + start-resize + start-search + tab + value-changed + window-close + window-maximized + window-minimized + window-resized + window-restored + + + + abort + absolute + accelerator + accept-changes + accept-row-changes + accumulate + across + active + active-window + actor + add + add-buffer + add-calc-column + add-columns-from + add-events-procedure + add-fields-from + add-first + add-header-entry + add-index-field + add-interval + add-last + add-like-column + add-like-field + add-like-index + add-new-field + add-new-index + add-relation + add-source-buffer + add-super-procedure + adm-data + advise + after-buffer + after-rowid + after-table + alert-box + alias + all + allow-column-searching + allow-replication + alter + alternate-key + always-on-top + ambiguous + and + ansi-only + any + anywhere + append + append-child + append-line + appl-alert-boxes + application + apply + apply-callback + appserver-info + appserver-password + appserver-userid + array-message + as + as-cursor + ascending + ask-overwrite + assign + async-request-count + async-request-handle + asynchronous + at + attach + attach-data-source + attachment + attr-space + attribute-names + attribute-type + authorization + auto-completion + auto-delete + auto-delete-xml + auto-end-key + auto-endkey + auto-go + auto-indent + auto-resize + auto-return + auto-validate + auto-zap + automatic + available + available-formats + average + avg + background + backwards + base-ade + base-key + base64 + basic-logging + batch-mode + before-buffer + before-hide + before-rowid + before-table + begins + between + bgcolor + big-endian + binary + bind-where + blank + blob + block + block-iteration-display + border-bottom + border-bottom-chars + border-bottom-pixels + border-left + border-left-chars + border-left-pixels + border-right + border-right-chars + border-right-pixels + border-top + border-top-chars + border-top-pixels + both + bottom + bottom-column + box + box-selectable + break + break-line + browse + browse-column-data-types + browse-column-formats + browse-column-labels + browse-header + btos + buffer + buffer-chars + buffer-compare + buffer-copy + buffer-create + buffer-delete + buffer-field + buffer-handle + buffer-lines + buffer-name + buffer-release + buffer-validate + buffer-value + buttons + by + by-pointer + by-reference + by-value + by-variant-pointer + byte + bytes-read + bytes-written + cache + cache-size + call + call-name + call-type + can-create + can-delete + can-do + can-find + can-query + can-read + can-set + can-write + cancel-break + cancel-button + cancel-pick + cancel-requests + cancelled + caps + careful-paint + case + case-sensitive + cdecl + centered + chained + character + character_length + charset + check + checked + child-buffer + child-num + choices + chr + clear + clear-selection + client-connection-id + client-type + clipboard + clob + clone-node + close + code + codebase-locator + codepage + codepage-convert + col + col-of + collate + colon + colon-aligned + color + color-table + column-bgcolor + column-codepage + column-dcolor + column-fgcolor + column-font + column-label + column-label-bgcolor + column-label-dcolor + column-label-fgcolor + column-label-font + column-label-height-chars + column-label-height-pixels + column-movable + column-of + column-pfcolor + column-read-only + column-resizable + column-scrolling + columns + com-handle + com-self + combo-box + command + compares + compile + compiler + complete + component-handle + component-self + config-name + connect + connected + constrained + contains + contents + context + context-help + context-help-file + context-help-id + context-popup + control + control-box + control-container + control-frame + convert + convert-3d-colors + convert-to-offset + copy + copy-lob + count + count-of + coverage + cpcase + cpcoll + cpinternal + cplog + cpprint + cprcodein + cprcodeout + cpstream + cpterm + crc-value + create + create-like + create-node + create-node-namespace + create-on-add + create-result-list-entry + create-test-file + ctos + current + current-changed + current-column + current-environment + current-iteration + current-language + current-result-row + current-row-modified + current-value + current-window + current_date + cursor + cursor-char + cursor-down + cursor-left + cursor-line + cursor-offset + cursor-right + cursor-up + cut + data-bind + data-entry-return + data-refresh-line + data-refresh-page + data-relation + data-source + data-type + database + dataservers + dataset + dataset-handle + date + date-format + datetime + datetime-tz + day + db-references + dbcodepage + dbcollation + dbname + dbparam + dbrestrictions + dbtaskid + dbtype + dbversion + dcolor + dde + dde-error + dde-id + dde-item + dde-name + dde-topic + deblank + debug + debug-alert + debug-list + debugger + decimal + decimals + declare + default + default-buffer-handle + default-button + default-commit + default-extension + default-noxlate + default-pop-up + default-string + default-window + defer-lob-fetch + define + defined + delete + delete-column + delete-current-row + delete-end-line + delete-field + delete-header-entry + delete-line + delete-node + delete-result-list-entry + delete-selected-row + delete-selected-rows + delete-word + delimiter + descending + description + deselect-extend + deselect-focused-row + deselect-rows + deselect-selected-row + deselection-extend + detach + detach-data-source + dialog-box + dialog-help + dictionary + dir + directory + disable + disable-auto-zap + disable-connections + disable-dump-triggers + disable-load-triggers + disabled + disconnect + dismiss-menu + display + display-message + display-timezone + display-type + distinct + do + dos + dos-end + double + down + drag-enabled + drop + drop-down + drop-down-list + drop-target + dump + dump-logging-now + dynamic + dynamic-current-value + dynamic-function + dynamic-next-value + each + echo + edge + edge-chars + edge-pixels + edit-can-paste + edit-can-undo + edit-clear + edit-copy + edit-cut + edit-paste + edit-undo + editing + editor + editor-backtab + editor-tab + else + empty + empty-dataset + empty-temp-table + enable + enable-connections + enabled + encode + encoding + end-file-drop + end-key + end-row-resize + end-user-prompt + enter-menubar + entered + entry-types-list + eq + error-column + error-object-detail + error-row + error-status + error-string + escape + etime + event-procedure + event-procedure-context + event-type + events + except + exclusive + exclusive-id + exclusive-lock + exclusive-web-user + execute + execution-log + exists + exit + exp + expand + expandable + explicit + export + extended + extent + external + extract + false + fetch + fetch-selected-row + fgcolor + fields + file + file-access-date + file-access-time + file-create-date + file-create-time + file-information + file-mod-date + file-mod-time + file-name + file-offset + file-size + file-type + filename + fill + fill-in + fill-mode + fill-where-string + filled + filters + find + find-by-rowid + find-case-sensitive + find-current + find-first + find-global + find-last + find-next + find-next-occurrence + find-prev-occurrence + find-previous + find-select + find-unique + find-wrap-around + finder + first + first-async-request + first-buffer + first-child + first-column + first-data-source + first-dataset + first-of + first-procedure + first-query + first-server + first-server-socket + first-socket + first-tab-item + fit-last-column + fix-codepage + fixed-only + flat-button + float + focus + focus-in + focused-row + focused-row-selected + font + font-based-layout + font-table + for + force-file + foreground + form-input + format + forward-only + forwards + frame + frame-col + frame-db + frame-down + frame-field + frame-file + frame-index + frame-line + frame-name + frame-row + frame-spacing + frame-value + frame-x + frame-y + frequency + from + from-chars + from-current + from-pixels + fromnoreorder + full-height + full-height-chars + full-height-pixels + full-pathname + full-width-chars + full-width-pixels + function + function-call-type + gateways + ge + generate-md5 + get + get-attr-call-type + get-attribute + get-attribute-node + get-bits + get-blue-value + get-browse-column + get-buffer-handle + get-byte + get-byte-order + get-bytes + get-bytes-available + get-cgi-list + get-cgi-value + get-changes + get-child + get-child-relation + get-codepages + get-collations + get-config-value + get-current + get-dataset-buffer + get-dir + get-document-element + get-double + get-dropped-file + get-dynamic + get-file + get-first + get-float + get-green-value + get-header-entry + get-index-by-namespace-name + get-index-by-qname + get-iteration + get-key-value + get-last + get-localname-by-index + get-long + get-message + get-next + get-node + get-number + get-parent + get-pointer-value + get-prev + get-printers + get-qname-by-index + get-red-value + get-relation + get-repositioned-row + get-rgb-value + get-selected-widget + get-serialized + get-short + get-signature + get-size + get-socket-option + get-source-buffer + get-string + get-tab-item + get-text-height + get-text-height-chars + get-text-height-pixels + get-text-width + get-text-width-chars + get-text-width-pixels + get-top-buffer + get-type-by-index + get-type-by-namespace-name + get-type-by-qname + get-unsigned-short + get-uri-by-index + get-value-by-index + get-value-by-namespace-name + get-value-by-qname + get-wait-state + getbyte + global + go-on + go-pending + goto + grant + graphic-edge + grayed + grid-factor-horizontal + grid-factor-vertical + grid-set + grid-snap + grid-unit-height + grid-unit-height-chars + grid-unit-height-pixels + grid-unit-width + grid-unit-width-chars + grid-unit-width-pixels + grid-visible + group + gt + handle + handler + has-lobs + has-records + having + header + height + height-chars + height-pixels + help-context + help-topic + helpfile-name + hidden + hide + hint + horiz-end + horiz-home + horiz-scroll-drag + horizontal + host-byte-order + html-charset + html-end-of-line + html-end-of-page + html-frame-begin + html-frame-end + html-header-begin + html-header-end + html-title-begin + html-title-end + hwnd + icfparameter + icon + if + ignore-current-modified + image + image-down + image-insensitive + image-size + image-size-chars + image-size-pixels + image-up + immediate-display + import + import-node + in + in-handle + increment-exclusive-id + index + index-hint + index-information + indexed-reposition + indicator + information + init + initial + initial-dir + initial-filter + initialize-document-type + initiate + inner + inner-chars + inner-lines + input + input-output + input-value + insert + insert-backtab + insert-before + insert-column + insert-field + insert-field-data + insert-field-label + insert-file + insert-mode + insert-row + insert-string + insert-tab + instantiating-procedure + integer + internal-entries + interval + into + invoke + is + is-attr-space + is-codepage-fixed + is-column-codepage + is-lead-byte + is-open + is-parameter-set + is-row-selected + is-selected + is-xml + iso-date + item + items-per-row + iteration-changed + join + join-by-sqldb + kblabel + keep-connection-open + keep-frame-z-order + keep-messages + keep-security-cache + keep-tab-order + key + key-code + key-function + key-label + keycode + keyfunction + keylabel + keys + keyword + keyword-all + label + label-bgcolor + label-dcolor + label-fgcolor + label-font + label-pfcolor + labels + landscape + languages + large + large-to-small + last + last-async-request + last-child + last-event + last-key + last-of + last-procedure + last-server + last-server-socket + last-socket + last-tab-item + lastkey + lc + ldbname + le + leading + left + left-aligned + left-end + left-trim + length + library + like + line + line-counter + line-down + line-left + line-right + line-up + list-events + list-item-pairs + list-items + list-query-attrs + list-set-attrs + list-widgets + listing + listings + literal-question + little-endian + load + load-from + load-icon + load-image + load-image-down + load-image-insensitive + load-image-up + load-mouse-pointer + load-picture + load-small-icon + lob-dir + local-host + local-name + local-port + locator-column-number + locator-line-number + locator-public-id + locator-system-id + locator-type + locked + log + log-entry-types + log-id + log-manager + log-threshold + logfile-name + logging-level + logical + long + longchar + longchar-to-node-value + lookahead + lookup + lower + lt + machine-class + main-menu + mandatory + manual-highlight + map + margin-extra + margin-height + margin-height-chars + margin-height-pixels + margin-width + margin-width-chars + margin-width-pixels + matches + max + max-button + max-chars + max-data-guess + max-height + max-height-chars + max-height-pixels + max-rows + max-size + max-value + max-width + max-width-chars + max-width-pixels + maximize + maximum + md5-value + member + memptr + memptr-to-node-value + menu + menu-bar + menu-item + menu-key + menu-mouse + menubar + merge-changes + merge-row-changes + message + message-area + message-area-font + message-line + message-lines + min-button + min-column-width-chars + min-column-width-pixels + min-height + min-height-chars + min-height-pixels + min-row-height + min-row-height-chars + min-row-height-pixels + min-schema-marshall + min-size + min-value + min-width + min-width-chars + min-width-pixels + minimum + mod + modified + modulo + month + mouse + mouse-pointer + movable + move + move-after-tab-item + move-before-tab-item + move-column + move-to-bottom + move-to-eof + move-to-top + mpe + mtime + multiple + multiple-key + multitasking-interval + must-exist + must-understand + name + namespace-prefix + namespace-uri + native + ne + needs-appserver-prompt + needs-prompt + nested + new + new-line + new-row + next + next-column + next-error + next-frame + next-prompt + next-sibling + next-tab-item + next-value + next-word + no + no-apply + no-array-message + no-assign + no-attr + no-attr-list + no-attr-space + no-auto-validate + no-bind-where + no-box + no-column-scrolling + no-console + no-convert + no-convert-3d-colors + no-current-value + no-debug + no-drag + no-echo + no-empty-space + no-error + no-fill + no-focus + no-help + no-hide + no-index-hint + no-join-by-sqldb + no-labels + no-lobs + no-lock + no-lookahead + no-map + no-message + no-pause + no-prefetch + no-return-value + no-row-markers + no-schema-marshall + no-scrollbar-vertical + no-scrolling + no-separate-connection + no-separators + no-tab-stop + no-underline + no-undo + no-validate + no-wait + no-word-wrap + node-type + node-value + node-value-to-longchar + node-value-to-memptr + none + normalize + not + now + null + num-aliases + num-buffers + num-buttons + num-child-relations + num-children + num-columns + num-copies + num-dbs + num-dropped-files + num-entries + num-fields + num-formats + num-header-entries + num-items + num-iterations + num-lines + num-locked-columns + num-log-files + num-messages + num-parameters + num-relations + num-replaced + num-results + num-selected + num-selected-rows + num-selected-widgets + num-source-buffers + num-tabs + num-to-retain + num-top-buffers + num-visible-columns + numeric + numeric-decimal-point + numeric-format + numeric-separator + object + octet_length + of + off + ok + ok-cancel + old + ole-invoke-locale + ole-names-locale + on + on-frame-border + open + open-line-above + opsys + option + options + or + ordered-join + ordinal + orientation + origin-handle + origin-rowid + os-append + os-command + os-copy + os-create-dir + os-delete + os-dir + os-drives + os-error + os-getenv + os-rename + os2 + os400 + otherwise + out-of-data + outer + outer-join + output + overlay + override + owner + owner-document + page + page-bottom + page-down + page-left + page-number + page-right + page-right-text + page-size + page-top + page-up + page-width + paged + parameter + parent + parent-buffer + parent-relation + parse-status + partial-key + pascal + password-field + paste + pathname + pause + pdbname + performance + persistent + persistent-cache-disabled + persistent-procedure + pfcolor + pick + pick-area + pick-both + pixels + pixels-per-column + pixels-per-row + popup-menu + popup-only + portrait + position + precision + prepare-string + prepared + preprocess + preselect + prev + prev-column + prev-frame + prev-sibling + prev-tab-item + prev-word + primary + printer + printer-control-handle + printer-hdc + printer-name + printer-port + printer-setup + private + private-data + privileges + proc-handle + proc-status + procedure + procedure-call-type + procedure-name + process + profile-file + profiler + profiling + program-name + progress + progress-source + prompt + prompt-for + promsgs + propath + proversion + proxy + proxy-password + proxy-userid + public-id + publish + published-events + put + put-bits + put-byte + put-bytes + put-double + put-float + put-key-value + put-long + put-short + put-string + put-unsigned-short + putbyte + query + query-close + query-off-end + query-open + query-prepare + query-tuning + question + quit + quoter + r-index + radio-buttons + radio-set + random + raw + raw-transfer + rcode-information + read + read-available + read-exact-num + read-file + read-only + readkey + real + recid + record-length + rectangle + recursive + refresh + refreshable + reject-changes + reject-row-changes + rejected + relation-fields + relations-active + release + remote + remote-host + remote-port + remove-attribute + remove-child + remove-events-procedure + remove-super-procedure + repeat + replace + replace-child + replace-selection-text + replication-create + replication-delete + replication-write + reports + reposition + reposition-backwards + reposition-forwards + reposition-mode + reposition-parent-relation + reposition-to-row + reposition-to-rowid + request + resizable + resize + result + resume-display + retain + retain-shape + retry + retry-cancel + return-inserted + return-to-start-dir + return-value + return-value-data-type + returns + reverse-from + revert + revoke + rgb-value + right + right-aligned + right-end + right-trim + round + row + row-created + row-deleted + row-height + row-height-chars + row-height-pixels + row-markers + row-modified + row-of + row-resizable + row-state + row-unmodified + rowid + rule + rule-row + rule-y + run + run-procedure + save + save-as + save-file + save-row-changes + save-where-string + sax-attributes + sax-complete + sax-parse + sax-parse-first + sax-parse-next + sax-parser-error + sax-reader + sax-running + sax-uninitialized + sax-xml + schema + schema-change + schema-path + screen + screen-io + screen-lines + screen-value + scroll + scroll-bars + scroll-delta + scroll-left + scroll-mode + scroll-offset + scroll-right + scroll-to-current-row + scroll-to-item + scroll-to-selected-row + scrollable + scrollbar-drag + scrollbar-horizontal + scrollbar-vertical + scrolled-row-position + scrolling + sdbname + search + search-self + search-target + section + seek + select-all + select-extend + select-focused-row + select-next-row + select-prev-row + select-repositioned-row + select-row + selectable + selected + selected-items + selection-end + selection-extend + selection-list + selection-start + selection-text + self + send + sensitive + separate-connection + separator-fgcolor + separators + server + server-connection-bound + server-connection-bound-request + server-connection-context + server-connection-id + server-operating-mode + server-socket + session + session-end + set + set-actor + set-attr-call-type + set-attribute + set-attribute-node + set-blue-value + set-break + set-buffers + set-byte-order + set-callback-procedure + set-cell-focus + set-commit + set-connect-procedure + set-contents + set-dynamic + set-green-value + set-input-source + set-must-understand + set-node + set-numeric-format + set-parameter + set-pointer-value + set-read-response-procedure + set-red-value + set-repositioned-row + set-rgb-value + set-rollback + set-selection + set-serialized + set-size + set-socket-option + set-wait-state + settings + setuserid + share-lock + shared + short + show-in-taskbar + show-stats + side-label + side-label-handle + side-labels + silent + simple + single + size + size-chars + size-pixels + skip + skip-deleted-record + skip-schema-check + slider + small-icon + small-title + smallint + soap-fault + soap-fault-actor + soap-fault-code + soap-fault-detail + soap-fault-string + soap-header + soap-header-entryref + socket + some + sort + source + source-procedure + space + sql + sqrt + start + start-extend-box-selection + start-row-resize + starting + startup-parameters + status + status-area + status-area-font + stdcall + stop + stop-display + stop-parsing + stopped + stored-procedure + stream + stream-io + stretch-to-fit + string + string-value + string-xref + sub-average + sub-count + sub-maximum + sub-menu + sub-menu-help + sub-minimum + sub-total + subscribe + substitute + substring + subtype + sum + summary + super + super-procedures + suppress-namespace-processing + suppress-warnings + synchronize + system-alert-boxes + system-dialog + system-help + system-id + tab-position + tab-stop + table + table-crc-list + table-handle + table-list + table-number + target + target-procedure + temp-directory + temp-table + temp-table-prepare + term + terminal + terminate + text + text-cursor + text-seg-growth + text-selected + then + this-procedure + three-d + through + thru + tic-marks + time + time-source + timezone + title + title-bgcolor + title-dcolor + title-fgcolor + title-font + to + to-rowid + today + toggle-box + tooltip + tooltips + top + top-column + top-only + topic + total + trace-filter + tracing + tracking-changes + trailing + trans + trans-init-procedure + transaction + transaction-mode + transparent + trigger + triggers + trim + true + truncate + ttcodepage + type + unbuffered + underline + undo + unformatted + union + unique + unique-id + unique-match + unix + unix-end + unless-hidden + unload + unsigned-short + unsubscribe + up + update + upper + url + url-decode + url-encode + url-password + url-userid + use + use-dict-exps + use-filename + use-index + use-revvideo + use-text + use-underline + user + user-data + userid + using + utc-offset + v6display + v6frame + valid-event + valid-handle + validate + validate-expression + validate-message + validate-xml + validation-enabled + value + values + variable + verbose + vertical + view + view-as + view-first-column-on-reopen + virtual-height + virtual-height-chars + virtual-height-pixels + virtual-width + virtual-width-chars + virtual-width-pixels + visible + vms + wait + wait-for + warning + web-context + web-notify + weekday + when + where + where-string + while + widget + widget-enter + widget-handle + widget-leave + widget-pool + width + width-chars + width-pixels + window + window-delayed-minimize + window-name + window-normal + window-state + window-system + with + word-index + word-wrap + work-area-height-pixels + work-area-width-pixels + work-area-x + work-area-y + work-table + workfile + write + write-data + x + x-document + x-noderef + x-of + xcode + xml-schema-path + xml-suppress-namespace-processing + xref + y + y-of + year + year-offset + yes + yes-no + yes-no-cancel + _dcm + + + + accum + asc + avail + button + char + column + dec + def + disp + dict + dyn-function + excl + field + field-group + file-info + form + forward + funct + int + info + index-field + log + literal + load-control + no-label + prim + rcode-info + share + substr + var + + + + _abbreviate + _account_expires + _actailog + _actbilog + _actbuffer + _actindex + _actiofile + _actiotype + _active + _actlock + _actother + _actpws + _actrecord + _actserver + _actspace + _actsummary + _admin + _ailog-aiwwrites + _ailog-bbuffwaits + _ailog-byteswritn + _ailog-forcewaits + _ailog-id + _ailog-misc + _ailog-nobufavail + _ailog-partialwrt + _ailog-recwriten + _ailog-totwrites + _ailog-trans + _ailog-uptime + _alt + _area + _area-attrib + _area-block + _area-blocksize + _area-clustersize + _area-extents + _area-misc + _area-name + _area-number + _area-recbits + _area-recid + _area-type + _area-version + _areaextent + _areastatus + _areastatus-areaname + _areastatus-areanum + _areastatus-extents + _areastatus-freenum + _areastatus-hiwater + _areastatus-id + _areastatus-lastextent + _areastatus-rmnum + _areastatus-totblocks + _argtype + _ascending + _attribute + _attributes1 + _auth-id + _autoincr + _base-col + _base-tables + _bfstatus-apwq + _bfstatus-ckpmarked + _bfstatus-ckpq + _bfstatus-hashsize + _bfstatus-id + _bfstatus-lastckpnum + _bfstatus-lru + _bfstatus-misc + _bfstatus-modbuffs + _bfstatus-totbufs + _bfstatus-usedbuffs + _bilog-bbuffwaits + _bilog-biwwrites + _bilog-bytesread + _bilog-byteswrtn + _bilog-clstrclose + _bilog-ebuffwaits + _bilog-forcewaits + _bilog-forcewrts + _bilog-id + _bilog-misc + _bilog-partialwrts + _bilog-recread + _bilog-recwriten + _bilog-totalwrts + _bilog-totreads + _bilog-trans + _bilog-uptime + _block + _block-area + _block-bkupctr + _block-block + _block-chaintype + _block-dbkey + _block-id + _block-misc + _block-nextdbkey + _block-type + _block-update + _buffer-apwenq + _buffer-chkpts + _buffer-deferred + _buffer-flushed + _buffer-id + _buffer-logicrds + _buffer-logicwrts + _buffer-lruskips + _buffer-lruwrts + _buffer-marked + _buffer-misc + _buffer-osrds + _buffer-oswrts + _buffer-trans + _buffer-uptime + _buffstatus + _cache + _can-create + _can-delete + _can-dump + _can-load + _can-read + _can-write + _casesensitive + _charset + _checkpoint + _checkpoint-apwq + _checkpoint-cptq + _checkpoint-dirty + _checkpoint-flush + _checkpoint-id + _checkpoint-len + _checkpoint-misc + _checkpoint-scan + _checkpoint-time + _chkclause + _chkseq + _cnstrname + _cnstrtype + _code-feature + _codefeature-id + _codefeature-res01 + _codefeature-res02 + _codefeature_name + _codefeature_required + _codefeature_supported + _codepage + _col + _col-label + _col-label-sa + _col-name + _colid + _coll-cp + _coll-data + _coll-name + _coll-segment + _coll-sequence + _coll-strength + _coll-tran-subtype + _coll-tran-version + _collation + _colname + _colposition + _connect + _connect-2phase + _connect-batch + _connect-device + _connect-disconnect + _connect-id + _connect-interrupt + _connect-misc + _connect-name + _connect-pid + _connect-resync + _connect-semid + _connect-semnum + _connect-server + _connect-time + _connect-transid + _connect-type + _connect-usr + _connect-wait + _connect-wait1 + _cp-attr + _cp-dbrecid + _cp-name + _cp-sequence + _crc + _create-limit + _createparams + _create_date + _creator + _cycle-ok + _data-type + _database-feature + _datatype + _db + _db-addr + _db-coll-name + _db-collate + _db-comm + _db-lang + _db-local + _db-misc1 + _db-misc2 + _db-name + _db-recid + _db-res1 + _db-res2 + _db-revision + _db-slave + _db-type + _db-xl-name + _db-xlate + _dbaacc + _dbfeature-id + _dbfeature-res01 + _dbfeature-res02 + _dbfeature_active + _dbfeature_enabled + _dbfeature_name + _dblink + _dbstatus + _dbstatus-aiblksize + _dbstatus-biblksize + _dbstatus-biclsize + _dbstatus-biopen + _dbstatus-bisize + _dbstatus-bitrunc + _dbstatus-cachestamp + _dbstatus-changed + _dbstatus-clversminor + _dbstatus-codepage + _dbstatus-collation + _dbstatus-createdate + _dbstatus-dbblksize + _dbstatus-dbvers + _dbstatus-dbversminor + _dbstatus-emptyblks + _dbstatus-fbdate + _dbstatus-freeblks + _dbstatus-hiwater + _dbstatus-ibdate + _dbstatus-ibseq + _dbstatus-id + _dbstatus-integrity + _dbstatus-intflags + _dbstatus-lastopen + _dbstatus-lasttable + _dbstatus-lasttran + _dbstatus-misc + _dbstatus-mostlocks + _dbstatus-numareas + _dbstatus-numlocks + _dbstatus-numsems + _dbstatus-prevopen + _dbstatus-rmfreeblks + _dbstatus-sharedmemver + _dbstatus-shmvers + _dbstatus-starttime + _dbstatus-state + _dbstatus-tainted + _dbstatus-totalblks + _decimals + _del + _deleterule + _desc + _description + _dfltvalue + _dft-pk + _dhtypename + _disabled + _dtype + _dump-name + _email + _event + _exe + _extent + _extent-attrib + _extent-misc + _extent-number + _extent-path + _extent-size + _extent-system + _extent-type + _extent-version + _fetch-type + _field + _field-map + _field-name + _field-physpos + _field-recid + _field-rpos + _field-trig + _fil-misc1 + _fil-misc2 + _fil-res1 + _fil-res2 + _file + _file-label + _file-label-sa + _file-name + _file-number + _file-recid + _file-trig + _filelist + _filelist-blksize + _filelist-extend + _filelist-id + _filelist-logicalsz + _filelist-misc + _filelist-name + _filelist-openmode + _filelist-size + _fire_4gl + _fld + _fld-case + _fld-misc1 + _fld-misc2 + _fld-res1 + _fld-res2 + _fld-stdtype + _fld-stlen + _fld-stoff + _for-allocated + _for-cnt1 + _for-cnt2 + _for-flag + _for-format + _for-id + _for-info + _for-itype + _for-maxsize + _for-name + _for-number + _for-owner + _for-primary + _for-retrieve + _for-scale + _for-separator + _for-size + _for-spacing + _for-type + _for-xpos + _format + _format-sa + _frozen + _given_name + _grantee + _grantor + _group-by + _group_number + _has-ccnstrs + _has-fcnstrs + _has-pcnstrs + _has-ucnstrs + _hasresultset + _hasreturnval + _help + _help-sa + _hidden + _host + _i-misc1 + _i-misc2 + _i-res1 + _i-res2 + _ianum + _id + _idx-crc + _idx-num + _idxid + _idxmethod + _idxname + _idxowner + _if-misc1 + _if-misc2 + _if-res1 + _if-res2 + _index + _index-create + _index-delete + _index-field + _index-find + _index-free + _index-id + _index-misc + _index-name + _index-recid + _index-remove + _index-seq + _index-splits + _index-trans + _index-uptime + _indexbase + _indexstat + _indexstat-blockdelete + _indexstat-create + _indexstat-delete + _indexstat-id + _indexstat-read + _indexstat-split + _initial + _initial-sa + _ins + _iofile-bufreads + _iofile-bufwrites + _iofile-extends + _iofile-filename + _iofile-id + _iofile-misc + _iofile-reads + _iofile-trans + _iofile-ubufreads + _iofile-ubufwrites + _iofile-uptime + _iofile-writes + _iotype-airds + _iotype-aiwrts + _iotype-birds + _iotype-biwrts + _iotype-datareads + _iotype-datawrts + _iotype-id + _iotype-idxrds + _iotype-idxwrts + _iotype-misc + _iotype-trans + _iotype-uptime + _ispublic + _keyvalue-expr + _label + _label-sa + _lang + _last-change + _last-modified + _last_login + _latch + _latch-busy + _latch-hold + _latch-id + _latch-lock + _latch-lockedt + _latch-lockt + _latch-name + _latch-qhold + _latch-spin + _latch-type + _latch-wait + _latch-waitt + _lic-activeconns + _lic-batchconns + _lic-currconns + _lic-id + _lic-maxactive + _lic-maxbatch + _lic-maxcurrent + _lic-minactive + _lic-minbatch + _lic-mincurrent + _lic-validusers + _license + _linkowner + _literalprefix + _literalsuffix + _localtypename + _lock + _lock-canclreq + _lock-chain + _lock-downgrade + _lock-exclfind + _lock-excllock + _lock-exclreq + _lock-exclwait + _lock-flags + _lock-id + _lock-misc + _lock-name + _lock-recgetlock + _lock-recgetreq + _lock-recgetwait + _lock-recid + _lock-redreq + _lock-shrfind + _lock-shrlock + _lock-shrreq + _lock-shrwait + _lock-table + _lock-trans + _lock-type + _lock-upglock + _lock-upgreq + _lock-upgwait + _lock-uptime + _lock-usr + _lockreq + _lockreq-exclfind + _lockreq-id + _lockreq-misc + _lockreq-name + _lockreq-num + _lockreq-reclock + _lockreq-recwait + _lockreq-schlock + _lockreq-schwait + _lockreq-shrfind + _lockreq-trnlock + _lockreq-trnwait + _logging + _logging-2pc + _logging-2pcnickname + _logging-2pcpriority + _logging-aibegin + _logging-aiblksize + _logging-aibuffs + _logging-aicurrext + _logging-aiextents + _logging-aigennum + _logging-aiio + _logging-aijournal + _logging-ailogsize + _logging-ainew + _logging-aiopen + _logging-biblksize + _logging-bibuffs + _logging-bibytesfree + _logging-biclage + _logging-biclsize + _logging-biextents + _logging-bifullbuffs + _logging-biio + _logging-bilogsize + _logging-commitdelay + _logging-crashprot + _logging-id + _logging-lastckp + _logging-misc + _logins + _login_failures + _mandatory + _max_logins + _max_tries + _middle_initial + _mod-sequence + _mode + _mstrblk + _mstrblk-aiblksize + _mstrblk-biblksize + _mstrblk-biopen + _mstrblk-biprev + _mstrblk-bistate + _mstrblk-cfilnum + _mstrblk-crdate + _mstrblk-dbstate + _mstrblk-dbvers + _mstrblk-fbdate + _mstrblk-hiwater + _mstrblk-ibdate + _mstrblk-ibseq + _mstrblk-id + _mstrblk-integrity + _mstrblk-lasttask + _mstrblk-misc + _mstrblk-oppdate + _mstrblk-oprdate + _mstrblk-rlclsize + _mstrblk-rltime + _mstrblk-tainted + _mstrblk-timestamp + _mstrblk-totblks + _myconn-id + _myconn-numseqbuffers + _myconn-pid + _myconn-usedseqbuffers + _myconn-userid + _myconnection + _name_loc + _ndx + _nullable + _nullflag + _num-comp + _numfld + _numkcomp + _numkey + _numkfld + _object-associate + _object-associate-type + _object-attrib + _object-block + _object-misc + _object-number + _object-root + _object-system + _object-type + _odbcmoney + _order + _other-commit + _other-flushmblk + _other-id + _other-misc + _other-trans + _other-undo + _other-uptime + _other-wait + _override + _owner + _password + _prime-index + _proc-name + _procbin + _procid + _procname + _proctext + _proctype + _property + _pw-apwqwrites + _pw-buffsscaned + _pw-bufsckp + _pw-checkpoints + _pw-ckpqwrites + _pw-dbwrites + _pw-flushed + _pw-id + _pw-marked + _pw-misc + _pw-scancycles + _pw-scanwrites + _pw-totdbwrites + _pw-trans + _pw-uptime + _pwd + _pwd_duration + _pwd_expires + _record-bytescreat + _record-bytesdel + _record-bytesread + _record-bytesupd + _record-fragcreat + _record-fragdel + _record-fragread + _record-fragupd + _record-id + _record-misc + _record-reccreat + _record-recdel + _record-recread + _record-recupd + _record-trans + _record-uptime + _ref + _ref-table + _refcnstrname + _referstonew + _referstoold + _refowner + _reftblname + _remowner + _remtbl + _repl-agent + _repl-agentcontrol + _repl-server + _replagt-agentid + _replagt-agentname + _replagt-blocksack + _replagt-blocksprocessed + _replagt-blocksreceived + _replagt-commstatus + _replagt-connecttime + _replagt-dbname + _replagt-lasttrid + _replagt-method + _replagt-notesprocessed + _replagt-port + _replagt-reservedchar + _replagt-reservedint + _replagt-serverhost + _replagt-status + _replagtctl-agentid + _replagtctl-agentname + _replagtctl-blocksack + _replagtctl-blockssent + _replagtctl-commstatus + _replagtctl-connecttime + _replagtctl-lastblocksentat + _replagtctl-method + _replagtctl-port + _replagtctl-remotedbname + _replagtctl-remotehost + _replagtctl-reservedchar + _replagtctl-reservedint + _replagtctl-status + _replsrv-agentcount + _replsrv-blockssent + _replsrv-id + _replsrv-lastblocksentat + _replsrv-reservedchar + _replsrv-reservedint + _replsrv-starttime + _resacc + _resrc + _resrc-id + _resrc-lock + _resrc-name + _resrc-time + _resrc-wait + _rolename + _rssid + _scale + _schemaname + _screator + _searchable + _segment-bytefree + _segment-bytesused + _segment-id + _segment-misc + _segment-segid + _segment-segsize + _segments + _sel + _seq + _seq-incr + _seq-init + _seq-max + _seq-min + _seq-misc + _seq-name + _seq-num + _seq-owner + _sequence + _server-byterec + _server-bytesent + _server-currusers + _server-id + _server-logins + _server-maxusers + _server-misc + _server-msgrec + _server-msgsent + _server-num + _server-pendconn + _server-pid + _server-portnum + _server-protocol + _server-qryrec + _server-recrec + _server-recsent + _server-timeslice + _server-trans + _server-type + _server-uptime + _servers + _sname + _sowner + _space-allocnewrm + _space-backadd + _space-bytesalloc + _space-dbexd + _space-examined + _space-fromfree + _space-fromrm + _space-front2back + _space-frontadd + _space-id + _space-locked + _space-misc + _space-removed + _space-retfree + _space-takefree + _space-trans + _space-uptime + _spare1 + _spare2 + _spare3 + _spare4 + _sql_properties + _sremdb + _startup + _startup-aibuffs + _startup-ainame + _startup-apwbuffs + _startup-apwmaxwrites + _startup-apwqtime + _startup-apwstime + _startup-bibuffs + _startup-bidelay + _startup-biio + _startup-biname + _startup-bitrunc + _startup-buffs + _startup-crashprot + _startup-directio + _startup-id + _startup-locktable + _startup-maxclients + _startup-maxservers + _startup-maxusers + _startup-misc + _startup-spin + _statbase + _statbase-id + _statementorrow + _stbl + _stblowner + _storageobject + _summary-aiwrites + _summary-bireads + _summary-biwrites + _summary-chkpts + _summary-commits + _summary-dbaccesses + _summary-dbreads + _summary-dbwrites + _summary-flushed + _summary-id + _summary-misc + _summary-reccreat + _summary-recdel + _summary-reclock + _summary-recreads + _summary-recupd + _summary-recwait + _summary-transcomm + _summary-undos + _summary-uptime + _surname + _sys-field + _sysattachtbls + _sysbigintstat + _syscalctable + _syscharstat + _syschkcolusage + _syschkconstrs + _syschkconstr_name_map + _syscolauth + _syscolstat + _sysdatatypes + _sysdatestat + _sysdbauth + _sysdblinks + _sysfloatstat + _sysidxstat + _sysintstat + _syskeycolusage + _sysncharstat + _sysnumstat + _sysnvarcharstat + _sysprocbin + _sysproccolumns + _sysprocedures + _sysproctext + _sysrealstat + _sysrefconstrs + _sysroles + _sysschemas + _sysseqauth + _syssmintstat + _syssynonyms + _systabauth + _systblconstrs + _systblstat + _systimestat + _systinyintstat + _systrigcols + _systrigger + _systsstat + _syststzstat + _sysvarcharstat + _sysviews + _sysviews_name_map + _tablebase + _tablestat + _tablestat-create + _tablestat-delete + _tablestat-id + _tablestat-read + _tablestat-update + _tbl + _tbl-status + _tbl-type + _tblid + _tblname + _tblowner + _telephone + _template + _toss-limit + _trans + _trans-coord + _trans-coordtx + _trans-counter + _trans-duration + _trans-flags + _trans-id + _trans-misc + _trans-num + _trans-state + _trans-txtime + _trans-usrnum + _trig-crc + _triggerevent + _triggerid + _triggername + _triggertime + _txe-id + _txe-locks + _txe-lockss + _txe-time + _txe-type + _txe-wait-time + _txe-waits + _txe-waitss + _txelock + _typeprecision + _u-misc1 + _u-misc2 + _unique + _unsignedattr + _unsorted + _upd + _updatable + _user + _user-misc + _user-name + _userid + _userio + _userio-airead + _userio-aiwrite + _userio-biread + _userio-biwrite + _userio-dbaccess + _userio-dbread + _userio-dbwrite + _userio-id + _userio-misc + _userio-name + _userio-usr + _userlock + _userlock-chain + _userlock-flags + _userlock-id + _userlock-misc + _userlock-name + _userlock-recid + _userlock-type + _userlock-usr + _username + _userstatus + _userstatus-counter + _userstatus-objectid + _userstatus-objecttype + _userstatus-operation + _userstatus-state + _userstatus-target + _userstatus-userid + _user_number + _valexp + _valmsg + _valmsg-sa + _value + _value_ch + _value_n + _val_ts + _vcol-order + _version + _view + _view-as + _view-col + _view-def + _view-name + _view-ref + _viewname + _viewtext + _where-cls + _width + _word-rule + _word-rules + _wordidx + _wr-attr + _wr-cp + _wr-name + _wr-number + _wr-segment + _wr-type + _wr-version + + + + + + + + USE-INDEX + UNIX + DOS + VMS + BTOS + CTOS + OS2 + OS400 + EDITING + CHOOSE + PROMPT-FOR + SHARE-LOCK + READKEY + GO-PENDING + VALIDATE + IS-ATTR-SPACE + GATEWAYS + SCROLL + + + ITERATION-CHANGED + BEFORE-RECORD-FILL + AFTER-RECORD-FILL + REPOSITION-MODE + + + + + &ADM-CONTAINER + &ADM-SUPPORTED-LINKS + &ANALYZE-RESUME + &ANALYZE-SUSPEND + &BATCH-MODE + &BROWSE-NAME + &DEFINED + &DISPLAYED-FIELDS + &DISPLAYED-OBJECTS + &ELSE + &ELSEIF + &ENABLED-FIELDS-IN-QUERY + &ENABLED-FIELDS + &ENABLED-OBJECTS + &ENABLED-TABLES-IN-QUERY + &ENABLED-TABLES + &ENDIF + &EXTERNAL-TABLES + &FIELD-PAIRS-IN-QUERY + &FIELD-PAIRS + &FIELDS-IN-QUERY + &FILE-NAME + &FIRST-EXTERNAL-TABLE + &FIRST-TABLE-IN-QUERY + &FRAME-NAME + &GLOB + &GLOBAL-DEFINE + &IF + &INCLUDE + &INTERNAL-TABLES + &LAYOUT-VARIABLE + &LINE-NUMBER + &LIST-1 + &LIST-2 + &LIST-3 + &LIST-4 + &LIST-5 + &LIST-6 + &MESSAGE + &NEW + &OPEN-BROWSERS-IN-QUERY + &OPEN-QUERY + &OPSYS + &PROCEDURE-TYPE + &QUERY-NAME + &SCOP + &SCOPED-DEFINE + &SELF-NAME + &SEQUENCE + &TABLES-IN-QUERY + &THEN + &UIB_is_Running + &UNDEFINE + &WINDOW-NAME + &WINDOW-SYSTEM + DEFINED + PROCEDURE-TYPE + _CREATE-WINDOW + _CUSTOM _DEFINITIONS + _CUSTOM _MAIN-BLOCK + _CUSTOM + _DEFINITIONS + _END-PROCEDURE-SETTINGS + _FUNCTION-FORWARD + _FUNCTION + _INCLUDED-LIB + _INLINE + _MAIN-BLOCK + _PROCEDURE-SETTINGS + _PROCEDURE + _UIB-CODE-BLOCK + _UIB-PREPROCESSOR-BLOCK + _VERSION-NUMBER + _XFTR + + + + + + + diff --git a/extra/xmode/modes/prolog.xml b/extra/xmode/modes/prolog.xml new file mode 100644 index 0000000000..bd5adbd9a8 --- /dev/null +++ b/extra/xmode/modes/prolog.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + % + + + /* + */ + + + + + ' + ' + + + " + " + + + + + [ + ] + + + + --> + :- + ?- + ; + -> + , + \+ + == + \== + \= + @< + @=< + @>= + @> + =.. + =:= + =\= + =< + >= + + + - + /\ + \/ + // + << + < + >> + > + ** + ^ + \ + / + = + * + + + . + + + ( + ) + { + } + + + + + true + fail + ! + at_end_of_stream + nl + repeat + halt + + + call + catch + throw + unify_with_occurs_check + var + atom + integer + float + atomic + compound + nonvar + number + functor + arg + copy_term + clause + current_predicate + asserta + assertz + retract + abolish + findall + bagof + setof + current_input + current_output + set_input + set_output + open + close + stream_property + at_end_of_stream + set_stream_position + get_char + get_code + peek_char + peek_code + put_char + put_code + nl + get_byte + peek_byte + put_byte + read_term + read + write_term + write + writeq + write_canonical + op + current_op + char_conversion + current_char_conversion + once + atom_length + atom_concat + sub_atom + atom_chars + atom_codes + char_code + number_chars + number_codes + set_prolog_flag + current_prolog_flag + halt + + + sin + cos + atan + exp + log + sqrt + + + is + rem + mod + + + _ + + + + + + + + [ + ] + + + diff --git a/extra/xmode/modes/props.xml b/extra/xmode/modes/props.xml new file mode 100644 index 0000000000..f3d0511026 --- /dev/null +++ b/extra/xmode/modes/props.xml @@ -0,0 +1,27 @@ + + + + + + + + + + # + = + : + + + + + + + { + } + + + # + + diff --git a/extra/xmode/modes/psp.xml b/extra/xmode/modes/psp.xml new file mode 100644 index 0000000000..2adc5a1a2e --- /dev/null +++ b/extra/xmode/modes/psp.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + <%@ + %> + + + + + <%-- + --%> + + + + + <% + %> + + + + + <script language="jscript"> + </script> + + + + <script language="javascript"> + </script> + + + + <script> + </script> + + + + + <!--# + --> + + + + + <!-- + --> + + + + + <STYLE> + </STYLE> + + + + + < + > + + + + + & + ; + + + + + + + + " + " + + + + ' + ' + + + = + + + + <%-- + --%> + + + + <% + %> + + + + + + + " + " + + + + ' + ' + + + = + + + include + + file + + + diff --git a/extra/xmode/modes/ptl.xml b/extra/xmode/modes/ptl.xml new file mode 100644 index 0000000000..b47f9a9d50 --- /dev/null +++ b/extra/xmode/modes/ptl.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + [html] + [plain] + + + _q_access + _q_exports + _q_index + _q_lookup + _q_resolve + _q_exception_handler + + + + diff --git a/extra/xmode/modes/pvwave.xml b/extra/xmode/modes/pvwave.xml new file mode 100644 index 0000000000..8a74b4a74b --- /dev/null +++ b/extra/xmode/modes/pvwave.xml @@ -0,0 +1,722 @@ + + + + + + + + + + + + " + " + + + ' + ' + + + ; + + ( + ) + = + + + - + / + * + # + > + < + ^ + } + { + . + , + ] + [ + : + $ + & + @ + ! + + + + abs + acos + add_exec_on_select + addsysvar + addvar + affine + alog + alog10 + asarr + asin + askeys + assoc + atan + avg + axis + bar + bar2d + bar3d + beseli + beselj + besely + bilinear + bindgen + blob + blobcount + boundary + build_table + buildresourcefilename + bytarr + byte + byteorder + bytscl + c_edit + call_unix + cd + center_view + chebyshev + check_math + checkfile + cindgen + close + color_convert + color_edit + color_palette + complex + complexarr + cone + congrid + conj + contour + contour2 + contourfill + conv_from_rect + conv_to_rect + convert_coord + convol + correlate + cos + cosh + cosines + cprod + create_holidays + create_weekdends + crossp + cursor + curvatures + curvefit + cylinder + day_name + day_of_week + day_of_year + dblarr + dc_error_msg + dc_options + dc_read_24_bit + dc_read_8_bit + dc_read_container + dc_read_dib + dc_read_fixed + dc_read_free + dc_read_tiff + dc_scan_container + dc_write_24_bit + dc_write_8_bit + dc_write_dib + dc_write_fixed + dc_write_free + dc_write_tiff + dcindgen + dcomplex + dcomplexarr + declare func + declare function + define_key + defroi + defsysv + del_file + delfunc + dellog + delproc + delstruct + delvar + demo + deriv + derivn + determ + device + diag + dicm_tag_info + digital_filter + dilate + dindgen + dist + dminit + doc_lib_unix + doc_library + double + drop_exec_on_select + dt_add + dt_addly + dt_compress + dt_duration + dt_print + dt_subly + dt_subtract + dt_to_sec + dt_to_str + dt_to_var + dtegn + empty + environment + eof + erase + erode + errorf + errplot + euclidean + exec_on_select + execute + exp + expand + expon + extrema + factor + fast_grid2 + fast_grid3 + fast_grid4 + fft + filepath + findfile + findgen + finite + fix + float + fltarr + flush + free_lun + fstat + funct + gamma + gaussfit + gaussint + gcd + get_kbrd + get_lun + getenv + get_named_color + getncerr + getncopts + getparam + great_int + grid + grid_2d + grid_3d + grid_4d + grid_sphere + gridn + group_by + hak + hanning + hdf_test + hdfgetsds + help + hilbert + hist_equal + hist_equal_ct + histn + histogram + hls + hsv + hsv_to_rgd + image_check + image_color_quant + image_cont + image_create + image_display + image_filetypes + image_query_file + image_read + image_write + imaginary + img_true8 + index_and + index_conv + index_or + indgen + intarr + interpol + interpolate + intrp + invert + isaskey + ishft + jacobian + jul_to_dt + keyword_set + lcm + leefilt + legend + lindgen + linknload + list + listarr + load_holidays + load_option + load_weekends + loadct + loadct_custom + loadresources + loadstrings + lonarr + long + lubksb + ludcmp + make_array + map + map_axes + map_contour + map_grid + map_plots + map_polyfill + map_proj + map_reverse + map_velovect + map_version + map_xyouts + max + median + mesh + message + min + modifyct + molec + moment + month_name + movie + mprove + msword_cgm_setup + n_elements + n_params + n_tags + nint + normals + null_processor + openr + openu + openw + oplot + oploterr + option_is_loaded + order_by + padit + packimage + packtable + palette + param_present + parsefilename + pie + pie_chart + plot + plot_field + plot_histogram + plot_io + plot_oi + plot_oo + plot_windrose + ploterr + plots + pm + pmf + point_lun + poly + poly_2d + poly_area + poly_c_conv + poly_count + poly_dev + poly_fit + poly_merge + poly_norm + poly_plot + poly_sphere + poly_surf + poly_trans + polyfill + polyfillv + polyfitw + polyshade + polywarp + popd + prime + print + printd + printf + profile + profiles + prompt + pseudo + pushd + query_table + randomn + randomu + rdpix + read + read_airs + read_xbm + readf + readu + rebin + reform + regress + rename + render + render24 + replicate + replv + resamp + reverse + rgb_to_hsv + rm + rmf + roberts + rot + rot_int + rotate + same + scale3d + sec_to_dt + select_read_lun + set_plot + set_screen + set_shading + set_symbol + set_view3d + set_viewport + set_xy + setdemo + setenv + setimagesize + setlog + setncopts + setup_keys + sgn + shade_surf + shade_surf_irr + shade_volume + shif + shift + show_options + show3 + sigma + sin + sindgen + sinh + size + skipf + slice + slice_vol + small_int + smooth + sobel + socket_accept + socket_close + socket_connect + socket_getport + socket_init + socket_read + socket_write + sort + sortn + spawn + sphere + spline + sqrt + stdev + str_to_dt + strarr + strcompress + stretch + string + strjoin + strlen + strlookup + strlowcase + strmatch + strmessage + strmid + strpos + strput + strsplit + strsubst + strtrim + structref + strupcase + sum + surface + surface_fit + surfr + svbksb + svd + svdfit + systime + t3d + tag_names + tan + tanh + tek_color + tensor_add + tensor_div + tensor_eq + tensor_exp + tensor_ge + tensor_gt + tensor_le + tensor_lt + tensor_max + tensor_min + tensor_mod + tensor_mul + tensor_ne + tensor_sub + threed + today + total + tqli + transpose + tred2 + tridag + tv + tvcrs + tvlct + tvrd + tvscl + tvsize + uniqn + unique + unix_listen + unix_reply + unload_option + upvar + usersym + usgs_names + value_length + var_match + var_to_dt + vector_field3 + vel + velovect + viewer + vol_marker + vol_pad + vol_red + vol_trans + volume + vtkaddattribute + vtkaxes + vtkcamera + vtkclose + vtkcolorbar + vtkcolornames + vtkcommand + vtkerase + vtkformat + vtkgrid + vtkhedgehog + vtkinit + vtklight + vtkplots + vtkpolydata + vtkpolyformat + vtkpolyshade + vtkppmread + vtkppmwrite + vtkreadvtk + vtkrectilineargrid + vtkrenderwindow + vtkscatter + vtkslicevol + vtkstructuredpoints + vtkstructuredgrid + vtksurface + vtksurfgen + vtktext + vtktvrd + vtkunstructuredgrid + vtkwdelete + vtkwindow + vtkwritevrml + vtkwset + wait + wavedatamanager + waveserver + wcopy + wdelete + where + wherein + window + wmenu + wpaste + wprint + wread_dib + wread_meta + write_xbm + writeu + wset + whow + wwrite_dib + wwrite_meta + xyouts + zoom + zroots + + begin + breakpoint + case + common + compile + declare + do + else + end + endcase + endelse + endfor + endif + endrepeat + endwhile + exit + for + func + function + goto + help + if + info + journal + locals + of + on_error + on_error_goto + on_ioerror + pro + quit + repeat + restore + retall + return + save + stop + then + while + + and + not + or + xor + eq + ne + gt + lt + ge + le + mod + WgAnimateTool + WgCbarTool + WgCtTool + WgIsoSurfTool + WgMovieTool + WgSimageTool + WgSliceTool + WgSurfaceTool + WgTextTool + WoAddButtons + WoAddMessage + WoAddStatus + WoButtonBar + WoCheckFile + WoColorButton + WoColorConvert + WoColorGrid + WoColorWheel + WoConfirmClose + WoDialogStatus + WoFontOptionMenu + WoGenericDialog + WoLabeledText + WoMenuBar + WoMessage + WoSaveAsPixmap + WoSetCursor + WoSetWindowTitle + WoStatus + WoVariableOptionMenu + WtAddCallback + WtAddHandler + WtCursor + WtGet + WtPointer + WtSet + WtTimer + WwAlert + WwAlertPopdown + WwButtonBox + WwCallback + WwControlsBox + WwDialog + WwDrawing + WwFileSelection + WwGenericDialog + WwGetButton + WwGetKey + WwGetPosition + WwGetValue + WwHandler + WwInit + WwLayout + WwList + WwListUtils + WwLoop + WwMainWindow + WwMenuBar + WwMenuItem + WwMessage + WwMultiClickHandler + WwOptionMenu + WwPickFile + WwPopupMenu + WwPreview + WwPreviewUtils + WwRadioBox + WwResource + WwSeparator + WwSetCursor + WwSetValue + WwTable + WwTableUtils + WwText + WwTimer + WwToolBox + WzAnimate + WzColorEdit + WzContour + WzExport + WzHistogram + WzImage + WzImport + WzMultiView + WzPlot + WzPreview + WzSurface + WzTable + WzVariable + + + diff --git a/extra/xmode/modes/pyrex.xml b/extra/xmode/modes/pyrex.xml new file mode 100644 index 0000000000..c46d574fc3 --- /dev/null +++ b/extra/xmode/modes/pyrex.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + cdef + char + cinclude + ctypedef + double + enum + extern + float + include + private + public + short + signed + sizeof + struct + union + unsigned + void + + NULL + + + + diff --git a/extra/xmode/modes/python.xml b/extra/xmode/modes/python.xml new file mode 100644 index 0000000000..654860eab7 --- /dev/null +++ b/extra/xmode/modes/python.xml @@ -0,0 +1,396 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + @\w + + + + """ + """ + + + + ''' + ''' + + + + + " + " + + + ' + ' + + + = + ! + >= + <= + + + - + / + * + > + < + % + & + | + ^ + ~ + : + + ( + ) + + + + and + as + assert + break + class + continue + def + del + elif + else + except + exec + finally + for + from + global + if + import + in + is + lambda + not + or + pass + print + raise + return + reversed + sorted + try + while + with + yield + self + + + abs + all + any + apply + bool + buffer + callable + chr + classmethod + cmp + coerce + compile + complex + delattr + dict + dir + divmod + enumerate + eval + execfile + file + filter + float + frozenset + getattr + globals + hasattr + hash + hex + id + input + int + intern + isinstance + issubclass + iter + len + list + locals + long + map + max + min + object + oct + open + ord + pow + property + range + raw_input + reduce + reload + repr + round + set + setattr + slice + staticmethod + str + sum + super + tuple + type + unichr + unicode + vars + xrange + zip + + + ArithmeticError + AssertionError + AttributeError + DeprecationWarning + EOFError + EnvironmentError + Exception + FloatingPointError + IOError + ImportError + IndentationError + IndexError + KeyError + KeyboardInterrupt + LookupError + MemoryError + NameError + NotImplemented + NotImplementedError + OSError + OverflowError + OverflowWarning + ReferenceError + RuntimeError + RuntimeWarning + StandardError + StopIteration + SyntaxError + SyntaxWarning + SystemError + SystemExit + TabError + TypeError + UnboundLocalError + UnicodeError + UserWarning + ValueError + Warning + WindowsError + ZeroDivisionError + + + BufferType + BuiltinFunctionType + BuiltinMethodType + ClassType + CodeType + ComplexType + DictProxyType + DictType + DictionaryType + EllipsisType + FileType + FloatType + FrameType + FunctionType + GeneratorType + InstanceType + IntType + LambdaType + ListType + LongType + MethodType + ModuleType + NoneType + ObjectType + SliceType + StringType + StringTypes + TracebackType + TupleType + TypeType + UnboundMethodType + UnicodeType + XRangeType + + False + None + True + + __abs__ + __add__ + __all__ + __author__ + __bases__ + __builtins__ + __call__ + __class__ + __cmp__ + __coerce__ + __contains__ + __debug__ + __del__ + __delattr__ + __delitem__ + __delslice__ + __dict__ + __div__ + __divmod__ + __doc__ + __docformat__ + __eq__ + __file__ + __float__ + __floordiv__ + __future__ + __ge__ + __getattr__ + __getattribute__ + __getitem__ + __getslice__ + __gt__ + __hash__ + __hex__ + __iadd__ + __import__ + __imul__ + __init__ + __int__ + __invert__ + __iter__ + __le__ + __len__ + __long__ + __lshift__ + __lt__ + __members__ + __metaclass__ + __mod__ + __mro__ + __mul__ + __name__ + __ne__ + __neg__ + __new__ + __nonzero__ + __oct__ + __or__ + __path__ + __pos__ + __pow__ + __radd__ + __rdiv__ + __rdivmod__ + __reduce__ + __repr__ + __rfloordiv__ + __rlshift__ + __rmod__ + __rmul__ + __ror__ + __rpow__ + __rrshift__ + __rsub__ + __rtruediv__ + __rxor__ + __setattr__ + __setitem__ + __setslice__ + __self__ + __slots__ + __str__ + __sub__ + __truediv__ + __version__ + __xor__ + + + + + + %[.]?\d*[diouxXeEfFgGcrs] + %\([^)]+\)[+ -]?\d*[diouxXeEfFgGcrs] + + + + %\d*[diouxXeEfFgGcrs] + %\([^)]+\)[+ -]?\d*[diouxXeEfFgGcrs] + + B{ + } + + + C{ + } + + + E{ + } + + + I{ + } + + + L{ + } + + + >>> + ... + @ + + + diff --git a/extra/xmode/modes/quake.xml b/extra/xmode/modes/quake.xml new file mode 100644 index 0000000000..08af289e18 --- /dev/null +++ b/extra/xmode/modes/quake.xml @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + " + " + + + + ' + ' + + + + /* + */ + + + // + + + +attack + +back + +forward + +klook + +left + +lookdown + +lookup + +mlook + +movedown + +moveleft + +moveright + +moveup + +right + +speed + +strafe + +use + -attack + -back + -forward + -klook + -left + -lookdown + -lookup + -mlook + -movedown + -moveleft + -moveright + -moveup + -right + -speed + -strafe + -use + adr0 + adr1 + adr2 + adr3 + adr4 + adr5 + adr6 + adr7 + adr8 + alias + allow_download + allow_download_maps + allow_download_models + allow_download_players + allow_download_sounds + basedir + bind + bindlist + bob_pitch + bob_roll + bob_up + cd + cd_loopcount + cd_looptrack + cd_nocd + cddir + centerview + changing + cheats + cl_anglespeedkey + cl_autoskins + cl_blend + cl_entities + cl_footsteps + cl_forwardspeed + cl_gun + cl_lights + cl_maxfps + cl_nodelta + cl_noskins + cl_particles + cl_pitchspeed + cl_predict + cl_run + cl_showmiss + cl_shownet + cl_sidespeed + cl_stats + cl_stereo + cl_stereo_separation + cl_testblend + cl_testentities + cl_testlights + cl_testparticles + cl_timeout + cl_upspeed + cl_vwep + cl_yawspeed + clear + clientport + cmd + cmdlist + con_notifytime + condump + connect + coop + crosshair + cvarlist + deathmatch + debuggraph + dedicated + demomap + developer + dir + disconnect + dmflags + download + drop + dumpuser + echo + error + exec + filterban + fixedtime + flood_msgs + flood_persecond + flood_waitdelay + flushmap + fov + fraglimit + freelook + g_select_empty + game + gamedate + gamedir + gamemap + gamename + gameversion + gender + gender_auto + give + gl_3dlabs_broken + gl_allow_software + gl_bitdepth + gl_clear + gl_cull + gl_drawbuffer + gl_driver + gl_dynamic + gl_ext_compiled_vertex_array + gl_ext_multitexture + gl_ext_palettedtexture + gl_ext_pointparameters + gl_ext_swapinterval + gl_finish + gl_flashblend + gl_lightmap + gl_lockpvs + gl_log + gl_mode + gl_modulate + gl_monolightmap + gl_nobind + gl_nosubimage + gl_particle_att_a + gl_particle_att_b + gl_particle_att_c + gl_particle_max_size + gl_particle_min_size + gl_particle_size + gl_picmip + gl_playermip + gl_polyblend + gl_round_down + gl_saturatelighting + gl_shadows + gl_showtris + gl_skymip + gl_swapinterval + gl_texturealphamode + gl_texturemode + gl_texturesolidmode + gl_triplebuffer + gl_vertex_arrays + gl_ztrick + god + graphheight + graphscale + graphshift + gun_model + gun_next + gun_prev + gun_x + gun_y + gun_z + hand + heartbeat + host_speeds + hostname + hostport + imagelist + impulse + in_initjoy + in_initmouse + in_joystick + in_mouse + info + intensity + invdrop + inven + invnext + invnextp + invnextw + invprev + invprevp + invprevw + invuse + ip + ip_clientport + ip_hostport + ipx_clientport + ipx_hostport + joy_advanced + joy_advancedupdate + joy_advaxisr + joy_advaxisu + joy_advaxisv + joy_advaxisx + joy_advaxisy + joy_advaxisz + joy_forwardsensitivity + joy_forwardthreshold + joy_name + joy_pitchsensitivity + joy_pitchthreshold + joy_sidesensitivity + joy_sidethreshold + joy_upsensitivity + joy_upthreshold + joy_yawsensitivity + joy_yawthreshold + kick + kill + killserver + link + load + loading + log_stats + logfile + lookspring + lookstrafe + m_filter + m_forward + m_pitch + m_side + m_yaw + map + map_noareas + mapname + maxclients + maxentities + maxspectators + menu_addressbook + menu_credits + menu_dmoptions + menu_game + menu_joinserver + menu_keys + menu_loadgame + menu_main + menu_multiplayer + menu_options + menu_playerconfig + menu_quit + menu_savegame + menu_startserver + menu_video + messagemode + messagemode3 + modellist + msg + name + needpass + net_shownet + netgraph + nextserver + noclip + noipx + notarget + noudp + password + path + pause + paused + pingservers + play + playerlist + players + port + precache + prog + protocol + public + qport + quit + r_drawentities + r_drawworld + r_dspeeds + r_fullbright + r_lerpmodels + r_lightlevel + r_nocull + r_norefresh + r_novis + r_speeds + rate + rcon + rcon_address + rcon_password + reconnect + record + run_pitch + run_roll + s_initsound + s_khz + s_loadas8bit + s_mixahead + s_primary + s_show + s_testsound + s_volume + s_wavonly + save + say + say_team + score + scr_centertime + scr_conspeed + scr_drawall + scr_printspeed + scr_showpause + scr_showturtle + screenshot + sensitivity + serverinfo + serverrecord + serverstop + set + setenv + setmaster + showclamp + showdrop + showpackets + showtrace + sizedown + sizeup + skill + skin + skins + sky + snd_restart + soundinfo + soundlist + spectator + spectator_password + status + stop + stopsound + sv + sv_airaccelerate + sv_enforcetime + sv_gravity + sv_maplist + sv_maxvelocity + sv_noreload + sv_reconnect_limit + sv_rollangle + sv_rollspeed + sw_allow_modex + sw_clearcolor + sw_drawflat + sw_draworder + sw_maxedges + sw_maxsurfs + sw_mipcap + sw_mipscale + sw_mode + sw_polymodelstats + sw_reportedgeout + sw_reportsurfout + sw_stipplealpha + sw_surfcacheoverride + sw_waterwarp + timedemo + timegraph + timelimit + timeout + timerefresh + timescale + togglechat + toggleconsole + unbind + unbindall + use + userinfo + v_centermove + v_centerspeed + version + vid_front + vid_fullscreen + vid_gamma + vid_ref + vid_restart + vid_xpos + vid_ypos + viewpos + viewsize + wait + wave + weaplast + weapnext + weapprev + win_noalttab + z_stats + zombietime + shift + ctrl + space + tab + enter + escape + F1 + F2 + F3 + F4 + F5 + F6 + F7 + F8 + F9 + F10 + F11 + F12 + INS + DEL + PGUP + PGDN + HOME + END + MOUSE1 + MOUSE2 + uparrow + downarrow + leftarrow + rightarrow + mwheelup + mwheeldown + backspace + + + diff --git a/extra/xmode/modes/rcp.xml b/extra/xmode/modes/rcp.xml new file mode 100644 index 0000000000..1b2f4c5d73 --- /dev/null +++ b/extra/xmode/modes/rcp.xml @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + /* + */ + + + + + + + + " + " + + + + ' + ' + + + = + + + + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + // + + = + ! + = + + + - + / + * + % + | + ^ + ~ + + } + { + , + ; + ] + [ + ? + @ + : + + ( + ) + + + ALERT + APPLICATION + APPLICATIONICONNAME + AREA + BITMAP + BITMAPCOLOR + BITMAPCOLOR16 + BITMAPCOLOR16K + BITMAPFAMILY + BITMAPFAMILYEX + BITMAPFAMILYSPECIAL + BITMAPGREY + BITMAPGREY16 + BITMAPSCREENFAMILY + BOOTSCREENFAMILY + BUTTON + BUTTONS + BYTELIST + CATEGORIES + CHECKBOX + COUNTRYLOCALISATION + DATA + FEATURE + FIELD + FONTINDEX + FORM + FORMBITMAP + GADGET + GENERATEHEADER + GRAFFITIINPUTAREA + GRAFFITISTATEINDICATOR + HEX + ICON + ICONFAMILY + ICONFAMILYEX + INTEGER + KEYBOARD + LABEL + LAUNCHERCATEGORY + LIST + LONGWORDLIST + MENU + MENUITEM + MESSAGE + MIDI + NOGRAFFITISTATEINDICATOR + PALETTETABLE + POPUPLIST + POPUPTRIGGER + PULLDOWN + PUSHBUTTON + REPEATBUTTON + RESETAUTOID + SCROLLBAR + SELECTORTRIGGER + SLIDER + SMALLICON + SMALLICONFAMILY + SMALLICONFAMILYEX + STRING + STRINGTABLE + TABLE + TITLE + TRANSLATION + TRAP + VERSION + WORDLIST + + PREVTOP + PREVBOTTOM + PREVLEFT + PREVRIGHT + AUTO + AUTOID + + AT + AUTOSHIFT + BACKGROUNDID + BITMAPID + BOLDFRAME + BPP + CHECKED + COLORTABLE + COLUMNS + COLUMNWIDTHS + COMPRESS + COMPRESSBEST + COMPRESSPACKBITS + COMPRESSRLE + COMPRESSSCANLINE + CONFIRMATION + COUNTRY + CREATOR + CURRENCYDECIMALPLACES + CURRENCYNAME + CURRENCYSYMBOL + CURRENCYUNIQUESYMBOL + DATEFORMAT + DAYLIGHTSAVINGS + DEFAULTBTNID + DEFAULTBUTTON + DENSITY + DISABLED + DYNAMICSIZE + EDITABLE + ENTRY + ERROR + EXTENDED + FEEDBACK + FILE + FONTID + FORCECOMPRESS + FRAME + GRAFFITI + GRAPHICAL + GROUP + HASSCROLLBAR + HELPID + ID + INDEX + INFORMATION + KEYDOWNCHR + KEYDOWNKEYCODE + KEYDOWNMODIFIERS + LANGUAGE + LEFTALIGN + LEFTANCHOR + LONGDATEFORMAT + MAX + MAXCHARS + MEASUREMENTSYSTEM + MENUID + MIN + LOCALE + MINUTESWESTOFGMT + MODAL + MULTIPLELINES + NAME + NOCOLORTABLE + NOCOMPRESS + NOFRAME + NONEDITABLE + NONEXTENDED + NONUSABLE + NOSAVEBEHIND + NUMBER + NUMBERFORMAT + NUMERIC + PAGESIZE + RECTFRAME + RIGHTALIGN + RIGHTANCHOR + ROWS + SAVEBEHIND + SEARCH + SCREEN + SELECTEDBITMAPID + SINGLELINE + THUMBID + TRANSPARENTINDEX + TIMEFORMAT + UNDERLINED + USABLE + VALUE + VERTICAL + VISIBLEITEMS + WARNING + WEEKSTARTDAY + + FONT + + TRANSPARENT + + BEGIN + END + + + #include + #define + equ + #undef + #ifdef + #ifndef + #else + #endif + + package + + + + + + + $ + \ + = + ! + = + + + - + / + * + % + | + ^ + ~ + . + } + { + , + ; + ] + [ + ? + @ + : + ) + ' + + diff --git a/extra/xmode/modes/rd.xml b/extra/xmode/modes/rd.xml new file mode 100644 index 0000000000..2c94a6466b --- /dev/null +++ b/extra/xmode/modes/rd.xml @@ -0,0 +1,70 @@ + + + + + + + + + + " + " + + # + { + } + + \name + \alias + \title + \description + \synopsis + \usage + \arguments + \details + \value + \references + \note + \author + \seealso + \examples + \keyword + \itemize + \method + \docType + \format + \source + \itemize + \section + \enumerate + \describe + \tabular + \link + \item + \eqn + \deqn + \concept + \emph + \strong + \bold + \sQuote + \dQuote + \code + \preformatted + \kbd + \samp + \pkg + \file + \email + \url + \var + \env + \option + \command + \dfn + \cite + \acronym + \tab + + + diff --git a/extra/xmode/modes/rebol.xml b/extra/xmode/modes/rebol.xml new file mode 100644 index 0000000000..6d672b9871 --- /dev/null +++ b/extra/xmode/modes/rebol.xml @@ -0,0 +1,546 @@ + + + + + + + + + + + + + + + + + + comment { + } + + + + comment{ + } + + + + " + " + + + + { + } + + + ; + + = + >= + <= + <> + + + / + * + > + < + + ' + + + abs + absolute + add + and~ + at + back + change + clear + complement + copy + cp + divide + fifth + find + first + fourth + head + insert + last + make + max + maximum + min + minimum + multiply + negate + next + or~ + pick + poke + power + random + remainder + remove + second + select + skip + sort + subtract + tail + third + to + trim + xor~ + alias + all + any + arccosine + arcsine + arctangent + bind + break + browse + call + caret-to-offset + catch + checksum + close + comment + compose + compress + cosine + debase + decompress + dehex + detab + dh-compute-key + dh-generate-key + dh-make-key + difference + disarm + do + dsa-generate-key + dsa-make-key + dsa-make-signature + dsa-verify-signature + either + else + enbase + entab + exclude + exit + exp + foreach + form + free + get + get-modes + halt + hide + if + in + intersect + load + log-10 + log-2 + log-e + loop + lowercase + maximum-of + minimum-of + mold + not + now + offset-to-caret + open + parse + prin + print + protect + q + query + quit + read + read-io + recycle + reduce + repeat + return + reverse + rsa-encrypt + rsa-generate-key + rsa-make-key + save + secure + set + set-modes + show + sine + size-text + square-root + tangent + textinfo + throw + to-hex + to-local-file + to-rebol-file + trace + try + union + unique + unprotect + unset + until + update + uppercase + use + wait + while + write + write-io + basic-syntax-header + crlf + font-fixed + font-sans-serif + font-serif + list-words + outstr + val + value + about + alert + alter + append + array + ask + boot-prefs + build-tag + center-face + change-dir + charset + choose + clean-path + clear-fields + confine + confirm + context + cvs-date + cvs-version + decode-cgi + decode-url + deflag-face + delete + demo + desktop + dirize + dispatch + do-boot + do-events + do-face + do-face-alt + does + dump-face + dump-pane + echo + editor + emailer + emit + extract + find-by-type + find-key-face + find-window + flag-face + flash + focus + for + forall + forever + forskip + func + function + get-net-info + get-style + has + help + hide-popup + import-email + inform + input + insert-event-func + join + launch + launch-thru + layout + license + list-dir + load-image + load-prefs + load-thru + make-dir + make-face + net-error + open-events + parse-email-addrs + parse-header + parse-header-date + parse-xml + path-thru + probe + protect-system + read-net + read-thru + reboot + reform + rejoin + remold + remove-event-func + rename + repend + replace + request + request-color + request-date + request-download + request-file + request-list + request-pass + request-text + resend + save-prefs + save-user + scroll-para + send + set-font + set-net + set-para + set-style + set-user + set-user-name + show-popup + source + split-path + stylize + switch + throw-on-error + to-binary + to-bitset + to-block + to-char + to-date + to-decimal + to-email + to-event + to-file + to-get-word + to-hash + to-idate + to-image + to-integer + to-issue + to-list + to-lit-path + to-lit-word + to-logic + to-money + to-none + to-pair + to-paren + to-path + to-refinement + to-set-path + to-set-word + to-string + to-tag + to-time + to-tuple + to-url + to-word + unfocus + uninstall + unview + upgrade + Usage + vbug + view + view-install + view-prefs + what + what-dir + write-user + return + at + space + pad + across + below + origin + guide + tabs + indent + style + styles + size + sense + backcolor + do + none + action? + any-block? + any-function? + any-string? + any-type? + any-word? + binary? + bitset? + block? + char? + datatype? + date? + decimal? + email? + empty? + equal? + error? + even? + event? + file? + function? + get-word? + greater-or-equal? + greater? + hash? + head? + image? + index? + integer? + issue? + length? + lesser-or-equal? + lesser? + library? + list? + lit-path? + lit-word? + logic? + money? + native? + negative? + none? + not-equal? + number? + object? + odd? + op? + pair? + paren? + path? + port? + positive? + refinement? + routine? + same? + series? + set-path? + set-word? + strict-equal? + strict-not-equal? + string? + struct? + tag? + tail? + time? + tuple? + unset? + url? + word? + zero? + connected? + crypt-strength? + exists-key? + input? + script? + type? + value? + ? + ?? + dir? + exists-thru? + exists? + flag-face? + found? + in-window? + info? + inside? + link-app? + link? + modified? + offset? + outside? + screen-offset? + size? + span? + view? + viewed? + win-offset? + within? + action! + any-block! + any-function! + any-string! + any-type! + any-word! + binary! + bitset! + block! + char! + datatype! + date! + decimal! + email! + error! + event! + file! + function! + get-word! + hash! + image! + integer! + issue! + library! + list! + lit-path! + lit-word! + logic! + money! + native! + none! + number! + object! + op! + pair! + paren! + path! + port! + refinement! + routine! + series! + set-path! + set-word! + string! + struct! + symbol! + tag! + time! + tuple! + unset! + url! + word! + + true + false + self + + + diff --git a/extra/xmode/modes/redcode.xml b/extra/xmode/modes/redcode.xml new file mode 100644 index 0000000000..1c64d60252 --- /dev/null +++ b/extra/xmode/modes/redcode.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + ;redcode + ;author + ;name + ;strategy + ;password + ; + + .AB + .BA + .A + .B + .F + .X + .I + + , + : + ( + ) + + + + + - + / + % + + + == + != + <= + >= + < + > + + + && + || + ! + + + = + + + $ + @ + # + * + { + } + + + + CORESIZE + MAXPROCESSES + MAXCYCLES + MAXLENGTH + MINDISTANCE + ROUNDS + PSPACESIZE + CURLINE + VERSION + WARRIORS + + DAT + MOV + ADD + SUB + MUL + DIV + MOD + JMP + JMZ + JMN + DJN + SPL + SLT + CMP + SEQ + SNE + NOP + LDP + STP + + EQU + ORG + FOR + ROF + END + PIN + CORESIZE + MAXPROCESSES + MAXCYCLES + MAXLENGTH + MINDISTANCE + ROUNDS + PSPACESIZE + CURLINE + VERSION + WARRIORS + + + + + + + + diff --git a/extra/xmode/modes/relax-ng-compact.xml b/extra/xmode/modes/relax-ng-compact.xml new file mode 100644 index 0000000000..cdf67067e5 --- /dev/null +++ b/extra/xmode/modes/relax-ng-compact.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + # + + " + " + + + ' + ' + + + """ + """ + + + ''' + ''' + + + + + * + ? + &= + & + |= + | + = + - + + \ + + + attribute + default + datatypes + div + element + empty + external + grammar + include + inherit + list + mixed + namespace + notAllowed + parent + start + string + text + token + + + diff --git a/extra/xmode/modes/rest.xml b/extra/xmode/modes/rest.xml new file mode 100644 index 0000000000..0f51ecf579 --- /dev/null +++ b/extra/xmode/modes/rest.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + __ + .. _ + + + ={3,} + -{3,} + ~{3,} + #{3,} + "{3,} + \^{3,} + \+{3,} + \*{3,} + + + \.\.\s\|[^|]+\| + + + \|[^|]+\| + + + \.\.\s[A-z][A-z0-9-_]+:: + + + \*\*[^*]+\*\* + + + \*[^\s*][^*]*\* + + + .. + + + `[A-z0-9]+[^`]+`_{1,2} + + + \[[0-9]+\]_ + + + \[#[A-z0-9_]*\]_ + + + [*]_ + + + \[[A-z][A-z0-9_-]*\]_ + + + + + `` + `` + + + + + + ` + ` + + + `{3,} + + + :[A-z][A-z0-9 =\s\t_]*: + + + \+-[+-]+ + \+=[+=]+ + + + + diff --git a/extra/xmode/modes/rfc.xml b/extra/xmode/modes/rfc.xml new file mode 100644 index 0000000000..9d84db8319 --- /dev/null +++ b/extra/xmode/modes/rfc.xml @@ -0,0 +1,28 @@ + + + + + + + \[Page \d+\] + \[RFC\d+\] + + " + " + + + + MUST + MUST NOT + REQUIRED + SHALL + SHALL NOT + SHOULD + SHOULD NOT + RECOMMENDED + MAY + OPTIONAL + + + + diff --git a/extra/xmode/modes/rhtml.xml b/extra/xmode/modes/rhtml.xml new file mode 100644 index 0000000000..76e4f9173b --- /dev/null +++ b/extra/xmode/modes/rhtml.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + <%# + %> + + + + + <%= + %> + + + + + <% + %> + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + + + + + <!-- + --> + + + + <%# + %> + + + + " + " + + + + ' + ' + + + = + + + + + + <% + %> + + + + <%= + %> + + + diff --git a/extra/xmode/modes/rib.xml b/extra/xmode/modes/rib.xml new file mode 100644 index 0000000000..81b579ff12 --- /dev/null +++ b/extra/xmode/modes/rib.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + # + # + - + + + [ + ] + + " + " + + + float + string + color + point + vector + normal + matrix + void + varying + uniform + output + extern + + Begin + End + Declare + RtContextHandle + ContextHandle + Context + FrameBegin + FrameEnd + WorldBegin + WorldEnd + SolidBegin + SolidEnd + MotionBegin + MotionEnd + ObjectBegin + ObjectEnd + Format + FrameAspectRatio + ScreenWindow + CropWindow + Projection + Clipping + ClippingPlane + DepthOfField + Shutter + PixelVariance + PixelSamples + PixelFilter + Exposure + Imager + Quantize + Display + Hider + ColorSamples + RelativeDetail + Option + AttributeBegin + AttributeEnd + Color + Opacity + TextureCoordinates + RtLightHandle + LightSource + AreaLightSource + Illuminate + Surface + Displacement + Atmosphere + Interior + Exterior + ShadingRate + ShadingInterpolation + Matte + Bound + Detail + DetailRange + GeometricApproximation + Orientation + ReverseOrientation + Sides + Identity + Transform + ConcatTransform + Perspective + Translate + Rotate + Scale + Skew + CoordinateSystem + CoordSysTransform + TransformPoints + TransformBegin + TransformEnd + Attribute + + Polygon + GeneralPolygon + PointsPolygons + PointsGeneralPolygons + Basis + Patch + PatchMesh + NuPatch + TrimCurve + SubdivisionMesh + Sphere + Cone + Cylinder + Hyperboloid + Paraboloid + Disk + Torus + Points + Curves + Blobby + Procedural + DelayedReadArchive + RunProgram + DynamicLoad + Geometry + SolidBegin + SolidEnd + RtObjectHandle + ObjectBegin + ObjectEnd + ObjectInstance + + MakeTexture + MakeLatLongEnvironment + MakeCubeFaceEnvironment + MakeShadow + ErrorHandler + ArchiveRecord + ReadArchive + Deformation + MakeBump + + + + + float + string + color + point + vector + normal + matrix + void + varying + uniform + output + extern + + P + Pw + Pz + N + Cs + Os + RI_NULL + RI_INFINITY + orthographic + perspective + bezier + catmull-rom + b-spline + hermite + power + catmull-clark + hole + crease + corner + interpolateboundary + object + world + camera + screen + raster + NDC + box + triangle + sinc + gaussian + constant + smooth + outside + inside + lh + rh + bicubic + bilinear + periodic + nonperiodic + hidden + null + + + + diff --git a/extra/xmode/modes/rpmspec.xml b/extra/xmode/modes/rpmspec.xml new file mode 100644 index 0000000000..9bc3e12741 --- /dev/null +++ b/extra/xmode/modes/rpmspec.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + # + + + < + > + = + + + + %attr( + ) + + + + + %verify( + ) + + + + Source + + + Patch + %patch + + + + ${ + } + + + + %{ + } + + + $# + $? + $* + $< + $ + + + Summary: + Name: + Version: + Release: + Copyright: + Group: + URL: + Packager: + Prefix: + Distribution: + Vendor: + Icon: + Provides: + Requires: + Serial: + Conflicts: + AutoReqProv: + BuildArch: + ExcludeArch: + ExclusiveArch: + ExclusiveOS: + BuildRoot: + NoSource: + NoPatch: + + + + + + + + + + + + + + %setup + %ifarch + %ifnarch + %ifos + %ifnos + %else + %endif + + %doc + %config + %docdir + %dir + %package + + + + + , + - + + + + + owner + group + mode + md5 + size + maj + min + symlink + mtime + not + + + diff --git a/extra/xmode/modes/rtf.xml b/extra/xmode/modes/rtf.xml new file mode 100644 index 0000000000..889e79e359 --- /dev/null +++ b/extra/xmode/modes/rtf.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + { + } + + \\'\w\d + + \*\ + + \ + + diff --git a/extra/xmode/modes/ruby.xml b/extra/xmode/modes/ruby.xml new file mode 100644 index 0000000000..2d29c2d13d --- /dev/null +++ b/extra/xmode/modes/ruby.xml @@ -0,0 +1,462 @@ + + + + + + + + + + + + + + + + + + + + + + + + =begin + =end + + + + @ + + + /[^\p{Blank}]*?/ + + + + + " + " + + + + ' + ' + + + + + %Q?\( + ) + + + + + %q( + ) + + + + + %Q?\{ + } + + + + + %q{ + } + + + + + %Q?\[ + ] + + + + + %q[ + ] + + + + + %Q?< + > + + + + + %q< + > + + + + + + %Q([^\p{Alnum}]) + $1 + + + + + %q([^\p{Alnum}]) + $1 + + + + + %([^\p{Alnum}\p{Space}]) + $1 + + + + + %W( + ) + + + + + %w( + ) + + + + + %W{ + } + + + + + %w{ + } + + + + + %W[ + ] + + + + + %w[ + ] + + + + + %W< + > + + + + + %w< + > + + + + + %W([^\p{Alnum}\p{Space}]) + $1 + + + + + %w([^\p{Alnum}\p{Space}]) + $1 + + + + + + <<-?"([\p{Graph}]+)" + $1 + + + + + + <<-?'([\p{Graph}]+)' + $1 + + + + + + <<-?([A-Za-z_]+) + $1 + + + + + + + ` + ` + + + + + %x( + ) + + + + + %x{ + } + + + + + %x[ + ] + + + + + %x< + > + + + + + %x([^\p{Alnum}\p{Space}]) + $1 + + + + + + + + + + + %r( + ) + + + + + %r{ + } + + + + + %r[ + ] + + + + + %r< + > + + + + + %r([^\p{Alnum}\p{Space}]) + $1 + + + + + (/ + / + + + + + + #{ + } + + + + # + + + \$-[0adFiIKlpvw](?![\p{Alnum}_]) + + \$[0-9!@&\+`'=~/\\,\.;<>_\*"\$\?\:F](?![\p{Alnum}_]) + + + defined? + + + include(?![\p{Alnum}_\?]) + + + { + } + ( + ) + + + :: + === + = + >> + << + <= + + + - + / + + ** + * + + % + + + & + | + ! + > + < + ^ + ~ + + + ... + .. + + ] + [ + ? + + + :[\p{Alpha}_][\p{Alnum}_]* + + : + + + BEGIN + END + alias + begin + break + case + class + def + do + else + elsif + end + ensure + for + if + in + module + next + redo + rescue + retry + return + then + undef + unless + until + when + while + yield + + load + require + + and + not + or + + false + nil + self + super + true + + $defout + $deferr + $stderr + $stdin + $stdout + $DEBUG + $FILENAME + $LOAD_PATH + $SAFE + $VERBOSE + __FILE__ + __LINE__ + ARGF + ARGV + ENV + DATA + FALSE + NIL + RUBY_PLATFORM + RUBY_RELEASE_DATE + RUBY_VERSION + STDERR + STDIN + STDOUT + SCRIPT_LINES__ + TOPLEVEL_BINDING + TRUE + + + + + + + #{ + } + + #@@ + #@ + #$ + + + + + + #{ + } + + #@@ + #@ + #$ + + + + + + #{ + } + + #@@ + #@ + #$ + + diff --git a/extra/xmode/modes/rview.xml b/extra/xmode/modes/rview.xml new file mode 100644 index 0000000000..9747465814 --- /dev/null +++ b/extra/xmode/modes/rview.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + /**/ + + + + /** + */ + + + + + /* + */ + + + + " + " + + + } + { + = + + + ( + ) + + // + + + + + unique + relationalview + class + + rowmap + table + function + subview + query + + join + jointype + leftouter + rightouter + + switch + case + + sql + constraints + where + orderby + return + distinct + + + allow + delete + + update + select + insert + + + boolean + byte + char + double + float + int + long + short + + useCallableStatement + + + CHAR + VARCHAR + LONGVARCHAR + NUMERIC + DECIMAL + BIT + TINYINT + SMALLINT + INTEGER + BIGINT + REAL + FLOAT + DOUBLE + BINARY + VARBINARY + LONGVARBINARY + DATE + TIME + TIMESTAMP + + + + + + + + ' + ' + + + + + + - + / + * + = + + + >= + <= + > + < + + + } + { + + + :: + + + : + + + ( + ) + + + SELECT + FROM + WHERE + AND + NOT + IN + BETWEEN + UPDATE + SET + + call + desc + + + CHAR + VARCHAR + LONGVARCHAR + NUMERIC + DECIMAL + BIT + TINYINT + SMALLINT + INTEGER + BIGINT + REAL + FLOAT + DOUBLE + BINARY + VARBINARY + LONGVARBINARY + DATE + TIME + TIMESTAMP + + + + + diff --git a/extra/xmode/modes/sas.xml b/extra/xmode/modes/sas.xml new file mode 100644 index 0000000000..4f51536b92 --- /dev/null +++ b/extra/xmode/modes/sas.xml @@ -0,0 +1,318 @@ + + + + + + + + + + + + + + + + + + /* + */ + + + + ' + ' + + + + = + < + > + _ + | + ~ + ^ + @ + ? + / + . + - + + + * + ! + + + $ASCII + $BINARY + $CB + $CHAR + $CHARZB + $EBCDIC + $HEX + $OCTAL + $VARYING + %BQUOTE + %DO + %ELSE + %END + %EVAL + %Global + %GOTO + %IF + %INC + %INCLUDE + %INDEX + %INPUT + %LENGTH + %LET + %LOCAL + %MACRO + %MEND + %NRBQUOTE + %NRQUOTE + %NRSTR + %PUT + %QSCAN + %Quote + %RUN + %SUBSTR + %SYSEXEC + %THEN + %UNTIL + %WHILE + %WINDOW + _ALL_ + _CHARACTER_ + _CMD_ + _ERROR_ + _I_ + _INFILE_ + _LAST_ + _MSG_ + _N_ + _NULL_ + _NUMERIC_ + _TEMPORARY_ + _TYPE_ + =DATA + ABORT + ADD + ADJRSQ + AND + ARRAY + ATTRIB + BACKWARD + BINARY + BLOCKSIZE + BY + BZ + CALL + CARDS + CARDS4 + CHAR + CLASS + COL + COLLIN + COLUMN + COMMA + COMMAX + CREATE + DATA + DATA= + DATE + DATETIME + DDMMYY + DECENDING + DEFINE + DELETE + DELIMITER + DISPLAY + DLM + DO + DROP + ELSE + END + ENDSAS + EOF + EOV + EQ + ERRORS + FILE + FILENAME + FILEVAR + FIRST. + FIRSTOBS + FOOTNOTE + FOOTNOTE1 + FOOTNOTE2 + FOOTNOTE3 + FORM + FORMAT + FORMCHAR + FORMDELIM + FORMDLIM + FORWARD + FROM + GO + GROUP + GT + HBAR + HEX + HPCT + HVAR + IB + ID + IEEE + IF + IN + INFILE + INFORMAT + INPUT + INR + JOIN + JULIAN + KEEP + LABEL + LAG + LAST. + LE + LIB + LIBNAME + LINE + LINESIZE + LINK + LIST + LOSTCARD + LRECL + LS + MACRO + MACROGEN + MAXDEC + MAXR + MEDIAN + MEMTYPE + MERGE + MERROR + MISSOVE + MLOGIC + MMDDYY + MODE + MODEL + MONYY + MPRINT + MRECALL + NE + NEW + NO + NOBS + NOCENTER + NOCUM + NODATE + NODUP + NODUPKEY + NOINT + NONUMBER + NOPAD + NOPRINT + NOROW + NOT + NOTITLE + NOTITLES + NOXSYNC + NOXWAIT + NUMBER + NWAY + OBS + OPTION + OPTIONS + OR + ORDER + OTHERWISE + OUT + OUTPUT + OVER + PAD + PAD2 + PAGESIZE + PD + PERCENT + PIB + PK + POINT + POSITION + PRINTER + PROC + PS + PUT + QUIT + R + RB + RECFM + REG + REGR + RENAME + REPLACE + RETAIN + RETURN + REUSE + RSQUARE + RUN + SASAUTOS + SCAN + SELECT + SELECTION + SERROR + SET + SIMPLE + SLE + SLS + START + STDIN + STOP + STOPOVER + SUBSTR + SYMBOL + SYMBOLGEN + T + TABLE + TABLES + THEN + TITLE + TITLE1 + TITLE2 + TITLE3 + TITLE4 + TITLE5 + TO + TOL + UNFORMATTED + UNTIL + UPDATE + VALUE + VAR + WHEN + WHERE + WHILE + WINDOW + WORK + X + XSYNC + XWAIT + YES + YYMMDD + + + + + + + diff --git a/extra/xmode/modes/scheme.xml b/extra/xmode/modes/scheme.xml new file mode 100644 index 0000000000..1117eaaa66 --- /dev/null +++ b/extra/xmode/modes/scheme.xml @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + #| + |# + + '( + ' + #\ + #b + #d + #o + #x + ; + + " + " + + + and + begin + case + cond + cond-expand + define + define-macro + delay + do + else + fluid-let + if + lambda + let + let* + letrec + or + quasiquote + quote + set! + abs + acos + angle + append + apply + asin + assoc + assq + assv + atan + car + cdr + caar + cadr + cdar + cddr + caaar + caadr + cadar + caddr + cdaar + cdadr + cddar + cdddr + call-with-current-continuation + call-with-input-file + call-with-output-file + call-with-values + call/cc + catch + ceiling + char->integer + char-downcase + char-upcase + close-input-port + close-output-port + cons + cos + current-input-port + current-output-port + delete-file + display + dynamic-wind + eval + exit + exact->inexact + exp + expt + file-or-directory-modify-seconds + floor + force + for-each + gcd + gensym + get-output-string + getenv + imag-part + integer->char + lcm + length + list + list->string + list->vector + list-ref + list-tail + load + log + magnitude + make-polar + make-rectangular + make-string + make-vector + map + max + member + memq + memv + min + modulo + newline + nil + not + number->string + open-input-file + open-input-string + open-output-file + open-output-string + peek-char + quotient + read + read-char + read-line + real-part + remainder + reverse + reverse! + round + set-car! + set-cdr! + sin + sqrt + string + string->list + string->number + string->symbol + string-append + string-copy + string-fill! + string-length + string-ref + string-set! + substring + symbol->string + system + tan + truncate + values + vector + vector->list + vector-fill! + vector-length + vector-ref + vector-set! + with-input-from-file + with-output-to-file + write + write-char + boolean? + char-alphabetic? + char-ci<=? + char-ci<? + char-ci=? + char-ci>=? + char-ci>? + char-lower-case? + char-numeric? + char-ready? + char-upper-case? + char-whitespace? + char<=? + char<? + char=? + char>=? + char>? + char? + complex? + eof-object? + eq? + equal? + eqv? + even? + exact? + file-exists? + inexact? + input-port? + integer? + list? + negative? + null? + number? + odd? + output-port? + pair? + port? + positive? + procedure? + rational? + real? + string-ci<=? + string-ci<? + string-ci=? + string-ci>=? + string-ci>? + string<=? + string<? + string=? + string>=? + string>? + string? + symbol? + vector? + zero? + #t + #f + + + diff --git a/extra/xmode/modes/sdl_pr.xml b/extra/xmode/modes/sdl_pr.xml new file mode 100644 index 0000000000..0f67aa83b9 --- /dev/null +++ b/extra/xmode/modes/sdl_pr.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + /*#SDTREF + */ + + + + + /* + */ + + + + + ' + ' + + + + " + " + + + + + + - + * + / + == + /= + := + = + < + <= + > + >= + . + ! + // + + and + mod + not + or + rem + xor + + + + active + adding + all + alternative + any + as + atleast + axioms + block + call + channel + comment + connect + connection + constant + constants + create + dcl + decision + default + else + end + endalternative + endblock + endchannel + endconnection + enddecision + endgenerator + endmacro + endnewtype + endoperator + endpackage + endprocedure + endprocess + endrefinement + endselect + endservice + endstate + endsubstructure + endsyntype + endsystem + env + error + export + exported + external + fi + finalized + for + fpar + from + gate + generator + if + import + imported + in + inherits + input + interface + join + literal + literals + macro + macrodefinition + macroid + map + nameclass + newtype + nextstate + nodelay + noequality + none + now + offspring + operator + operators + ordering + out + output + package + parent + priority + procedure + process + provided + redefined + referenced + refinement + remote + reset + return + returns + revealed + reverse + route + save + select + self + sender + service + set + signal + signallist + signalroute + signalset + spelling + start + state + stop + struct + substructure + synonym + syntype + system + task + then + this + timer + to + type + use + via + view + viewed + virtual + with + + + Boolean + Character + Charstring + Duration + Integer + Natural + Real + PId + Time + + + Array + String + Powerset + + + false + null + true + + + diff --git a/extra/xmode/modes/sgml.xml b/extra/xmode/modes/sgml.xml new file mode 100644 index 0000000000..6f7737d855 --- /dev/null +++ b/extra/xmode/modes/sgml.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + <!-- + --> + + + + + <!ENTITY + > + + + + + <![CDATA[ + ]]> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + diff --git a/extra/xmode/modes/shellscript.xml b/extra/xmode/modes/shellscript.xml new file mode 100644 index 0000000000..5d265b750d --- /dev/null +++ b/extra/xmode/modes/shellscript.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + #! + # + + + + ${ + } + + + $# + $? + $* + $@ + $$ + $< + $ + = + + + + $(( + )) + + + $( + ) + + + $[ + ] + + + ` + ` + + + + + " + " + + + ' + ' + + + + + + $1 + + + + | + & + ! + > + < + + + % + + + ( + ) + + + if + then + elif + else + fi + case + in + ;; + esac + while + for + do + done + continue + + local + return + + + + + + + + + + ${ + } + + + $ + + + + + + ${ + } + + + + $(( + )) + + + + $( + ) + + + + $[ + ] + + + $ + + | + & + ! + > + < + + diff --git a/extra/xmode/modes/shtml.xml b/extra/xmode/modes/shtml.xml new file mode 100644 index 0000000000..b5ee02e8ca --- /dev/null +++ b/extra/xmode/modes/shtml.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + <!--# + --> + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + + + + " + " + + + + ' + ' + + + = + + + + + " + " + + + + + = + + + config + echo + exec + flastmod + fsize + include + + cgi + errmsg + file + sizefmt + timefmt + var + cmd + + + + + + $ + + = + != + < + <= + > + >= + && + || + + diff --git a/extra/xmode/modes/slate.xml b/extra/xmode/modes/slate.xml new file mode 100644 index 0000000000..4f9b2c50e9 --- /dev/null +++ b/extra/xmode/modes/slate.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + " + " + + + # + + @ + + + ' + ' + + + + | + | + + + & + ` + + $\ + $ + + [ + ] + { + } + + diff --git a/extra/xmode/modes/smalltalk.xml b/extra/xmode/modes/smalltalk.xml new file mode 100644 index 0000000000..27eefe7f76 --- /dev/null +++ b/extra/xmode/modes/smalltalk.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + ' + ' + + + + " + " + + + := + _ + = + == + > + < + >= + <= + + + - + / + * + + : + # + $ + + + + + true + false + nil + + + self + super + + + isNil + not + + + Smalltalk + Transcript + + + Date + Time + Boolean + True + False + Character + String + Array + Symbol + Integer + Object + + + + diff --git a/extra/xmode/modes/smi-mib.xml b/extra/xmode/modes/smi-mib.xml new file mode 100644 index 0000000000..ed8982ea62 --- /dev/null +++ b/extra/xmode/modes/smi-mib.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + -- + + + " + " + + + ::= + } + { + + OBJECT IDENTIFIER + SEQUENCE OF + OCTET STRING + + + AGENT-CAPABILITIES + BEGIN + END + FROM + IMPORTS + MODULE-COMPLIANCE + MODULE-IDENTITY + NOTIFICATION-GROUP + NOTIFICATION-TYPE + OBJECT-GROUP + OBJECT-IDENTITY + OBJECT-TYPE + TEXTUAL-CONVENTION + + ACCESS + AUGMENTS + CONTACT-INFO + CREATION-REQUIRES + DEFINITIONS + DEFVAL + DESCRIPTION + DISPLAY-HINT + GROUP + INCLUDES + INDEX + LAST-UPDATED + MANDATORY-GROUPS + MAX-ACCESS + MIN-ACCESS + MODULE + NOTIFICATIONS + OBJECT + OBJECTS + ORGANIZATION + PRODUCT-RELEASE + REFERENCE + REVISION + STATUS + SYNTAX + SUPPORTS + UNITS + VARIATION + WRITE-SYNTAX + + AutonomousType + BITS + Counter32 + Counter64 + DateAndTime + DisplayString + Gauge32 + InstancePointer + INTEGER + Integer32 + IpAddress + MacAddress + Opaque + PhysAddress + RowPointer + RowStatus + SEQUENCE + TAddress + TDomain + TestAndIncr + TimeInterval + TimeStamp + TimeTicks + TruthValue + StorageType + Unsigned32 + VariablePointer + + accessible-for-notify + current + deprecated + not-accessible + obsolete + read-create + read-only + read-write + SIZE + + + diff --git a/extra/xmode/modes/splus.xml b/extra/xmode/modes/splus.xml new file mode 100644 index 0000000000..12e10d7ee3 --- /dev/null +++ b/extra/xmode/modes/splus.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + " + " + + + ' + ' + + + # + = + ! + _ + >= + <= + <- + + + - + / + + * + > + < + % + & + | + ^ + ~ + } + { + : + + + ( + ) + + + break + case + continue + default + do + else + for + goto + if + return + sizeof + switch + while + + function + + T + F + + + diff --git a/extra/xmode/modes/sql-loader.xml b/extra/xmode/modes/sql-loader.xml new file mode 100644 index 0000000000..ae62fc30b7 --- /dev/null +++ b/extra/xmode/modes/sql-loader.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + /* + */ + + + ' + ' + + + " + " + + -- + + + - + / + * + = + > + < + % + & + | + ^ + ~ + != + !> + !< + := + + + + LOAD + DATA + INFILE + BADFILE + DISCARDFILE + INTO + TABLE + FIELDS + TERMINATED + BY + OPTIONALLY + ENCLOSED + EXTERNAL + TRAILING + NULLCOLS + NULLIF + DATA + BLANKS + INSERT + INTO + POSITION + WHEN + APPEND + REPLACE + EOF + LOBFILE + TRUNCATE + COLUMN + + + COUNT + AND + SDF + OR + SYSDATE + + + binary + bit + blob + boolean + char + character + constant + date + datetime + decimal + double + filler + float + image + int + integer + money + + numeric + nchar + nvarchar + ntext + object + pls_integer + raw + real + smalldatetime + smallint + smallmoney + sequence + text + timestamp + tinyint + uniqueidentifier + varbinary + varchar + varchar2 + varray + zoned + + + + + diff --git a/extra/xmode/modes/sqr.xml b/extra/xmode/modes/sqr.xml new file mode 100644 index 0000000000..6e28544605 --- /dev/null +++ b/extra/xmode/modes/sqr.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + ! + + + + ' + ' + + + + + [ + ] + + + ^ + @ + := + = + <> + >= + <= + > + < + + + / + * + + $ + # + & + + + + begin-procedure + end-procedure + begin-report + end-report + begin-heading + end-heading + begin-setup + end-setup + begin-footing + end-footing + begin-program + end-program + + + begin-select + end-select + begin-sql + end-sql + + + add + array-add + array-divide + array-multiply + array-subtract + ask + break + call + clear-array + close + columns + commit + concat + connect + create-array + date-time + display + divide + do + dollar-symbol + else + encode + end-evaluate + end-if + end-while + evaluate + execute + extract + find + font + get + goto + graphic + if + last-page + let + lookup + lowercase + money-symbol + move + multiply + new-page + new-report + next-column + next-listing + no-formfeed + open + page-number + page-size + position + print + print-bar-code + print-chart + print-direct + print-image + printer-deinit + printer-init + put + read + rollback + show + stop + string + subtract + unstring + uppercase + use + use-column + use-printer-type + use-procedure + use-report + use-report + while + write + to + + + from + where + and + between + or + in + + + + diff --git a/extra/xmode/modes/squidconf.xml b/extra/xmode/modes/squidconf.xml new file mode 100644 index 0000000000..d8d84a684f --- /dev/null +++ b/extra/xmode/modes/squidconf.xml @@ -0,0 +1,227 @@ + + + + + + + + + + + + # + + + http_port + https_port + ssl_unclean_shutdown + icp_port + htcp_port + mcast_groups + udp_incoming_address + udp_outgoing_address + cache_peer + cache_peer_domain + neighbor_type_domain + icp_query_timeout + maximum_icp_query_timeout + mcast_icp_query_timeout + dead_peer_timeout + hierarchy_stoplist + no_cache + cache_mem + cache_swap_low + cache_swap_high + maximum_object_size + minimum_object_size + maximum_object_size_in_memory + ipcache_size + ipcache_low + ipcache_high + fqdncache_size + cache_replacement_policy + memory_replacement_policy + cache_dir + cache_access_log + cache_log + cache_store_log + cache_swap_log + emulate_httpd_log + log_ip_on_direct + mime_table + log_mime_hdrs + useragent_log + referer_log + pid_filename + debug_options + log_fqdn + client_netmask + ftp_user + ftp_list_width + ftp_passive + ftp_sanitycheck + cache_dns_program + dns_children + dns_retransmit_interval + dns_timeout + dns_defnames + dns_nameservers + hosts_file + diskd_program + unlinkd_program + pinger_program + redirect_program + redirect_children + redirect_rewrites_host_header + redirector_access + auth_param + authenticate_cache_garbage_interval + authenticate_ttl + authenticate_ip_ttl + external_acl_type + wais_relay_host + wais_relay_port + request_header_max_size + request_body_max_size + refresh_pattern + quick_abort_min + quick_abort_max + quick_abort_pct + negative_ttl + positive_dns_ttl + negative_dns_ttl + range_offset_limit + connect_timeout + peer_connect_timeout + read_timeout + request_timeout + persistent_request_timeout + client_lifetime + half_closed_clients + pconn_timeout + ident_timeout + shutdown_lifetime + acl + http_access + http_reply_access + icp_access + miss_access + cache_peer_access + ident_lookup_access + tcp_outgoing_tos + tcp_outgoing_address + reply_body_max_size + cache_mgr + cache_effective_user + cache_effective_group + visible_hostname + unique_hostname + hostname_aliases + announce_period + announce_host + announce_file + announce_port + httpd_accel_host + httpd_accel_port + httpd_accel_single_host + httpd_accel_with_proxy + httpd_accel_uses_host_header + dns_testnames + logfile_rotate + append_domain + tcp_recv_bufsize + err_html_text + deny_info + memory_pools + memory_pools_limit + forwarded_for + log_icp_queries + icp_hit_stale + minimum_direct_hops + minimum_direct_rtt + cachemgr_passwd + store_avg_object_size + store_objects_per_bucket + client_db + netdb_low + netdb_high + netdb_ping_period + query_icmp + test_reachability + buffered_logs + reload_into_ims + always_direct + never_direct + header_access + header_replace + icon_directory + error_directory + maximum_single_addr_tries + snmp_port + snmp_access + snmp_incoming_address + snmp_outgoing_address + as_whois_server + wccp_router + wccp_version + wccp_incoming_address + wccp_outgoing_address + delay_pools + delay_class + delay_access + delay_parameters + delay_initial_bucket_level + incoming_icp_average + incoming_http_average + incoming_dns_average + min_icp_poll_cnt + min_dns_poll_cnt + min_http_poll_cnt + max_open_disk_fds + offline_mode + uri_whitespace + broken_posts + mcast_miss_addr + mcast_miss_ttl + mcast_miss_port + mcast_miss_encode_key + nonhierarchical_direct + prefer_direct + strip_query_terms + coredump_dir + redirector_bypass + ignore_unknown_nameservers + digest_generation + digest_bits_per_entry + digest_rebuild_period + digest_rewrite_period + digest_swapout_chunk_size + digest_rebuild_chunk_percentage + chroot + client_persistent_connections + server_persistent_connections + pipeline_prefetch + extension_methods + request_entities + high_response_time_warning + high_page_fault_warning + high_memory_warning + store_dir_select_algorithm + forward_log + ie_refresh + vary_ignore_expire + sleep_after_fork + + dst + src + method + port + proxy_auth + + on + off + allow + deny + + + diff --git a/extra/xmode/modes/ssharp.xml b/extra/xmode/modes/ssharp.xml new file mode 100644 index 0000000000..019a6fd1cf --- /dev/null +++ b/extra/xmode/modes/ssharp.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + ' + ' + + + # + "" + + + " + " + + + + « + » + + + ( + ) + { + } + := + _ + = + == + > + < + >= + <= + + + - + / + // + \\ + * + ** + # + ^ + ^^ + ; + . + -> + && + || + ^| + != + ~= + !== + ~~ + + : + # + $ + + + + disable + enable + no + off + on + yes + + + self + true + false + nil + super + thread + sender + senderMethod + blockSelf + scheduler + ¼ + + + isNil + not + + + Smalltalk + Transcript + + + Date + Time + Boolean + True + False + Character + String + Array + Symbol + Integer + Object + + Application + Category + Class + Compiler + EntryPoint + Enum + Eval + Exception + Function + IconResource + Interface + Literal + Namespace + Method + Mixin + Module + Project + Reference + Require + Resource + Signal + Struct + Subsystem + Specifications + Warning + + + + diff --git a/extra/xmode/modes/svn-commit.xml b/extra/xmode/modes/svn-commit.xml new file mode 100644 index 0000000000..5cd415cadd --- /dev/null +++ b/extra/xmode/modes/svn-commit.xml @@ -0,0 +1,22 @@ + + + + + + + + + --This line, and those below, will be ignored-- + + + A + D + M + _ + + diff --git a/extra/xmode/modes/swig.xml b/extra/xmode/modes/swig.xml new file mode 100644 index 0000000000..ac5a23a1a9 --- /dev/null +++ b/extra/xmode/modes/swig.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + %{ + %} + + + + % + + + + diff --git a/extra/xmode/modes/tcl.xml b/extra/xmode/modes/tcl.xml new file mode 100644 index 0000000000..4927f13bff --- /dev/null +++ b/extra/xmode/modes/tcl.xml @@ -0,0 +1,682 @@ + + + + + + + + + + + + + + + + + \\$ + + + + ;\s*(?=#) + + + \{\s*(?=#) + } + + + # + + + + " + " + + + + + + \$(\w|::)+\( + ) + + + + ${ + } + + + \$(\w|::)+ + + + + { + } + + + + + [ + ] + + + + \a + \b + \f + \n + \r + \t + \v + + + + + ; + :: + + + = + ! + >= + <= + + + - + / + * + > + < + % + & + | + ^ + ~ + + + + append + array + concat + console + eval + expr + format + global + set + trace + unset + upvar + join + lappend + lindex + linsert + list + llength + lrange + lreplace + lsearch + lsort + split + scan + string + regexp + regsub + if + else + elseif + switch + for + foreach + while + break + continue + proc + return + source + unknown + uplevel + cd + close + eof + file + flush + gets + glob + open + read + puts + pwd + seek + tell + catch + error + exec + pid + after + time + exit + history + rename + info + + ceil + floor + round + incr + abs + acos + cos + cosh + asin + sin + sinh + atan + atan2 + tan + tanh + log + log10 + fmod + pow + hypot + sqrt + double + int + + bgerror + binary + clock + dde + encoding + fblocked + fconfigure + fcopy + fileevent + filename + http + interp + load + lset + memory + msgcat + namespace + package + pkg::create + pkg_mkIndex + registry + resource + socket + subst + update + variable + vwait + + auto_execok + auto_import + auto_load + auto_mkindex + auto_mkindex_old + auto_qualify + auto_reset + parray + tcl_endOfWord + tcl_findLibrary + tcl_startOfNextWord + tcl_startOfPreviousWord + tcl_wordBreakAfter + tcl_wordBreakBefore + + + bind + button + canvas + checkbutton + destroy + entry + focus + frame + grab + image + label + listbox + lower + menu + menubutton + message + option + pack + placer + radiobutton + raise + scale + scrollbar + selection + send + text + tk + tkerror + tkwait + toplevel + update + winfo + wm + + + + debug + disconnect + + exp_continue + exp_internal + exp_open + exp_pid + exp_version + expect + expect_after + expect_background + expect_before + expect_tty + expect_user + fork + inter_return + interact + interpreter + log_file + log_user + match_max + overlay + parity + promptl + prompt2 + remove_nulls + + send_error + send_log + send_tty + send_user + sleep + spawn + strace + stty + system + timestamp + trap + wait + + full_buffer + timeout + + + + argv0 + argv + argc + tk_version + tk_library + tk_strictMotif + + env + errorCode + errorInfo + geometry + tcl_library + tcl_patchLevel + tcl_pkgPath + tcl_platform + tcl_precision + tcl_rcFileName + tcl_rcRsrcName + tcl_traceCompile + tcl_traceExec + tcl_wordchars + tcl_nonwordchars + tcl_version + tcl_interactive + + + exact + all + indices + nocase + nocomplain + nonewline + code + errorinfo + errorcode + atime + anymore + args + body + compare + cmdcount + commands + ctime + current + default + dev + dirname + donesearch + errorinfo + executable + extension + first + globals + gid + index + ino + isdirectory + isfile + keep + last + level + length + library + locals + lstat + match + mode + mtime + names + nextelement + nextid + nlink + none + procs + owned + range + readable + readlink + redo + release + rootname + script + show + size + startsearch + stat + status + substitute + tail + tclversion + tolower + toupper + trim + trimleft + trimright + type + uid + variable + vars + vdelete + vinfo + visibility + window + writable + accelerator + activeforeground + activebackground + anchor + aspect + background + before + bg + borderwidth + bd + bitmap + command + cursor + default + expand + family + fg + fill + font + force + foreground + from + height + icon + question + warning + in + ipadx + ipady + justify + left + center + right + length + padx + pady + offvalue + onvalue + orient + horizontal + vertical + outline + oversrike + relief + raised + sunken + flat + groove + ridge + solid + screen + selectbackground + selectforeground + setgrid + side + size + slant + left + right + top + bottom + spacing1 + spacing2 + spacing3 + state + stipple + takefocus + tearoff + textvariable + title + to + type + abortretryignore + ok + okcancel + retrycancel + yesno + yesnocancel + underline + value + variable + weight + width + xscrollcommand + yscrollcommand + active + add + arc + aspect + bitmap + cascade + cget + children + class + clear + client + create + colormodel + command + configure + deiconify + delete + disabled + exists + focusmodel + flash + forget + geometry + get + group + handle + iconbitmap + iconify + iconmask + iconname + iconposition + iconwindow + idletasks + insert + interps + itemconfigure + invoke + line + mark + maxsize + minsize + move + name + normal + overrideredirect + oval + own + photo + polygon + positionfrom + propagate + protocol + ranges + rectangle + remove + resizable + separator + slaves + sizefrom + state + tag + title + transient + window + withdraw + xview + yview + Activate + Alt + Any + B1 + B2 + B3 + Button1 + Button2 + Button3 + ButtonPress + ButtonRelease + Double + Circulate + Colormap + Configure + Control + Deactivate + Escape + Expose + FocusIn + FocusOut + Gravity + Key + KeyPress + KeyRelease + Lock + Meta + Property + Reparent + Shift + Unmap + Visibility + Button + ButtonPress + ButtonRelease + Destroy + Escape + Enter + Leave + Motion + MenuSelect + Triple + all + + + + + + #.* + + + + + + + + + + \\$ + + + + \$(\w|::)+\( + ) + + + \$\{ + } + + \$(\w|::)+ + + + + [ + ] + + + + \a + \b + \f + \n + \r + \t + \v + + diff --git a/extra/xmode/modes/tex.xml b/extra/xmode/modes/tex.xml new file mode 100644 index 0000000000..c59bfa8d89 --- /dev/null +++ b/extra/xmode/modes/tex.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + $$ + $$ + + + + + $ + $ + + + + + \[ + \] + + + + \$ + \\ + \% + + + + \iffalse + \fi + + + + + \begin{verbatim} + \end{verbatim} + + + + + \verb| + | + + + \ + + + % + + + { + } + [ + ] + + + + + \$ + \\ + \% + + + \ + + + ) + ( + { + } + [ + ] + = + ! + + + - + / + * + > + < + & + | + ^ + ~ + . + , + ; + ? + : + ' + " + ` + + + % + + + + diff --git a/extra/xmode/modes/texinfo.xml b/extra/xmode/modes/texinfo.xml new file mode 100644 index 0000000000..32ce5893fa --- /dev/null +++ b/extra/xmode/modes/texinfo.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + @c + @comment + + + @ + + { + } + + diff --git a/extra/xmode/modes/text.xml b/extra/xmode/modes/text.xml new file mode 100644 index 0000000000..fe66537ae2 --- /dev/null +++ b/extra/xmode/modes/text.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/extra/xmode/modes/tpl.xml b/extra/xmode/modes/tpl.xml new file mode 100644 index 0000000000..9b215f67b3 --- /dev/null +++ b/extra/xmode/modes/tpl.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + < + > + + + + + & + ; + + + + + { + } + + + + + + + " + " + + + ' + ' + + + * + + + + include + = + START + END + + + + + + " + " + + + ' + ' + + + = + + + diff --git a/extra/xmode/modes/tsql.xml b/extra/xmode/modes/tsql.xml new file mode 100644 index 0000000000..ad4d151e2c --- /dev/null +++ b/extra/xmode/modes/tsql.xml @@ -0,0 +1,1013 @@ + + + + + + + + + + + + + /* + */ + + + + " + " + + + ' + ' + + + [ + ] + + + ( + ) + + -- + + + - + / + * + = + > + < + % + & + | + ^ + ~ + != + !> + !< + :: + : + + @ + + + + ABSOLUTE + ADD + ALTER + ANSI_NULLS + AS + ASC + AUTHORIZATION + BACKUP + BEGIN + BREAK + BROWSE + BULK + BY + CASCADE + CHECK + CHECKPOINT + CLOSE + CLUSTERED + COLUMN + COMMIT + COMMITTED + COMPUTE + CONFIRM + CONSTRAINT + CONTAINS + CONTAINSTABLE + CONTINUE + CONTROLROW + CREATE + CURRENT + CURRENT_DATE + CURRENT_TIME + CURSOR + DATABASE + DBCC + DEALLOCATE + DECLARE + DEFAULT + DELETE + DENY + DESC + DISK + DISTINCT + DISTRIBUTED + DOUBLE + DROP + DUMMY + DUMP + DYNAMIC + ELSE + END + ERRLVL + ERROREXIT + ESCAPE + EXCEPT + EXEC + EXECUTE + EXIT + FAST_FORWARD + FETCH + FILE + FILLFACTOR + FIRST + FLOPPY + FOR + FOREIGN + FORWARD_ONLY + FREETEXT + FREETEXTTABLE + FROM + FULL + FUNCTION + GLOBAL + GOTO + GRANT + GROUP + HAVING + HOLDLOCK + ID + IDENTITYCOL + IDENTITY_INSERT + IF + INDEX + INNER + INSENSITIVE + INSERT + INTO + IS + ISOLATION + KEY + KEYSET + KILL + LAST + LEVEL + LINENO + LOAD + LOCAL + MAX + MIN + MIRROREXIT + NATIONAL + NEXT + NOCHECK + NONCLUSTERED + OF + OFF + OFFSETS + ON + ONCE + ONLY + OPEN + OPENDATASOURCE + OPENQUERY + OPENROWSET + OPTIMISTIC + OPTION + ORDER + OUTPUT + OVER + PERCENT + PERM + PERMANENT + PIPE + PLAN + PRECISION + PREPARE + PRIMARY + PRINT + PRIOR + PRIVILEGES + PROC + PROCEDURE + PROCESSEXIT + PUBLIC + QUOTED_IDENTIFIER + RAISERROR + READ + READTEXT + READ_ONLY + RECONFIGURE + REFERENCES + RELATIVE + REPEATABLE + REPLICATION + RESTORE + RESTRICT + RETURN + RETURNS + REVOKE + ROLLBACK + ROWGUIDCOL + RULE + SAVE + SCHEMA + SCROLL + SCROLL_LOCKS + SELECT + SERIALIZABLE + SET + SETUSER + SHUTDOWN + STATIC + STATISTICS + TABLE + TAPE + TEMP + TEMPORARY + TEXTIMAGE_ON + THEN + TO + TOP + TRAN + TRANSACTION + TRIGGER + TRUNCATE + TSEQUAL + UNCOMMITTED + UNION + UNIQUE + UPDATE + UPDATETEXT + USE + VALUES + VARYING + VIEW + WAITFOR + WHEN + WHERE + WHILE + WITH + WORK + WRITETEXT + + + binary + bit + char + character + datetime + decimal + float + image + int + integer + money + name + numeric + nchar + nvarchar + ntext + real + smalldatetime + smallint + smallmoney + text + timestamp + tinyint + uniqueidentifier + varbinary + varchar + + + @@CONNECTIONS + @@CPU_BUSY + @@CURSOR_ROWS + @@DATEFIRST + @@DBTS + @@ERROR + @@FETCH_STATUS + @@IDENTITY + @@IDLE + @@IO_BUSY + @@LANGID + @@LANGUAGE + @@LOCK_TIMEOUT + @@MAX_CONNECTIONS + @@MAX_PRECISION + @@NESTLEVEL + @@OPTIONS + @@PACKET_ERRORS + @@PACK_RECEIVED + @@PACK_SENT + @@PROCID + @@REMSERVER + @@ROWCOUNT + @@SERVERNAME + @@SERVICENAME + @@SPID + @@TEXTSIZE + @@TIMETICKS + @@TOTAL_ERRORS + @@TOTAL_READ + @@TOTAL_WRITE + @@TRANCOUNT + @@VERSION + ABS + ACOS + APP_NAME + ASCII + ASIN + ATAN + ATN2 + AVG + BINARY_CHECKSUM + CASE + CAST + CEILING + CHARINDEX + CHECKSUM + CHECKSUM_AGG + COALESCE + COLLATIONPROPERTY + COLUMNPROPERTY + COL_LENGTH + COL_NAME + CONVERT + COS + COT + COUNT + COUNT_BIG + CURRENT_DATE + CURRENT_TIME + CURRENT_TIMESTAMP + CURRENT_USER + CURSOR_STATUS + DATABASEPROPERTY + DATALENGTH + DATEADD + DATEDIFF + DATENAME + DATEPART + DAY + DB_ID + DB_NAME + DEGREES + DIFFERENCE + EXP + FILEGROUPPROPERTY + FILEGROUP_ID + FILEGROUP_NAME + FILEPROPERTY + FILE_ID + FILE_NAME + FLOOR + FORMATMESSAGE + FULLTEXTCATALOGPROPERTY + FULLTEXTSERVICEPROPERTY + GETANSINULL + GETDATE + GETUTCDATE + GROUPING + HOST_ID + HOST_NAME + IDENTITY + IDENTITY_INSERT + IDENT_CURRENT + IDENT_INCR + IDENT_SEED + INDEXPROPERTY + INDEX_COL + ISDATE + ISNULL + ISNUMERIC + IS_MEMBER + IS_SRVROLEMEMBER + LEFT + LEN + LOG10 + LOG + LOWER + LTRIM + MONTH + NEWID + NULLIF + OBJECTPROPERTY + OBJECT_ID + OBJECT_NAME + PARSENAME + PATINDEX + PERMISSIONS + PI + POWER + QUOTENAME + RADIANS + RAND + REPLACE + REPLICATE + REVERSE + RIGHT + ROUND + ROWCOUNT_BIG + RTRIM + SCOPE_IDENTITY + SERVERPROPERTY + SESSIONPROPERTY + SESSION_USER + SIGN + SIN + SOUNDEX + SPACE + SQRT + SQUARE + STATS_DATE + STDEV + STDEVP + STR + STUFF + SUBSTRING + SUM + SUSER_ID + SUSER_NAME + SUSER_SID + SUSER_SNAME + SYSTEM_USER + TAN + TEXTPTR + TEXTVALID + TYPEPROPERTY + UNICODE + UPPER + USER + USER_ID + USER_NAME + VAR + VARP + YEAR + + + ALL + AND + ANY + BETWEEN + CROSS + EXISTS + IN + INTERSECT + JOIN + LIKE + NOT + NULL + OR + OUTER + SOME + + + sp_add_agent_parameter + sp_add_agent_profile + sp_add_alert + sp_add_category + sp_add_data_file_recover_suspect_db + sp_add_job + sp_add_jobschedule + sp_add_jobserver + sp_add_jobstep + sp_add_log_file_recover_suspect_db + sp_add_notification + sp_add_operator + sp_add_targetservergroup + sp_add_targetsvrgrp_member + sp_addalias + sp_addapprole + sp_addarticle + sp_adddistpublisher + sp_adddistributiondb + sp_adddistributor + sp_addextendedproc + sp_addgroup + sp_addlinkedserver + sp_addlinkedsrvlogin + sp_addlinkedsrvlogin + sp_addlogin + sp_addmergearticle + sp_addmergefilter + sp_addmergepublication + sp_addmergepullsubscription + sp_addmergepullsubscription_agent + sp_addmergesubscription + sp_addmessage + sp_addpublication + sp_addpublication_snapshot + sp_addpublisher70 + sp_addpullsubscription + sp_addpullsubscription_agent + sp_addremotelogin + sp_addrole + sp_addrolemember + sp_addserver + sp_addsrvrolemember + sp_addsubscriber + sp_addsubscriber_schedule + sp_addsubscription + sp_addsynctriggers + sp_addtabletocontents + sp_addtask + sp_addtype + sp_addumpdevice + sp_adduser + sp_altermessage + sp_apply_job_to_targets + sp_approlepassword + sp_article_validation + sp_articlecolumn + sp_articlefilter + sp_articlesynctranprocs + sp_articleview + sp_attach_db + sp_attach_single_file_db + sp_autostats + sp_bindefault + sp_bindrule + sp_bindsession + sp_browsereplcmds + sp_catalogs + sp_certify_removable + sp_change_agent_parameter + sp_change_agent_profile + sp_change_subscription_properties + sp_change_users_login + sp_changearticle + sp_changedbowner + sp_changedistpublisher + sp_changedistributiondb + sp_changedistributor_password + sp_changedistributor_property + sp_changegroup + sp_changemergearticle + sp_changemergefilter + sp_changemergepublication + sp_changemergepullsubscription + sp_changemergesubscription + sp_changeobjectowner + sp_changepublication + sp_changesubscriber + sp_changesubscriber_schedule + sp_changesubstatus + sp_check_for_sync_trigger + sp_column_privileges + sp_column_privileges_ex + sp_columns + sp_columns_ex + sp_configure + sp_create_removable + sp_createorphan + sp_createstats + sp_cursor + sp_cursor_list + sp_cursorclose + sp_cursorexecute + sp_cursorfetch + sp_cursoropen + sp_cursoroption + sp_cursorprepare + sp_cursorunprepare + sp_cycle_errorlog + sp_databases + sp_datatype_info + sp_dbcmptlevel + sp_dbfixedrolepermission + sp_dboption + sp_defaultdb + sp_defaultlanguage + sp_delete_alert + sp_delete_backuphistory + sp_delete_category + sp_delete_job + sp_delete_jobschedule + sp_delete_jobserver + sp_delete_jobstep + sp_delete_notification + sp_delete_operator + sp_delete_targetserver + sp_delete_targetservergroup + sp_delete_targetsvrgrp_member + sp_deletemergeconflictrow + sp_denylogin + sp_depends + sp_describe_cursor + sp_describe_cursor_columns + sp_describe_cursor_tables + sp_detach_db + sp_drop_agent_parameter + sp_drop_agent_profile + sp_dropalias + sp_dropapprole + sp_droparticle + sp_dropdevice + sp_dropdistpublisher + sp_dropdistributiondb + sp_dropdistributor + sp_dropextendedproc + sp_dropgroup + sp_droplinkedsrvlogin + sp_droplinkedsrvlogin + sp_droplogin + sp_dropmergearticle + sp_dropmergefilter + sp_dropmergepublication + sp_dropmergepullsubscription + sp_dropmergesubscription + sp_dropmessage + sp_droporphans + sp_droppublication + sp_droppullsubscription + sp_dropremotelogin + sp_droprole + sp_droprolemember + sp_dropserver + sp_dropsrvrolemember + sp_dropsubscriber + sp_dropsubscription + sp_droptask + sp_droptype + sp_dropuser + sp_dropwebtask + sp_dsninfo + sp_dumpparamcmd + sp_enumcodepages + sp_enumcustomresolvers + sp_enumdsn + sp_enumfullsubscribers + sp_execute + sp_executesql + sp_expired_subscription_cleanup + sp_fkeys + sp_foreignkeys + sp_fulltext_catalog + sp_fulltext_column + sp_fulltext_database + sp_fulltext_service + sp_fulltext_table + sp_generatefilters + sp_get_distributor + sp_getbindtoken + sp_getmergedeletetype + sp_grant_publication_access + sp_grantdbaccess + sp_grantlogin + sp_help + sp_help_agent_default + sp_help_agent_parameter + sp_help_agent_profile + sp_help_alert + sp_help_category + sp_help_downloadlist + sp_help_fulltext_catalogs + sp_help_fulltext_catalogs_cursor + sp_help_fulltext_columns + sp_help_fulltext_columns_cursor + sp_help_fulltext_tables + sp_help_fulltext_tables_cursor + sp_help_job + sp_help_jobhistory + sp_help_jobschedule + sp_help_jobserver + sp_help_jobstep + sp_help_notification + sp_help_operator + sp_help_publication_access + sp_help_targetserver + sp_help_targetservergroup + sp_helparticle + sp_helparticlecolumns + sp_helpconstraint + sp_helpdb + sp_helpdbfixedrole + sp_helpdevice + sp_helpdistpublisher + sp_helpdistributiondb + sp_helpdistributor + sp_helpextendedproc + sp_helpfile + sp_helpfilegroup + sp_helpgroup + sp_helphistory + sp_helpindex + sp_helplanguage + sp_helplinkedsrvlogin + sp_helplogins + sp_helpmergearticle + sp_helpmergearticleconflicts + sp_helpmergeconflictrows + sp_helpmergedeleteconflictrows + sp_helpmergefilter + sp_helpmergepublication + sp_helpmergepullsubscription + sp_helpmergesubscription + sp_helpntgroup + sp_helppublication + sp_helppullsubscription + sp_helpremotelogin + sp_helpreplicationdboption + sp_helprole + sp_helprolemember + sp_helprotect + sp_helpserver + sp_helpsort + sp_helpsrvrole + sp_helpsrvrolemember + sp_helpsubscriberinfo + sp_helpsubscription + sp_helpsubscription_properties + sp_helptask + sp_helptext + sp_helptrigger + sp_helpuser + sp_indexes + sp_indexoption + sp_link_publication + sp_linkedservers + sp_lock + sp_makewebtask + sp_manage_jobs_by_login + sp_mergedummyupdate + sp_mergesubscription_cleanup + sp_monitor + sp_msx_defect + sp_msx_enlist + sp_OACreate + sp_OADestroy + sp_OAGetErrorInfo + sp_OAGetProperty + sp_OAMethod + sp_OASetProperty + sp_OAStop + sp_password + sp_pkeys + sp_post_msx_operation + sp_prepare + sp_primarykeys + sp_processmail + sp_procoption + sp_publication_validation + sp_purge_jobhistory + sp_purgehistory + sp_reassigntask + sp_recompile + sp_refreshsubscriptions + sp_refreshview + sp_reinitmergepullsubscription + sp_reinitmergesubscription + sp_reinitpullsubscription + sp_reinitsubscription + sp_remoteoption + sp_remove_job_from_targets + sp_removedbreplication + sp_rename + sp_renamedb + sp_replcmds + sp_replcounters + sp_repldone + sp_replflush + sp_replication_agent_checkup + sp_replicationdboption + sp_replsetoriginator + sp_replshowcmds + sp_repltrans + sp_reset_connection + sp_resync_targetserver + sp_revoke_publication_access + sp_revokedbaccess + sp_revokelogin + sp_runwebtask + sp_script_synctran_commands + sp_scriptdelproc + sp_scriptinsproc + sp_scriptmappedupdproc + sp_scriptupdproc + sp_sdidebug + sp_server_info + sp_serveroption + sp_serveroption + sp_setapprole + sp_setnetname + sp_spaceused + sp_special_columns + sp_sproc_columns + sp_srvrolepermission + sp_start_job + sp_statistics + sp_stop_job + sp_stored_procedures + sp_subscription_cleanup + sp_table_privileges + sp_table_privileges_ex + sp_table_validation + sp_tableoption + sp_tables + sp_tables_ex + sp_unbindefault + sp_unbindrule + sp_unprepare + sp_update_agent_profile + sp_update_alert + sp_update_category + sp_update_job + sp_update_jobschedule + sp_update_jobstep + sp_update_notification + sp_update_operator + sp_update_targetservergroup + sp_updatestats + sp_updatetask + sp_validatelogins + sp_validname + sp_who + xp_cmdshell + xp_deletemail + xp_enumgroups + xp_findnextmsg + xp_findnextmsg + xp_grantlogin + xp_logevent + xp_loginconfig + xp_logininfo + xp_msver + xp_readmail + xp_revokelogin + xp_sendmail + xp_sprintf + xp_sqlinventory + xp_sqlmaint + xp_sqltrace + xp_sscanf + xp_startmail + xp_stopmail + xp_trace_addnewqueue + xp_trace_deletequeuedefinition + xp_trace_destroyqueue + xp_trace_enumqueuedefname + xp_trace_enumqueuehandles + xp_trace_eventclassrequired + xp_trace_flushqueryhistory + xp_trace_generate_event + xp_trace_getappfilter + xp_trace_getconnectionidfilter + xp_trace_getcpufilter + xp_trace_getdbidfilter + xp_trace_getdurationfilter + xp_trace_geteventfilter + xp_trace_geteventnames + xp_trace_getevents + xp_trace_gethostfilter + xp_trace_gethpidfilter + xp_trace_getindidfilter + xp_trace_getntdmfilter + xp_trace_getntnmfilter + xp_trace_getobjidfilter + xp_trace_getqueueautostart + xp_trace_getqueuedestination + xp_trace_getqueueproperties + xp_trace_getreadfilter + xp_trace_getserverfilter + xp_trace_getseverityfilter + xp_trace_getspidfilter + xp_trace_getsysobjectsfilter + xp_trace_gettextfilter + xp_trace_getuserfilter + xp_trace_getwritefilter + xp_trace_loadqueuedefinition + xp_trace_pausequeue + xp_trace_restartqueue + xp_trace_savequeuedefinition + xp_trace_setappfilter + xp_trace_setconnectionidfilter + xp_trace_setcpufilter + xp_trace_setdbidfilter + xp_trace_setdurationfilter + xp_trace_seteventclassrequired + xp_trace_seteventfilter + xp_trace_sethostfilter + xp_trace_sethpidfilter + xp_trace_setindidfilter + xp_trace_setntdmfilter + xp_trace_setntnmfilter + xp_trace_setobjidfilter + xp_trace_setqueryhistory + xp_trace_setqueueautostart + xp_trace_setqueuecreateinfo + xp_trace_setqueuedestination + xp_trace_setreadfilter + xp_trace_setserverfilter + xp_trace_setseverityfilter + xp_trace_setspidfilter + xp_trace_setsysobjectsfilter + xp_trace_settextfilter + xp_trace_setuserfilter + xp_trace_setwritefilter + fn_helpcollations + fn_servershareddrives + fn_virtualfilestats + + + backupfile + backupmediafamily + backupmediaset + backupset + MSagent_parameters + MSagent_profiles + MSarticles + MSdistpublishers + MSdistribution_agents + MSdistribution_history + MSdistributiondbs + MSdistributor + MSlogreader_agents + MSlogreader_history + MSmerge_agents + MSmerge_contents + MSmerge_delete_conflicts + MSmerge_genhistory + MSmerge_history + MSmerge_replinfo + MSmerge_subscriptions + MSmerge_tombstone + MSpublication_access + Mspublications + Mspublisher_databases + MSrepl_commands + MSrepl_errors + Msrepl_originators + MSrepl_transactions + MSrepl_version + MSreplication_objects + MSreplication_subscriptions + MSsnapshot_agents + MSsnapshot_history + MSsubscriber_info + MSsubscriber_schedule + MSsubscription_properties + MSsubscriptions + restorefile + restorefilegroup + restorehistory + sysalerts + sysallocations + sysaltfiles + sysarticles + sysarticleupdates + syscacheobjects + syscategories + syscharsets + syscolumns + syscomments + sysconfigures + sysconstraints + syscurconfigs + sysdatabases + sysdatabases + sysdepends + sysdevices + sysdownloadlist + sysfilegroups + sysfiles + sysforeignkeys + sysfulltextcatalogs + sysindexes + sysindexkeys + sysjobhistory + sysjobs + sysjobschedules + sysjobservers + sysjobsteps + syslanguages + syslockinfo + syslogins + sysmembers + sysmergearticles + sysmergepublications + sysmergeschemachange + sysmergesubscriptions + sysmergesubsetfilters + sysmessages + sysnotifications + sysobjects + sysobjects + sysoledbusers + sysoperators + sysperfinfo + syspermissions + sysprocesses + sysprotects + syspublications + sysreferences + sysremotelogins + sysreplicationalerts + sysservers + sysservers + syssubscriptions + systargetservergroupmembers + systargetservergroups + systargetservers + systaskids + systypes + sysusers + + + diff --git a/extra/xmode/modes/tthtml.xml b/extra/xmode/modes/tthtml.xml new file mode 100644 index 0000000000..24d9667c6c --- /dev/null +++ b/extra/xmode/modes/tthtml.xml @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + " + " + + + + ' + ' + + = + + + + + > + + SRC= + + + + > + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + [%# + %] + + + \[%\s*?PERL\s*?%\] + \[%\s*?END\s*?%\] + + + + [% + %] + + + + + + ${ + } + + + \$#?[\w:]+ + + + . + ( + + " + " + + + + ' + ' + + + = + ! + >= + <= + + + - + / + * + > + < + % + & + | + ^ + ~ + . + } + { + , + ; + ] + [ + ? + + + SET + GET + CALL + DEFAULT + IF + ELSIF + ELSE + UNLESS + LAST + NEXT + FOR + FOREACH + WHILE + SWITCH + CASE + PROCESS + INCLUDE + INSERT + WRAPPER + BLOCK + MACRO + END + USE + IN + FILTER + TRY + THROW + CATCH + FINAL + META + TAGS + DEBUG + PERL + + constants + + template + component + loop + error + content + + + + defined + length + repeat + replace + match + search + split + chunk + list + hash + size + + + keys + values + each + sort + nsort + import + defined + exists + item + + + first + last + max + reverse + join + grep + unshift + push + shift + pop + unique + merge + slice + splice + count + + + format + upper + lower + ucfirst + lcfirst + trim + collapse + html + html_entity + html_para + html_break + html_para_break + html_line_break + uri + url + indent + truncate + repeat + remove + replace + redirect + eval + evaltt + perl + evalperl + stdout + stderr + null + latex + + + diff --git a/extra/xmode/modes/twiki.xml b/extra/xmode/modes/twiki.xml new file mode 100644 index 0000000000..364fec05e0 --- /dev/null +++ b/extra/xmode/modes/twiki.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + -- + + + -{3}[+]{1,6}(?:!!)?\s + + + \*[^\s*][^*]*\* + + + __\w.*?\w__ + + + _\w.*?\w_ + + + ==\w.*?\w== + + + =\w.*?\w= + + + --- + + + [A-Z][A-Z.]*[a-z.]+(?:[A-Z][A-Z.]*[a-z.]*[a-z])+ + + + + [[ + ]] + + + + + <verbatim> + </verbatim> + + + + <nop> + + + + <noautolink> + </noautolink> + + + + \s{3}\w(?:&nbsp;|-|\w)*?\w+:\s + + + %[A-Z]+(?:\{[^\}]+\})?% + + + + ATTACHURL + ATTACHURLPATH + BASETOPIC + BASEWEB + GMTIME + HOMETOPIC + HTTP_HOST + INCLUDE + INCLUDINGTOPIC + INCLUDINGWEB + MAINWEB + NOTIFYTOPIC + PUBURL + PUBURLPATH + REMOTE_ADDR + REMOTE_PORT + REMOTE_USER + SCRIPTSUFFIX + SCRIPTURL + SCRIPTURLPATH + SEARCH + SERVERTIME + SPACEDTOPIC + STARTINCLUDE + STATISTICSTOPIC + STOPINCLUDE + TOC + TOPIC + TOPICLIST + TWIKIWEB + URLENCODE + URLPARAM + USERNAME + WEB + WEBLIST + WEBPREFSTOPIC + WIKIHOMEURL + WIKINAME + WIKIPREFSTOPIC + WIKITOOLNAME + WIKIUSERNAME + WIKIUSERSTOPIC + WIKIVERSION + + + + + + + diff --git a/extra/xmode/modes/typoscript.xml b/extra/xmode/modes/typoscript.xml new file mode 100644 index 0000000000..b9a705b0e4 --- /dev/null +++ b/extra/xmode/modes/typoscript.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + <INCLUDE + > + + + + = + + + + ( + ) + + + + < + + + # + + /* + */ + + / + + + + [ + ] + + + + { + } + ( + ) + + + + + + + {$ + } + + + + + + + + diff --git a/extra/xmode/modes/uscript.xml b/extra/xmode/modes/uscript.xml new file mode 100644 index 0000000000..c9c947fe89 --- /dev/null +++ b/extra/xmode/modes/uscript.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + /**/ + + + + /* + */ + + + + " + " + + + ' + ' + + + // + + ~ + ! + @ + # + $ + ^ + & + * + - + = + + + | + \\ + : + < + > + / + ? + ` + + : + + + ( + ) + + + abstract + auto + array + case + class + coerce + collapscategories + config + const + default + defaultproperties + deprecated + do + dontcollapsecategories + edfindable + editconst + editinline + editinlinenew + else + enum + event + exec + export + exportstructs + extends + false + final + for + foreach + function + globalconfig + hidecategories + if + ignores + input + iterator + latent + local + localized + native + nativereplication + noexport + noteditinlinenew + notplaceable + operator + optional + out + perobjectconfig + placeable + postoperator + preoperator + private + protected + reliable + replication + return + safereplace + showcategories + simulated + singular + state + static + struct + switch + transient + travel + true + unreliable + until + var + while + within + + default + global + none + self + static + super + + bool + byte + float + int + name + string + + + diff --git a/extra/xmode/modes/vbscript.xml b/extra/xmode/modes/vbscript.xml new file mode 100644 index 0000000000..9f0e9bf8a6 --- /dev/null +++ b/extra/xmode/modes/vbscript.xml @@ -0,0 +1,739 @@ + + + + + + + + + + + + + " + " + + + + #if + #else + #end + + ' + rem + + + < + <= + >= + > + = + <> + . + + + + + + - + * + / + \ + + ^ + + + & + + + + + + + + + : + + + + if + then + else + elseif + select + case + + + + for + to + step + next + + each + in + + do + while + until + loop + + wend + + + exit + end + + + function + sub + class + property + get + let + set + + + byval + byref + + + const + dim + redim + preserve + as + + + set + with + new + + + public + default + private + + + rem + + + call + execute + eval + + + on + error + goto + resume + option + explicit + erase + randomize + + + + is + + mod + + and + or + not + xor + imp + + + false + true + empty + nothing + null + + + + vbblack + vbred + vbgreen + vbyellow + vbblue + vbmagenta + vbcyan + vbwhite + + + + + vbGeneralDate + vbLongDate + vbShortDate + vbLongTime + vbShortTime + + + vbObjectError + Err + + + vbOKOnly + vbOKCancel + vbAbortRetryIgnore + vbYesNoCancel + vbYesNo + vbRetryCancel + vbCritical + vbQuestion + vbExclamation + vbInformation + vbDefaultButton1 + vbDefaultButton2 + vbDefaultButton3 + vbDefaultButton4 + vbApplicationModal + vbSystemModal + vbOK + vbCancel + vbAbort + vbRetry + vbIgnore + vbYes + vbNo + + + vbUseDefault + vbTrue + vbFalse + + + vbcr + vbcrlf + vbformfeed + vblf + vbnewline + vbnullchar + vbnullstring + vbtab + vbverticaltab + + vbempty + vbnull + vbinteger + vblong + vbsingle + vbdouble + vbcurrency + vbdate + vbstring + vbobject + vberror + vbboolean + vbvariant + vbdataobject + vbdecimal + vbbyte + vbarray + + + + array + lbound + ubound + + cbool + cbyte + ccur + cdate + cdbl + cint + clng + csng + cstr + + hex + oct + + date + time + dateadd + datediff + datepart + dateserial + datevalue + day + month + monthname + weekday + weekdayname + year + hour + minute + second + now + timeserial + timevalue + + formatcurrency + formatdatetime + formatnumber + formatpercent + + inputbox + loadpicture + msgbox + + atn + cos + sin + tan + exp + log + sqr + rnd + + rgb + + createobject + getobject + getref + + abs + int + fix + round + sgn + + scriptengine + scriptenginebuildversion + scriptenginemajorversion + scriptengineminorversion + + asc + ascb + ascw + chr + chrb + chrw + filter + instr + instrb + instrrev + join + len + lenb + lcase + ucase + left + leftb + mid + midb + right + rightb + replace + space + split + strcomp + string + strreverse + ltrim + rtrim + trim + + isarray + isdate + isempty + isnull + isnumeric + isobject + typename + vartype + + + + + + + adOpenForwardOnly + adOpenKeyset + adOpenDynamic + adOpenStatic + + + + + adLockReadOnly + adLockPessimistic + adLockOptimistic + adLockBatchOptimistic + + + adRunAsync + adAsyncExecute + adAsyncFetch + adAsyncFetchNonBlocking + adExecuteNoRecords + + + + + adStateClosed + adStateOpen + adStateConnecting + adStateExecuting + adStateFetching + + + adUseServer + adUseClient + + + adEmpty + adTinyInt + adSmallInt + adInteger + adBigInt + adUnsignedTinyInt + adUnsignedSmallInt + adUnsignedInt + adUnsignedBigInt + adSingle + adDouble + adCurrency + adDecimal + adNumeric + adBoolean + adError + adUserDefined + adVariant + adIDispatch + adIUnknown + adGUID + adDate + adDBDate + adDBTime + adDBTimeStamp + adBSTR + adChar + adVarChar + adLongVarChar + adWChar + adVarWChar + adLongVarWChar + adBinary + adVarBinary + adLongVarBinary + adChapter + adFileTime + adDBFileTime + adPropVariant + adVarNumeric + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + adPersistADTG + adPersistXML + + + + + + + + + + + + + + + + + adParamSigned + adParamNullable + adParamLong + + + adParamUnknown + adParamInput + adParamOutput + adParamInputOutput + adParamReturnValue + + + adCmdUnknown + adCmdText + adCmdTable + adCmdStoredProc + adCmdFile + adCmdTableDirect + + + + + + + + + + + + + + + + + + + + + diff --git a/extra/xmode/modes/velocity.xml b/extra/xmode/modes/velocity.xml new file mode 100644 index 0000000000..7fa160afce --- /dev/null +++ b/extra/xmode/modes/velocity.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + + + + + #* + *# + + + ## + + + ${ + } + + + \$!?[A-z][A-z0-9._-]* + + + #set + #foreach + #end + #if + #else + #elseif + #parse + #macro + #stop + #include + + + + + > + + SRC= + + + + + + + + + + > + + + + > + + + + + + + + diff --git a/extra/xmode/modes/verilog.xml b/extra/xmode/modes/verilog.xml new file mode 100644 index 0000000000..ee1602ec43 --- /dev/null +++ b/extra/xmode/modes/verilog.xml @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + /* + */ + + // + + + + " + " + + + 'd + 'h + 'b + 'o + + + ( + ) + + + = + ! + + + - + / + * + > + < + % + & + | + ^ + ~ + } + { + + + + always + assign + begin + case + casex + casez + default + deassign + disable + else + end + endcase + endfunction + endgenerate + endmodule + endprimitive + endspecify + endtable + endtask + for + force + forever + fork + function + generate + if + initial + join + macromodule + module + negedge + posedge + primitive + repeat + release + specify + table + task + wait + while + + + `include + `define + `undef + `ifdef + `ifndef + `else + `endif + `timescale + `resetall + `signed + `unsigned + `celldefine + `endcelldefine + `default_nettype + `unconnected_drive + `nounconnected_drive + `protect + `endprotect + `protected + `endprotected + `remove_gatename + `noremove_gatename + `remove_netname + `noremove_netname + `expand_vectornets + `noexpand_vectornets + `autoexpand_vectornets + + + integer + reg + time + realtime + defparam + parameter + event + wire + wand + wor + tri + triand + trior + tri0 + tri1 + trireg + vectored + scalared + input + output + inout + + + supply0 + supply1 + strong0 + strong1 + pull0 + pull1 + weak0 + weak1 + highz0 + highz1 + small + medium + large + + + $stop + $finish + $time + $stime + $realtime + $settrace + $cleartrace + $showscopes + $showvars + $monitoron + $monitoroff + $random + $printtimescale + $timeformat + + + and + nand + or + nor + xor + xnor + buf + bufif0 + bufif1 + not + notif0 + notif1 + nmos + pmos + cmos + rnmos + rpmos + rcmos + tran + tranif0 + tranif1 + rtran + rtranif0 + rtranif1 + pullup + pulldown + + + + diff --git a/extra/xmode/modes/vhdl.xml b/extra/xmode/modes/vhdl.xml new file mode 100644 index 0000000000..a5d6dcee58 --- /dev/null +++ b/extra/xmode/modes/vhdl.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + " + " + + + 'event + + + ' + ' + + + -- + = + /= + ! + : + >= + > + <= + < + + + - + / + * + + ** + % + & + | + ^ + ~ + : + + + architecture + alias + assert + entity + process + variable + signal + function + generic + in + out + inout + begin + end + component + use + library + loop + constant + break + case + port + is + to + of + array + catch + continue + default + do + else + elsif + when + then + downto + upto + extends + for + if + implements + instanceof + return + static + switch + type + while + others + all + record + range + wait + + package + import + std_logic + std_ulogic + std_logic_vector + std_ulogic_vector + integer + natural + bit + bit_vector + + + or + nor + not + nand + and + xnor + sll + srl + sla + sra + rol + ror + or + or + mod + rem + abs + + EVENT + BASE + LEFT + RIGHT + LOW + HIGH + ASCENDING + IMAGE + VALUE + POS + VAL + SUCC + VAL + POS + PRED + VAL + POS + LEFTOF + RIGHTOF + LEFT + RIGHT + LOW + HIGH + RANGE + REVERSE + LENGTH + ASCENDING + DELAYED + STABLE + QUIET + TRANSACTION + EVENT + ACTIVE + LAST + LAST + LAST + DRIVING + DRIVING + SIMPLE + INSTANCE + PATH + + rising_edge + shift_left + shift_right + rotate_left + rotate_right + resize + std_match + to_integer + to_unsigned + to_signed + unsigned + signed + to_bit + to_bitvector + to_stdulogic + to_stdlogicvector + to_stdulogicvector + + false + true + + + diff --git a/extra/xmode/modes/xml.xml b/extra/xmode/modes/xml.xml new file mode 100644 index 0000000000..116be46054 --- /dev/null +++ b/extra/xmode/modes/xml.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + <!-- + --> + + + + + <!ENTITY + > + + + + + <![CDATA[ + ]]> + + + + + <! + > + + + + + <? + > + + + + + < + > + + + + + & + ; + + + + + + <!-- + --> + + + + " + " + + + + ' + ' + + + / + : + + + + + <!-- + --> + + + + + -- + -- + + + + + % + ; + + + + " + " + + + + ' + ' + + + + + [ + ] + + + ( + ) + | + ? + * + + + , + + + CDATA + EMPTY + INCLUDE + IGNORE + NDATA + #IMPLIED + #PCDATA + #REQUIRED + + + + + + <!-- + --> + + + + + -- + -- + + + + " + " + + + + ' + ' + + + = + + % + + + SYSTEM + + + + + + diff --git a/extra/xmode/modes/xq.xml b/extra/xmode/modes/xq.xml new file mode 100644 index 0000000000..b49dc68f2e --- /dev/null +++ b/extra/xmode/modes/xq.xml @@ -0,0 +1,462 @@ + + + + + + + + + + + + + + + + + + + + + + + + <!-- + --> + + + + + + <!ENTITY + > + + + + + <![CDATA[ + ]]> + + + + + <! + > + + + + + <? + > + + + + + + > + + + + + & + ; + + + + + + + <!-- + --> + + + + " + " + + + + ' + ' + + + + / + : + + + + + + <!-- + --> + + + + + -- + -- + + + + + % + ; + + + + " + " + + + + ' + ' + + + + + [ + ] + + + ( + ) + | + ? + * + + + , + + + CDATA + EMPTY + INCLUDE + IGNORE + NDATA + #IMPLIED + #PCDATA + #REQUIRED + + + + + + + <!-- + --> + + + + + -- + -- + + + + " + " + + + + ' + ' + + + = + + % + + + SYSTEM + + + + + + + + + + + + (: + :) + + + + " + " + + + ' + ' + + + $ + + + + + ( + ) + + , + + = + != + > + >= + < + <= + + << + >> + + + + + * + + + + | + + / + // + + } + { + + + some + every + + or + and + + instance of + + treat as + + castable as + + cast as + + eq + ne + lt + gt + ge + is + + to + + div + idiv + mod + + union + + intersect + except + + return + for + in + to + at + + let + := + + where + + stable + order + by + + ascending + descending + + greatest + least + collation + + typeswitch + default + + cast + as + if + then + else + + true + false + + xquery + version + + declare + function + library + variable + module + namespace + local + + validate + import + schema + validation + collection + + ancestor + descendant + self + parent + child + self + descendant-or-self + ancestor-or-self + preceding-sibling + following-sibling + following + preceding + + xs:integer + xs:decimal + xs:double + xs:string + xs:date + xs:time + xs:dateTime + xs:boolean + + item + element + attribute + comment + document + document-node + node + empty + + zero-or-one + avg + base-uri + boolean + ceiling + codepoints-to-string + collection + compare + concat + contains + count + current-date + current-dateTime + current-time + data + day-from-date + day-from-dateTime + days-from-duration + deep-equal + distinct-values + doc + adjust-time-to-timezone + adjust-dateTime-to-timezone + string-length + string-join + string + starts-with + seconds-from-time + seconds-from-duration + seconds-from-dateTime + round-half-to-even + round + root + reverse + replace + remove + prefix-from-QName + position + one-or-more + number + QName + abs + adjust-date-to-timezone + doc-available + doctype + document + last + local-name + local-name-from-QName + lower-case + match-all + match-any + matches + max + min + minutes-from-dateTime + minutes-from-duration + minutes-from-time + month-from-date + month-from-dateTime + name + namespace-uri + namespace-uri-for-prefix + namespace-uri-from-QName + node-name + normalize-space + lang + item-at + document-uri + empty + encode-for-uri + ends-with + error + escape-html-uri + escape-uri + exactly-one + exists + false + floor + hours-from-dateTime + hours-from-duration + hours-from-time + id + implicit-timezone + in-scope-prefixes + index-of + insert-before + iri-to-uri + string-pad + string-to-codepoints + sum + timezone-from-date + timezone-from-dateTime + timezone-from-time + not + tokenize + translate + true + unordered + upper-case + xcollection + year-from-date + year-from-dateTime + substring-before + subsequence + substring + substring-after + + + + + diff --git a/extra/xmode/modes/xsl.xml b/extra/xmode/modes/xsl.xml new file mode 100644 index 0000000000..94a5610165 --- /dev/null +++ b/extra/xmode/modes/xsl.xml @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + <!-- + --> + + + + + <(?=xsl:) + > + + + + <(?=/xsl:) + > + + + + + <![CDATA[ + ]]> + + + + + <! + > + + + + + & + ; + + + + + <? + ?> + + + + + < + > + + + + + + + + DEBUG: + DONE: + FIXME: + IDEA: + NOTE: + QUESTION: + TODO: + XXX + ??? + + + + + + + + + " + " + + + ' + ' + + + + xmlns: + + xmlns + + + : + + + + + + + + {{ + }} + + + + { + } + + + + + & + ; + + + + + + + + + + " + " + + + ' + ' + + + + + + count[\p{Space}]*=[\p{Space}]*" + " + + + count[\p{Space}]*=[\p{Space}]*' + ' + + + + from[\p{Space}]*=[\p{Space}]*" + " + + + from[\p{Space}]*=[\p{Space}]*' + ' + + + + group-adjacent[\p{Space}]*=[\p{Space}]*" + " + + + group-adjacent[\p{Space}]*=[\p{Space}]*' + ' + + + + group-by[\p{Space}]*=[\p{Space}]*" + " + + + group-by[\p{Space}]*=[\p{Space}]*' + ' + + + + group-ending-with[\p{Space}]*=[\p{Space}]*" + " + + + group-ending-with[\p{Space}]*=[\p{Space}]*' + ' + + + + group-starting-with[\p{Space}]*=[\p{Space}]*" + " + + + group-starting-with[\p{Space}]*=[\p{Space}]*' + ' + + + + match[\p{Space}]*=[\p{Space}]*" + " + + + match[\p{Space}]*=[\p{Space}]*' + ' + + + + select[\p{Space}]*=[\p{Space}]*" + " + + + select[\p{Space}]*=[\p{Space}]*' + ' + + + + test[\p{Space}]*=[\p{Space}]*" + " + + + test[\p{Space}]*=[\p{Space}]*' + ' + + + + use[\p{Space}]*=[\p{Space}]*" + " + + + use[\p{Space}]*=[\p{Space}]*' + ' + + + + xmlns: + + xmlns + + + : + + + + analyze-string + apply-imports + apply-templates + attribute + attribute-set + call-template + character-map + choose + comment + copy + copy-of + date-format + decimal-format + element + fallback + for-each + for-each-group + function + if + import + import-schema + include + key + matching-substring + message + namespace + namespace-alias + next-match + non-matching-substring + number + otherwise + output + output-character + param + preserve-space + processing-instruction + result-document + sequence + sort + sort-key + strip-space + stylesheet + template + text + transform + value-of + variable + when + with-param + + + + + + + + " + " + + + ' + ' + + + + + (: + :) + + + + :: + + @ + + + + = + != + > + &gt; + &lt; + + ? + + + + + * + + / + + | + + , + + + + [ + ] + + + + + & + ; + + + + : + + + ( + ) + + + $ + + + + and + as + castable + div + else + eq + every + except + for + ge + gt + idiv + if + in + instance + intersect + is + isnot + le + lt + mod + nillable + ne + of + or + return + satisfies + some + then + to + treat + union + + + - + + + + + + + + + (: + :) + + + + + + + (: + :) + + + + diff --git a/extra/xmode/modes/zpt.xml b/extra/xmode/modes/zpt.xml new file mode 100644 index 0000000000..f962acff72 --- /dev/null +++ b/extra/xmode/modes/zpt.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + <!-- + --> + + + + + <SCRIPT + </SCRIPT> + + + + + <STYLE + </STYLE> + + + + + <! + > + + + + + < + > + + + + + & + ; + + + + + + + " + " + + + + ' + ' + + + = + + + + tal + attributes + define + condition + content + omit-tag + on-error + repeat + replace + + + metal + define-macro + define-slot + fill-slot + use-macro + + + + + : + ; + ? + | + $$ + + + " + " + + + + ' + ' + + + + ${ + } + + $ + + + + + exists + nocall + not + path + python + string + structure + + + + CONTEXTS + attrs + container + default + here + modules + nothing + options + repeat + request + root + template + user + + + index + number + even + odd + start + end + first + last + length + letter + Letter + roman + Roman + + + + + > + SRC= + + + + > + + + + > + + + diff --git a/extra/xmode/rules/rules-tests.factor b/extra/xmode/rules/rules-tests.factor new file mode 100644 index 0000000000..404dbb89fb --- /dev/null +++ b/extra/xmode/rules/rules-tests.factor @@ -0,0 +1,6 @@ +IN: temporary +USING: xmode.rules tools.test ; + +[ { 1 2 3 } ] [ f { 1 2 3 } ?push-all ] unit-test +[ { 1 2 3 } ] [ { 1 2 3 } f ?push-all ] unit-test +[ V{ 1 2 3 4 5 } ] [ { 1 2 3 } { 4 5 } ?push-all ] unit-test diff --git a/extra/xmode/rules/rules.factor b/extra/xmode/rules/rules.factor new file mode 100644 index 0000000000..9b530aae14 --- /dev/null +++ b/extra/xmode/rules/rules.factor @@ -0,0 +1,129 @@ +USING: xmode.tokens xmode.keyword-map kernel +sequences vectors assocs strings memoize ; +IN: xmode.rules + +! Based on org.gjt.sp.jedit.syntax.ParserRuleSet +TUPLE: rule-set +name +props +keywords +rules +imports +terminate-char +ignore-case? +default +escape-rule +highlight-digits? +digit-re +no-word-sep +; + +: init-rule-set ( ruleset -- ) + #! Call after constructor. + >r H{ } clone H{ } clone V{ } clone f r> + { + set-rule-set-rules + set-rule-set-props + set-rule-set-imports + set-rule-set-keywords + } set-slots ; + +: ( -- ruleset ) + rule-set construct-empty dup init-rule-set ; + +MEMO: standard-rule-set ( id -- ruleset ) + [ set-rule-set-default ] keep ; + +: import-rule-set ( import ruleset -- ) + rule-set-imports push ; + +: inverted-index ( hashes key index -- ) + [ swapd [ ?push ] change-at ] 2curry each ; + +: ?push-all ( seq1 seq2 -- seq1+seq2 ) + [ + over [ >r V{ } like r> over push-all ] [ nip ] if + ] when* ; + +DEFER: get-rules + +: get-imported-rules ( vector/f char ruleset -- vector/f ) + rule-set-imports [ get-rules ?push-all ] curry* each ; + +: get-always-rules ( vector/f ruleset -- vector/f ) + f swap rule-set-rules at ?push-all ; + +: get-char-rules ( vector/f char ruleset -- vector/f ) + >r ch>upper r> rule-set-rules at ?push-all ; + +: get-rules ( char ruleset -- seq ) + f -rot + [ get-char-rules ] 2keep + [ get-always-rules ] keep + get-imported-rules ; + +: rule-set-no-word-sep* ( ruleset -- str ) + dup rule-set-keywords keyword-map-no-word-sep* + swap rule-set-no-word-sep "_" 3append ; + +! Match restrictions +TUPLE: matcher text at-line-start? at-whitespace-end? at-word-start? ; + +C: matcher + +! Based on org.gjt.sp.jedit.syntax.ParserRule +TUPLE: rule +no-line-break? +no-word-break? +no-escape? +start +end +match-token +body-token +delegate +chars +; + +: construct-rule ( class -- rule ) + >r rule construct-empty r> construct-delegate ; inline + +TUPLE: seq-rule ; + +TUPLE: span-rule ; + +TUPLE: eol-span-rule ; + +: init-span ( rule -- ) + dup rule-delegate [ drop ] [ + dup rule-body-token standard-rule-set + swap set-rule-delegate + ] if ; + +: init-eol-span ( rule -- ) + dup init-span + t swap set-rule-no-line-break? ; + +TUPLE: mark-following-rule ; + +TUPLE: mark-previous-rule ; + +TUPLE: escape-rule ; + +: ( string -- rule ) + f f f + escape-rule construct-rule + [ set-rule-start ] keep ; + +: rule-chars* ( rule -- string ) + dup rule-chars + swap rule-start matcher-text + dup string? [ first add ] [ drop ] if ; + +: add-rule ( rule ruleset -- ) + >r dup rule-chars* >upper swap + r> rule-set-rules inverted-index ; + +: add-escape-rule ( string ruleset -- ) + >r r> + 2dup set-rule-set-escape-rule + add-rule ; diff --git a/extra/xmode/tokens/tokens.factor b/extra/xmode/tokens/tokens.factor new file mode 100644 index 0000000000..14a48582ec --- /dev/null +++ b/extra/xmode/tokens/tokens.factor @@ -0,0 +1,21 @@ +USING: parser words sequences namespaces kernel assocs ; +IN: xmode.tokens + +! Based on org.gjt.sp.jedit.syntax.Token +SYMBOL: tokens + +: string>token ( string -- id ) tokens get at ; + +: TOKENS: + ";" parse-tokens [ + create-in dup define-symbol + dup word-name swap + ] H{ } map>assoc tokens set-global ; parsing + +TOKENS: COMMENT1 COMMENT2 COMMENT3 COMMENT4 DIGIT FUNCTION +INVALID KEYWORD1 KEYWORD2 KEYWORD3 KEYWORD4 LABEL LITERAL1 +LITERAL2 LITERAL3 LITERAL4 MARKUP OPERATOR END NULL ; + +TUPLE: token str id ; + +C: token diff --git a/extra/xmode/utilities/test.xml b/extra/xmode/utilities/test.xml new file mode 100644 index 0000000000..09a83fabc8 --- /dev/null +++ b/extra/xmode/utilities/test.xml @@ -0,0 +1 @@ +VP SalesCFO diff --git a/extra/xmode/utilities/utilities-tests.factor b/extra/xmode/utilities/utilities-tests.factor new file mode 100644 index 0000000000..ed8193cdcf --- /dev/null +++ b/extra/xmode/utilities/utilities-tests.factor @@ -0,0 +1,53 @@ +IN: temporary +USING: xmode.utilities tools.test xml xml.data +kernel strings vectors sequences io.files prettyprint assocs ; + +[ 3 "hi" ] [ + { 1 2 3 4 5 6 7 8 } [ H{ { 3 "hi" } } at ] map-find +] unit-test + +[ f f ] [ + { 1 2 3 4 5 6 7 8 } [ H{ { 11 "hi" } } at ] map-find +] unit-test + +TUPLE: company employees type ; + +: V{ } clone f company construct-boa ; + +: add-employee company-employees push ; + + + +\ parse-employee-tag see + +: parse-company-tag + [ + + { { "type" >upper set-company-type } } + init-from-tag dup + ] keep + tag-children [ tag? ] subset + [ parse-employee-tag ] curry* each ; + +[ + T{ company f + V{ + T{ employee f "Joe" "VP Sales" } + T{ employee f "Jane" "CFO" } + } + "PUBLIC" + "This is a great company" + } +] [ + "extra/xmode/utilities/test.xml" + resource-path read-xml parse-company-tag +] unit-test diff --git a/extra/xmode/utilities/utilities.factor b/extra/xmode/utilities/utilities.factor new file mode 100644 index 0000000000..d4096b17e0 --- /dev/null +++ b/extra/xmode/utilities/utilities.factor @@ -0,0 +1,58 @@ +USING: sequences assocs kernel quotations namespaces xml.data +xml.utilities combinators macros parser words ; +IN: xmode.utilities + +: implies >r not r> or ; inline + +: child-tags ( tag -- seq ) tag-children [ tag? ] subset ; + +: map-find ( seq quot -- result elt ) + f -rot + [ nip ] swap [ dup ] 3compose find + >r [ drop f ] unless r> ; inline + +: tag-init-form ( spec -- quot ) + { + { [ dup quotation? ] [ [ object get tag get ] swap compose ] } + { [ dup length 2 = ] [ + first2 [ + >r >r tag get children>string + r> [ execute ] when* object get r> execute + ] 2curry + ] } + { [ dup length 3 = ] [ + first3 [ + >r >r tag get at + r> [ execute ] when* object get r> execute + ] 3curry + ] } + } cond ; + +: with-tag-initializer ( tag obj quot -- ) + [ object set tag set ] swap compose with-scope ; inline + +MACRO: (init-from-tag) ( specs -- ) + [ tag-init-form ] map concat [ ] like + [ with-tag-initializer ] curry ; + +: init-from-tag ( tag tuple specs -- tuple ) + over >r (init-from-tag) r> ; inline + +SYMBOL: tag-handlers +SYMBOL: tag-handler-word + +: + tag-handler-word get + tag-handlers get >alist [ >r dup name-tag r> case ] curry + define-compound ; parsing diff --git a/extra/xmode/xmode.dtd b/extra/xmode/xmode.dtd new file mode 100644 index 0000000000..d96df445fa --- /dev/null +++ b/extra/xmode/xmode.dtd @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9b666cdddb30661ba45517d4b54d667c13a78b95 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 28 Nov 2007 23:38:07 -0500 Subject: [PATCH 134/285] Add meta-data for extra/xmode --- extra/xmode/README.txt | 5 +++++ extra/xmode/authors.txt | 1 + extra/xmode/summary.txt | 1 + 3 files changed, 7 insertions(+) create mode 100644 extra/xmode/README.txt create mode 100644 extra/xmode/authors.txt create mode 100644 extra/xmode/summary.txt diff --git a/extra/xmode/README.txt b/extra/xmode/README.txt new file mode 100644 index 0000000000..7a9d1580d3 --- /dev/null +++ b/extra/xmode/README.txt @@ -0,0 +1,5 @@ +This is a Factor port of jEdit's syntax highlighting engine. + +It implements a relatively basic, rule-driven recursive parser. +The parser is incremental, with one line granularity. This is +still a work in progress. diff --git a/extra/xmode/authors.txt b/extra/xmode/authors.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/extra/xmode/authors.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/extra/xmode/summary.txt b/extra/xmode/summary.txt new file mode 100644 index 0000000000..4482fb8b86 --- /dev/null +++ b/extra/xmode/summary.txt @@ -0,0 +1 @@ +Syntax highlighting engine using jEdit mode files From b51e4f642eb9e2929a093fe5224044bb72540248 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Thu, 29 Nov 2007 17:41:58 +1300 Subject: [PATCH 135/285] Fix broken ebnf actions --- extra/peg/ebnf/ebnf.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/peg/ebnf/ebnf.factor b/extra/peg/ebnf/ebnf.factor index fea31ce94b..e55ee9d852 100644 --- a/extra/peg/ebnf/ebnf.factor +++ b/extra/peg/ebnf/ebnf.factor @@ -83,7 +83,7 @@ M: ebnf-rule (generate-parser) ( ast -- id ) M: ebnf-action (generate-parser) ( ast -- id ) ebnf-action-word search 1quotation - last-parser get swap action generate-parser ; + last-parser get get-parser swap action store-parser ; M: vector (generate-parser) ( ast -- id ) [ generate-parser ] map peek ; From 362f2d34360c03ba2bb4caa056edfa737c5a07bd Mon Sep 17 00:00:00 2001 From: Chris Double Date: Thu, 29 Nov 2007 23:42:46 +1300 Subject: [PATCH 136/285] Fix packrat caching issue --- extra/peg/peg.factor | 18 ++++++++++++++---- extra/peg/pl0/pl0.factor | 6 +++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 8940fc87c6..247d52a19c 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -12,6 +12,10 @@ GENERIC: (parse) ( state parser -- result ) SYMBOL: packrat-cache SYMBOL: ignore +SYMBOL: not-in-cache + +: not-in-cache? ( result -- ? ) + not-in-cache = ; : ( remaining ast -- parse-result ) parse-result construct-boa ; @@ -30,7 +34,9 @@ TUPLE: parser id ; dup slice? [ slice-from ] [ drop 0 ] if ; : get-cached ( input parser -- result ) - [ from ] dip parser-id packrat-cache get at at ; + [ from ] dip parser-id packrat-cache get at at* [ + drop not-in-cache + ] unless ; : put-cached ( result input parser -- ) parser-id dup packrat-cache get at [ @@ -44,9 +50,13 @@ PRIVATE> : parse ( input parser -- result ) packrat-cache get [ - 2dup get-cached [ - [ (parse) dup ] 2keep put-cached - ] unless* + 2dup get-cached dup not-in-cache? [ +! "cache missed: " write over parser-id number>string write " - " write nl ! pick . + drop [ (parse) dup ] 2keep put-cached + ] [ +! "cache hit: " write over parser-id number>string write " - " write nl ! pick . + 2nip + ] if ] [ (parse) ] if ; diff --git a/extra/peg/pl0/pl0.factor b/extra/peg/pl0/pl0.factor index b37009238d..b6b030f56c 100644 --- a/extra/peg/pl0/pl0.factor +++ b/extra/peg/pl0/pl0.factor @@ -1,15 +1,15 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel arrays strings math.parser sequences peg peg.ebnf ; +USING: kernel arrays strings math.parser sequences peg peg.ebnf memoize ; IN: peg.pl0 #! Grammar for PL/0 based on http://en.wikipedia.org/wiki/PL/0 -: ident ( -- parser ) +MEMO: ident ( -- parser ) CHAR: a CHAR: z range CHAR: A CHAR: Z range 2array choice repeat1 [ >string ] action ; -: number ( -- parser ) +MEMO: number ( -- parser ) CHAR: 0 CHAR: 9 range repeat1 [ string>number ] action ; Date: Thu, 29 Nov 2007 23:49:34 +1300 Subject: [PATCH 137/285] Make some parsers uses MEMO: --- extra/peg/peg.factor | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 247d52a19c..39aacd974e 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. USING: kernel sequences strings namespaces math assocs shuffle - vectors arrays combinators.lib ; + vectors arrays combinators.lib memoize ; IN: peg TUPLE: parse-result remaining ast ; @@ -217,13 +217,13 @@ M: delay-parser (parse) ( state parser -- result ) PRIVATE> -: token ( string -- parser ) +MEMO: token ( string -- parser ) token-parser construct-boa init-parser ; : satisfy ( quot -- parser ) satisfy-parser construct-boa init-parser ; -: range ( min max -- parser ) +MEMO: range ( min max -- parser ) range-parser construct-boa init-parser ; : seq ( seq -- parser ) @@ -232,32 +232,32 @@ PRIVATE> : choice ( seq -- parser ) choice-parser construct-boa init-parser ; -: repeat0 ( parser -- parser ) +MEMO: repeat0 ( parser -- parser ) repeat0-parser construct-boa init-parser ; -: repeat1 ( parser -- parser ) +MEMO: repeat1 ( parser -- parser ) repeat1-parser construct-boa init-parser ; -: optional ( parser -- parser ) +MEMO: optional ( parser -- parser ) optional-parser construct-boa init-parser ; -: ensure ( parser -- parser ) +MEMO: ensure ( parser -- parser ) ensure-parser construct-boa init-parser ; -: ensure-not ( parser -- parser ) +MEMO: ensure-not ( parser -- parser ) ensure-not-parser construct-boa init-parser ; : action ( parser quot -- parser ) action-parser construct-boa init-parser ; -: sp ( parser -- parser ) +MEMO: sp ( parser -- parser ) sp-parser construct-boa init-parser ; -: hide ( parser -- parser ) +MEMO: hide ( parser -- parser ) [ drop ignore ] action ; -: delay ( parser -- parser ) +MEMO: delay ( parser -- parser ) delay-parser construct-boa init-parser ; -: list-of ( items separator -- parser ) +MEMO: list-of ( items separator -- parser ) hide over 2array seq repeat0 [ concat ] action 2array seq [ unclip 1vector swap first append ] action ; From 38beaac7209db3ca80754ad73eed71cbc5d3ddd0 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Fri, 30 Nov 2007 00:01:03 +1300 Subject: [PATCH 138/285] Infinite left recursion now causes a failed parser rather than a call stack error --- extra/peg/peg.factor | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 39aacd974e..7fa1fb90e5 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -52,7 +52,11 @@ PRIVATE> packrat-cache get [ 2dup get-cached dup not-in-cache? [ ! "cache missed: " write over parser-id number>string write " - " write nl ! pick . - drop [ (parse) dup ] 2keep put-cached + drop + #! Protect against left recursion blowing the callstack + #! by storing a failed parse in the cache. + [ f ] dipd [ put-cached ] 2keep + [ (parse) dup ] 2keep put-cached ] [ ! "cache hit: " write over parser-id number>string write " - " write nl ! pick . 2nip From b04c9201d0905bc3f5095924ea9531db576c14ed Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Thu, 29 Nov 2007 12:06:52 -0500 Subject: [PATCH 139/285] Half-assed constant folding in extra/inverse --- extra/inverse/inverse.factor | 56 +++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/extra/inverse/inverse.factor b/extra/inverse/inverse.factor index bc9a3f9f60..583ae610c0 100644 --- a/extra/inverse/inverse.factor +++ b/extra/inverse/inverse.factor @@ -1,7 +1,7 @@ USING: kernel words inspector slots quotations sequences assocs math arrays inference effects shuffle continuations debugger tuples namespaces vectors bit-arrays byte-arrays strings sbufs -math.functions macros ; +math.functions macros combinators.private combinators ; IN: inverse TUPLE: fail ; @@ -18,7 +18,7 @@ M: fail summary drop "Unification failed" ; : define-inverse ( word quot -- ) "inverse" set-word-prop ; : define-math-inverse ( word quot1 quot2 -- ) - 2array "math-inverse" set-word-prop ; + pick 1quotation 3array "math-inverse" set-word-prop ; : define-pop-inverse ( word n quot -- ) >r dupd "pop-length" set-word-prop r> @@ -40,10 +40,7 @@ M: no-inverse summary effect-in length 0 = and ; : assure-constant ( constant -- quot ) - dup word? [ - dup constant-word? - [ "Badly formed math inverse" throw ] unless - ] when 1quotation ; + dup word? [ "Badly formed math inverse" throw ] when 1quotation ; : swap-inverse ( math-inverse revquot -- revquot* quot ) next assure-constant rot second [ swap ] swap 3compose ; @@ -54,27 +51,52 @@ M: no-inverse summary : ?word-prop ( word/object name -- value/f ) over word? [ word-prop ] [ 2drop f ] if ; -GENERIC: inverse ( revquot word -- revquot* quot ) - -DEFER: [undo] - -M: word inverse - dup "inverse" word-prop [ ] - [ dup primitive? [ no-inverse ] [ word-def [undo] ] if ] ?if ; - : undo-literal ( object -- quot ) [ =/fail ] curry ; +PREDICATE: word normal-inverse "inverse" word-prop ; +PREDICATE: word math-inverse "math-inverse" word-prop ; +PREDICATE: word pop-inverse "pop-length" word-prop ; +UNION: explicit-inverse normal-inverse math-inverse pop-inverse ; + +: inline-word ( word -- ) + { + { [ dup word? not over symbol? or ] [ , ] } + { [ dup explicit-inverse? ] [ , ] } + { [ dup compound? over { if dispatch } member? not and ] + [ word-def [ inline-word ] each ] } + { [ drop t ] [ "Quotation is not invertible" throw ] } + } cond ; + +: math-exp? ( n n word -- ? ) + { + - * / ^ } member? -rot [ number? ] 2apply and and ; + +: (fold-constants) ( quot -- ) + dup length 3 < [ % ] [ + dup first3 3dup math-exp? + [ execute , 3 ] [ 2drop , 1 ] if + tail-slice (fold-constants) + ] if ; + +: fold-constants ( quot -- folded ) + [ (fold-constants) ] [ ] make ; + +: do-inlining ( quot -- inlined-quot ) + [ [ inline-word ] each ] [ ] make fold-constants ; + +GENERIC: inverse ( revquot word -- revquot* quot ) + M: object inverse undo-literal ; M: symbol inverse undo-literal ; -PREDICATE: word math-inverse "math-inverse" word-prop ; +M: normal-inverse inverse + "inverse" word-prop ; + M: math-inverse inverse "math-inverse" word-prop swap next dup \ swap = [ drop swap-inverse ] [ pull-inverse ] if ; -PREDICATE: word pop-inverse "pop-length" word-prop ; M: pop-inverse inverse [ "pop-length" word-prop cut-slice swap ] keep "pop-inverse" word-prop compose call ; @@ -84,7 +106,7 @@ M: pop-inverse inverse [ unclip-slice inverse % (undo) ] if ; : [undo] ( quot -- undo ) - reverse [ (undo) ] [ ] make ; + do-inlining reverse [ (undo) ] [ ] make ; MACRO: undo ( quot -- ) [undo] ; From d3350bcfdf71b0c1856f30a54a78d9a504a21e9b Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 29 Nov 2007 11:18:46 -0600 Subject: [PATCH 140/285] Rename extra/browser to extra/http/parser --- .../parser}/analyzer/analyzer.factor | 14 +++++++++++--- extra/{browser => http}/parser/parser-tests.factor | 0 extra/{browser => http}/parser/parser.factor | 6 +++--- .../parser}/printer/printer.factor | 4 ++-- .../parser}/utils/utils-tests.factor | 0 extra/{browser => http/parser}/utils/utils.factor | 2 +- 6 files changed, 17 insertions(+), 9 deletions(-) rename extra/{browser => http/parser}/analyzer/analyzer.factor (88%) mode change 100644 => 100755 rename extra/{browser => http}/parser/parser-tests.factor (100%) rename extra/{browser => http}/parser/parser.factor (96%) rename extra/{browser => http/parser}/printer/printer.factor (97%) rename extra/{browser => http/parser}/utils/utils-tests.factor (100%) rename extra/{browser => http/parser}/utils/utils.factor (97%) diff --git a/extra/browser/analyzer/analyzer.factor b/extra/http/parser/analyzer/analyzer.factor old mode 100644 new mode 100755 similarity index 88% rename from extra/browser/analyzer/analyzer.factor rename to extra/http/parser/analyzer/analyzer.factor index 2384252e5a..8619377886 --- a/extra/browser/analyzer/analyzer.factor +++ b/extra/http/parser/analyzer/analyzer.factor @@ -1,15 +1,23 @@ USING: assocs browser.parser kernel math sequences strings ; -IN: browser.analyzer +IN: http.parser.analyzer -: remove-blank-text ( vector -- vector ) +: remove-blank-text ( vector -- vector' ) [ dup tag-name text = [ - tag-text [ blank? not ] all? + tag-text [ blank? ] all? not ] [ drop t ] if ] subset ; +: trim-text ( vector -- vector' ) + [ + dup tag-name text = [ + [ tag-text [ blank? ] trim ] keep + [ set-tag-text ] keep + ] when + ] map ; + : find-by-id ( id vector -- vector ) [ tag-attributes "id" swap at = ] curry* subset ; diff --git a/extra/browser/parser/parser-tests.factor b/extra/http/parser/parser-tests.factor similarity index 100% rename from extra/browser/parser/parser-tests.factor rename to extra/http/parser/parser-tests.factor diff --git a/extra/browser/parser/parser.factor b/extra/http/parser/parser.factor similarity index 96% rename from extra/browser/parser/parser.factor rename to extra/http/parser/parser.factor index 9ef6113e63..441094ab87 100644 --- a/extra/browser/parser/parser.factor +++ b/extra/http/parser/parser.factor @@ -1,8 +1,8 @@ -USING: arrays browser.utils hashtables io kernel namespaces -prettyprint quotations +USING: arrays http.parser.utils hashtables io kernel +namespaces prettyprint quotations sequences splitting state-parser strings ; USE: tools.interpreter -IN: browser.parser +IN: http.parser TUPLE: tag name attributes text matched? closing? ; diff --git a/extra/browser/printer/printer.factor b/extra/http/parser/printer/printer.factor similarity index 97% rename from extra/browser/printer/printer.factor rename to extra/http/parser/printer/printer.factor index a68d588afb..3df1a76991 100644 --- a/extra/browser/printer/printer.factor +++ b/extra/http/parser/printer/printer.factor @@ -1,9 +1,9 @@ -USING: assocs browser.parser browser.utils combinators +USING: assocs http.parser browser.utils combinators continuations hashtables hashtables.private io kernel math namespaces prettyprint quotations sequences splitting state-parser strings ; -IN: browser.printer +IN: http.parser.printer SYMBOL: no-section SYMBOL: html diff --git a/extra/browser/utils/utils-tests.factor b/extra/http/parser/utils/utils-tests.factor similarity index 100% rename from extra/browser/utils/utils-tests.factor rename to extra/http/parser/utils/utils-tests.factor diff --git a/extra/browser/utils/utils.factor b/extra/http/parser/utils/utils.factor similarity index 97% rename from extra/browser/utils/utils.factor rename to extra/http/parser/utils/utils.factor index 827c60d11d..d9fa5cf58a 100644 --- a/extra/browser/utils/utils.factor +++ b/extra/http/parser/utils/utils.factor @@ -3,7 +3,7 @@ hashtables.private io kernel math namespaces prettyprint quotations sequences splitting state-parser strings ; USING: browser.parser ; -IN: browser.utils +IN: http.parser.utils : string-parse-end? get-next not ; From 33fecfef7d547ff7819325fab00a1e2d808dd69e Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Thu, 29 Nov 2007 12:19:57 -0500 Subject: [PATCH 141/285] Fixed radians and steradians to be unitless --- extra/units/si/si.factor | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/extra/units/si/si.factor b/extra/units/si/si.factor index c07ffb8423..9029d6bd35 100644 --- a/extra/units/si/si.factor +++ b/extra/units/si/si.factor @@ -38,8 +38,11 @@ IN: units.si : cd/m^2 { cd } { m m } ; : kg/kg { kg } { kg } ; -: radians ( n -- radian ) { m } { m } ; -: sr ( n -- steradian ) { m m } { m m } ; +! Radians are really m/m, and steradians are m^2/m^2 +! but they need to be in reduced form here. +: radians ( n -- radian ) scalar ; +: sr ( n -- steradian ) scalar ; + : Hz ( n -- hertz ) { } { s } ; : N ( n -- newton ) { kg m } { s s } ; : Pa ( n -- pascal ) { kg } { m s s } ; From 566326a01ed7671246f06ea199105249b2b04041 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 29 Nov 2007 11:36:30 -0600 Subject: [PATCH 142/285] Let http.parser load --- extra/http/parser/analyzer/analyzer.factor | 2 +- extra/http/parser/parser.factor | 1 - extra/http/parser/utils/utils.factor | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/extra/http/parser/analyzer/analyzer.factor b/extra/http/parser/analyzer/analyzer.factor index 8619377886..ffae26eb8a 100755 --- a/extra/http/parser/analyzer/analyzer.factor +++ b/extra/http/parser/analyzer/analyzer.factor @@ -1,4 +1,4 @@ -USING: assocs browser.parser kernel math sequences strings ; +USING: assocs http.parser kernel math sequences strings ; IN: http.parser.analyzer : remove-blank-text ( vector -- vector' ) diff --git a/extra/http/parser/parser.factor b/extra/http/parser/parser.factor index 441094ab87..77a0580132 100644 --- a/extra/http/parser/parser.factor +++ b/extra/http/parser/parser.factor @@ -1,7 +1,6 @@ USING: arrays http.parser.utils hashtables io kernel namespaces prettyprint quotations sequences splitting state-parser strings ; -USE: tools.interpreter IN: http.parser TUPLE: tag name attributes text matched? closing? ; diff --git a/extra/http/parser/utils/utils.factor b/extra/http/parser/utils/utils.factor index d9fa5cf58a..c8d10a0a2b 100644 --- a/extra/http/parser/utils/utils.factor +++ b/extra/http/parser/utils/utils.factor @@ -2,7 +2,7 @@ USING: assocs circular combinators continuations hashtables hashtables.private io kernel math namespaces prettyprint quotations sequences splitting state-parser strings ; -USING: browser.parser ; +USING: http.parser ; IN: http.parser.utils : string-parse-end? From 22eb4def9d1fe8df9dc24aeaf28f464465707a41 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 30 Nov 2007 19:20:02 -0600 Subject: [PATCH 143/285] Redo escape characters Add octal, hex, control chars, \t\n\r\f\a\e\w\W, posix character classes --- extra/regexp/regexp-tests.factor | 14 ++- extra/regexp/regexp.factor | 168 ++++++++++++++++++++++++------- 2 files changed, 143 insertions(+), 39 deletions(-) diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor index 5ebd6dc4d3..c5f8699123 100644 --- a/extra/regexp/regexp-tests.factor +++ b/extra/regexp/regexp-tests.factor @@ -29,7 +29,7 @@ IN: regexp-tests [ f ] [ "" "." matches? ] unit-test [ t ] [ "a" "." matches? ] unit-test [ t ] [ "." "." matches? ] unit-test -[ f ] [ "\n" "." matches? ] unit-test +! [ f ] [ "\n" "." matches? ] unit-test [ f ] [ "" ".+" matches? ] unit-test [ t ] [ "a" ".+" matches? ] unit-test @@ -95,7 +95,7 @@ IN: regexp-tests [ t ] [ "]" "[]]" matches? ] unit-test [ f ] [ "]" "[^]]" matches? ] unit-test -[ "^" "[^]" matches? ] unit-test-fails +! [ "^" "[^]" matches? ] unit-test-fails [ t ] [ "^" "[]^]" matches? ] unit-test [ t ] [ "]" "[]^]" matches? ] unit-test @@ -139,5 +139,13 @@ IN: regexp-tests [ t ] [ "a" "[a-z]{1,2}|[A-Z]{3,3}" matches? ] unit-test [ t ] [ "1000" "\\d{4,6}" matches? ] unit-test -! [ t ] [ "1000" "[0-9]{4,6}" matches? ] unit-test +[ t ] [ "1000" "[0-9]{4,6}" matches? ] unit-test + +[ t ] [ "abc" "\\p{Lower}{3}" matches? ] unit-test +[ f ] [ "ABC" "\\p{Lower}{3}" matches? ] unit-test +[ t ] [ "ABC" "\\p{Upper}{3}" matches? ] unit-test +[ f ] [ "abc" "\\p{Upper}{3}" matches? ] unit-test + +[ f ] [ "abc" "[\\p{Upper}]{3}" matches? ] unit-test +[ t ] [ "ABC" "[\\p{Upper}]{3}" matches? ] unit-test diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index 8fdc1bed8b..b5e186b58f 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -4,34 +4,123 @@ promises quotations sequences sequences.lib strings ; USING: continuations io prettyprint ; IN: regexp -: 'any-char' - "." token [ drop any-char-parser ] <@ ; +: 1satisfy ( n -- parser ) + [ = ] curry satisfy ; -: escaped-char +: satisfy-token ( string quot -- parser ) + >r token r> [ satisfy ] curry [ drop ] swap compose <@ ; + +: octal-digit? ( n -- ? ) CHAR: 0 CHAR: 7 between? ; inline + +: decimal-digit? ( n -- ? ) CHAR: 0 CHAR: 9 between? ; inline + +: hex-digit? ( n -- ? ) + dup decimal-digit? + swap CHAR: a CHAR: f between? or ; + +: octal? ( str -- ? ) [ octal-digit? ] all? ; + +: decimal? ( str -- ? ) [ decimal-digit? ] all? ; + +: hex? ( str -- ? ) [ hex-digit? ] all? ; + +: control-char? ( n -- ? ) + dup 0 HEX: 1f between? + swap HEX: 7f = or ; + +: punct? ( n -- ? ) + "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" member? ; + +: c-identifier-char? ( ch -- ? ) + dup alpha? swap CHAR: _ = or ; inline + +: c-identifier? ( str -- ? ) + [ c-identifier-char? ] all? ; + +: java-blank? ( n -- ? ) { - { CHAR: d [ [ digit? ] ] } - { CHAR: D [ [ digit? not ] ] } - { CHAR: s [ [ blank? ] ] } - { CHAR: S [ [ blank? not ] ] } - { CHAR: \\ [ [ CHAR: \\ = ] ] } - [ "bad \\, use \\\\ to match a literal \\" throw ] - } case ; + CHAR: \t CHAR: \n CHAR: \r + HEX: c HEX: 7 HEX: 1b + } member? ; -: 'escaped-char' - "\\" token any-char-parser &> [ escaped-char ] <@ ; +: java-printable? ( n -- ? ) + dup alpha? swap punct? or ; -! Must escape to use as literals -! : meta-chars "[\\^$.|?*+()" ; -: 'ordinary-char' - [ "\\^*+?|(){}[" member? not ] satisfy ; +: 'ordinary-char' ( -- parser ) + [ "\\^*+?|(){}[" member? not ] satisfy [ 1satisfy ] <@ ; -: 'char' 'escaped-char' 'ordinary-char' <|> ; +: 'octal-digit' ( -- parser ) [ octal-digit? ] satisfy ; + +: 'octal' ( -- parser ) + "\\0" token + 'octal-digit' + 'octal-digit' 'octal-digit' <&> <|> + [ CHAR: 0 CHAR: 3 between? ] satisfy + 'octal-digit' <&> 'octal-digit' <:&> <|> + &> just [ oct> 1satisfy ] <@ ; + +: 'hex-digit' ( -- parser ) [ hex-digit? ] satisfy ; + +: 'hex' ( -- parser ) + "\\x" token 'hex-digit' 'hex-digit' <&> &> + "\\u" token 'hex-digit' 'hex-digit' <&> + 'hex-digit' <:&> 'hex-digit' <:&> &> <|> [ hex> 1satisfy ] <@ ; + +: 'control-character' ( -- parser ) + "\\c" token [ LETTER? ] satisfy &> [ 1satisfy ] <@ ; + +: 'simple-escape-char' ( -- parser ) + { + { "\\\\" [ CHAR: \\ = ] } + { "\\t" [ CHAR: \t = ] } + { "\\n" [ CHAR: \n = ] } + { "\\r" [ CHAR: \r = ] } + { "\\f" [ HEX: c = ] } + { "\\a" [ HEX: 7 = ] } + { "\\e" [ HEX: 1b = ] } + } [ first2 satisfy-token ] [ <|> ] map-reduce ; + +: 'predefined-char-class' ( -- parser ) + { + { "." [ drop any-char-parser ] } + { "\\d" [ digit? ] } + { "\\D" [ digit? not ] } + { "\\s" [ java-blank? ] } + { "\\S" [ java-blank? not ] } + { "\\w" [ c-identifier? ] } + { "\\W" [ c-identifier? not ] } + } [ first2 satisfy-token ] [ <|> ] map-reduce ; + +: 'posix-character-class' ( -- parser ) + { + { "\\p{Lower}" [ letter? ] } + { "\\p{Upper}" [ LETTER? ] } + { "\\p{ASCII}" [ 0 HEX: 7f between? ] } + { "\\p{Alpha}" [ Letter? ] } + { "\\p{Digit}" [ digit? ] } + { "\\p{Alnum}" [ alpha? ] } + { "\\p{Punct}" [ punct? ] } + { "\\p{Graph}" [ java-printable? ] } + { "\\p{Print}" [ java-printable? ] } + { "\\p{Blank}" [ " \t" member? ] } + { "\\p{Cntrl}" [ control-char? ] } + { "\\p{XDigit}" [ hex-digit? ] } + { "\\p{Space}" [ java-blank? ] } + } [ first2 satisfy-token ] [ <|> ] map-reduce ; + +: 'escape-seq' ( -- parser ) + 'simple-escape-char' + 'predefined-char-class' <|> + 'octal' <|> + 'hex' <|> + 'control-character' <|> + 'posix-character-class' <|> ; + +: 'char' 'escape-seq' 'ordinary-char' <|> ; : 'string' - 'char' <+> [ - [ dup quotation? [ satisfy ] [ 1token ] if ] [ <&> ] map-reduce - ] <@ ; + 'char' <+> [ [ <&> ] reduce* ] <@ ; : exactly-n ( parser n -- parser' ) swap and-parser construct-boa ; @@ -72,28 +161,30 @@ C: group-result [ dup ] swap compose [ drop t ] 2array ] map { [ t ] [ drop f ] } add [ cond ] curry ; -: 'range' +: 'range' ( -- parser ) any-char-parser "-" token <& any-char-parser <&> - [ first2 [ between? ] 2curry ] <@ ; + [ first2 [ between? ] 2curry satisfy ] <@ ; -: 'character-class-contents' - 'escaped-char' +: 'character-class-contents' ( -- parser ) + 'escape-seq' 'range' <|> - [ "\\]" member? not ] satisfy <|> ; + [ "\\]" member? not ] satisfy [ 1satisfy ] <@ <|> ; -: 'character-class' +: make-character-class ( seq ? -- ) + >r [ parser>predicate ] map predicates>cond r> + [ [ not ] compose ] when satisfy ; + +: 'character-class' ( -- parser ) "[" token - "^" token 'character-class-contents' <+> <&:> - [ predicates>cond [ not ] compose satisfy ] <@ - "]" token [ first ] <@ 'character-class-contents' <*> <&:> - [ predicates>cond satisfy ] <@ <|> - 'character-class-contents' <+> [ predicates>cond satisfy ] <@ <|> + "^" token 'character-class-contents' <+> &> [ t make-character-class ] <@ + "]" token [ first 1satisfy ] <@ 'character-class-contents' <*> <&:> + [ f make-character-class ] <@ <|> + 'character-class-contents' <+> [ f make-character-class ] <@ <|> &> "]" token <& ; -: 'term' - 'any-char' - 'string' <|> +: 'term' ( -- parser ) + 'string' 'grouping' <|> 'character-class' <|> <+> [ @@ -101,7 +192,7 @@ C: group-result [ first ] [ and-parser construct-boa ] if ] <@ ; -: 'interval' +: 'interval' ( -- parser ) 'term' "{" token <& 'integer' <&> "}" token <& [ first2 exactly-n ] <@ 'term' "{" token <& 'integer' <&> "," token <& "}" token <& [ first2 at-least-n ] <@ <|> @@ -110,7 +201,7 @@ C: group-result 'term' "{" token <& 'integer' <&> "," token <& 'integer' <:&> "}" token <& [ first3 from-m-to-n ] <@ <|> ; -: 'repetition' +: 'repetition' ( -- parser ) 'term' [ "*+?" member? ] satisfy <&> [ first2 { @@ -148,3 +239,8 @@ M: object >regexp ; : R" CHAR: " parse-regexp ; parsing : R' CHAR: ' parse-regexp ; parsing : R` CHAR: ` parse-regexp ; parsing + +! \Q \E +! Must escape to use as literals +! : meta-chars "[\\^$.|?*+()" ; + From cc3e56c1228ebac0e9ea1516bb5b97edb10be6be Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 30 Nov 2007 19:20:38 -0600 Subject: [PATCH 144/285] Add generic to get a predicate out of a parser-combinator --- .../parser-combinators-tests.factor | 4 +++ .../parser-combinators.factor | 27 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/extra/parser-combinators/parser-combinators-tests.factor b/extra/parser-combinators/parser-combinators-tests.factor index 59ef383c87..546eb84c98 100644 --- a/extra/parser-combinators/parser-combinators-tests.factor +++ b/extra/parser-combinators/parser-combinators-tests.factor @@ -151,3 +151,7 @@ IN: scratchpad ] unit-test +[ "a" "a" token parse-1 ] unit-test-fails +[ t ] [ "b" "a" token parse-1 >boolean ] unit-test +[ t ] [ "b" "ab" token parse-1 >boolean ] unit-test + diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index 04032db19f..7256ad18dd 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2004 Chris Double. ! See http://factorcode.org/license.txt for BSD license. USING: lazy-lists promises kernel sequences strings math -arrays splitting ; +arrays splitting quotations combinators ; IN: parser-combinators ! Parser combinator protocol @@ -21,6 +21,15 @@ TUPLE: parse-result parsed unparsed ; C: parse-result +: parse-result-parsed-slice ( parse-result -- slice ) + dup parse-result-parsed empty? [ + parse-result-unparsed 0 0 rot + ] [ + dup parse-result-unparsed + dup slice-from [ rot parse-result-parsed length - ] keep + rot slice-seq + ] if ; + TUPLE: token-parser string ; C: token token-parser ( string -- parser ) @@ -280,3 +289,19 @@ LAZY: <(+)> ( parser -- parser ) LAZY: surrounded-by ( parser start end -- parser' ) [ token ] 2apply swapd pack ; + +: predicates>cond ( seq -- quot ) + #! Takes an array of quotation predicates/objects and makes a cond + #! Makes a predicate of each obj like so: [ dup obj = ] + #! Leaves quotations alone + #! The cond returns a boolean, t if one of the predicates matches + [ + dup callable? [ [ = ] curry ] unless + [ dup ] swap compose [ drop t ] 2array + ] map { [ t ] [ drop f ] } add [ cond ] curry ; + +GENERIC: parser>predicate ( obj -- quot ) + +M: satisfy-parser parser>predicate ( obj -- quot ) + satisfy-parser-quot ; + From 8fadc570fcf720927ba2ee78acec9d1a143748b9 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 30 Nov 2007 19:34:17 -0600 Subject: [PATCH 145/285] Add \Q...\E (escape all characters between \Q and \E) --- extra/regexp/regexp-tests.factor | 5 +++++ extra/regexp/regexp.factor | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor index c5f8699123..94f9ad172f 100644 --- a/extra/regexp/regexp-tests.factor +++ b/extra/regexp/regexp-tests.factor @@ -149,3 +149,8 @@ IN: regexp-tests [ f ] [ "abc" "[\\p{Upper}]{3}" matches? ] unit-test [ t ] [ "ABC" "[\\p{Upper}]{3}" matches? ] unit-test +[ t ] [ "" "\\Q\\E" matches? ] unit-test +[ f ] [ "a" "\\Q\\E" matches? ] unit-test +[ t ] [ "|*+" "\\Q|*+\\E" matches? ] unit-test +[ f ] [ "abc" "\\Q|*+\\E" matches? ] unit-test + diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index b5e186b58f..ba1bd6c32d 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -109,11 +109,17 @@ IN: regexp { "\\p{Space}" [ java-blank? ] } } [ first2 satisfy-token ] [ <|> ] map-reduce ; +: 'escaped-seq' ( -- parser ) + "\\Q" token + any-char-parser <*> [ token ] <@ &> + "\\E" token <& ; + : 'escape-seq' ( -- parser ) 'simple-escape-char' 'predefined-char-class' <|> 'octal' <|> 'hex' <|> + 'escaped-seq' <|> 'control-character' <|> 'posix-character-class' <|> ; @@ -239,8 +245,3 @@ M: object >regexp ; : R" CHAR: " parse-regexp ; parsing : R' CHAR: ' parse-regexp ; parsing : R` CHAR: ` parse-regexp ; parsing - -! \Q \E -! Must escape to use as literals -! : meta-chars "[\\^$.|?*+()" ; - From db3fbb52b2b5696ca824b690b04ccfcf1bf5c88a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 30 Nov 2007 20:01:59 -0600 Subject: [PATCH 146/285] Add map-until and a unit test for it --- extra/sequences/lib/lib-tests.factor | 2 ++ extra/sequences/lib/lib.factor | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/extra/sequences/lib/lib-tests.factor b/extra/sequences/lib/lib-tests.factor index c170a0d20a..e1257748b3 100644 --- a/extra/sequences/lib/lib-tests.factor +++ b/extra/sequences/lib/lib-tests.factor @@ -39,3 +39,5 @@ math.functions tools.test ; [ 2 ] [ V{ 10 20 30 } [ delete-random drop ] keep length ] unit-test [ V{ } [ delete-random drop ] keep length ] unit-test-fails + +[ { 1 9 25 } ] [ { 1 3 5 6 } [ sq ] [ even? ] map-until ] unit-test diff --git a/extra/sequences/lib/lib.factor b/extra/sequences/lib/lib.factor index 33cfe80fcc..0de90b74d6 100644 --- a/extra/sequences/lib/lib.factor +++ b/extra/sequences/lib/lib.factor @@ -62,3 +62,11 @@ IN: sequences.lib : delete-random ( seq -- value ) [ length random ] keep [ nth ] 2keep delete-nth ; + +: (map-until) ( quot pred -- ) + [ dup ] swap 3compose + [ [ drop t ] [ , f ] if ] compose [ find 2drop ] curry ; + +: map-until ( seq quot pred -- ) + #! Example: { 1 3 5 6 } [ sq ] [ even? ] map-until . -> { 1 9 25 } + (map-until) { } make ; From 159dd697e4726298e17058a70ac46f9608335e5b Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 30 Nov 2007 20:23:27 -0600 Subject: [PATCH 147/285] Fix stack effects Add take-while --- extra/sequences/lib/lib-tests.factor | 1 + extra/sequences/lib/lib.factor | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/extra/sequences/lib/lib-tests.factor b/extra/sequences/lib/lib-tests.factor index e1257748b3..82e2b911c3 100644 --- a/extra/sequences/lib/lib-tests.factor +++ b/extra/sequences/lib/lib-tests.factor @@ -41,3 +41,4 @@ math.functions tools.test ; [ V{ } [ delete-random drop ] keep length ] unit-test-fails [ { 1 9 25 } ] [ { 1 3 5 6 } [ sq ] [ even? ] map-until ] unit-test +[ { 2 4 } ] [ { 2 4 1 3 } [ even? ] take-while ] unit-test diff --git a/extra/sequences/lib/lib.factor b/extra/sequences/lib/lib.factor index 0de90b74d6..e090feffea 100644 --- a/extra/sequences/lib/lib.factor +++ b/extra/sequences/lib/lib.factor @@ -63,10 +63,14 @@ IN: sequences.lib : delete-random ( seq -- value ) [ length random ] keep [ nth ] 2keep delete-nth ; -: (map-until) ( quot pred -- ) +: (map-until) ( quot pred -- quot ) [ dup ] swap 3compose [ [ drop t ] [ , f ] if ] compose [ find 2drop ] curry ; -: map-until ( seq quot pred -- ) - #! Example: { 1 3 5 6 } [ sq ] [ even? ] map-until . -> { 1 9 25 } +: map-until ( seq quot pred -- newseq ) (map-until) { } make ; + +: take-while ( seq quot -- newseq ) + [ not ] compose + [ find drop [ head-slice ] when* ] curry + [ dup ] swap compose keep like ; From ca0df2cb46a52021b47307f01cadf23d29d32136 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 2 Dec 2007 05:18:53 -0500 Subject: [PATCH 148/285] Case insensitive globs for jEdit compatibility --- extra/globs/globs.factor | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) mode change 100644 => 100755 extra/globs/globs.factor diff --git a/extra/globs/globs.factor b/extra/globs/globs.factor old mode 100644 new mode 100755 index bcc6b572fc..901191b51e --- a/extra/globs/globs.factor +++ b/extra/globs/globs.factor @@ -1,22 +1,18 @@ ! Copyright (C) 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: parser-combinators regexp lazy-lists sequences kernel -promises ; +promises strings ; IN: globs [ token ] <@ ; +: 'string' 'char' <+> [ >lower token ] <@ ; -: 'escaped-char' - "\\" token any-char-parser &> [ 1token ] <@ ; +: 'escaped-char' "\\" token any-char-parser &> [ 1token ] <@ ; -: 'escaped-string' - 'string' 'escaped-char' <|> ; +: 'escaped-string' 'string' 'escaped-char' <|> ; DEFER: 'term' @@ -39,4 +35,4 @@ PRIVATE> : 'glob' just parse-1 just ; : glob-matches? ( input glob -- ? ) - parse nil? not ; + >r >lower r> parse nil? not ; From 9a0d318b916a113581760a73a163ad87e5d8801b Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 2 Dec 2007 05:25:18 -0500 Subject: [PATCH 149/285] Updating extra/xmode --- extra/xmode/README.txt | 44 ++++++++- extra/xmode/loader/loader.factor | 5 +- extra/xmode/marker/marker-tests.factor | 43 +++++++++ extra/xmode/marker/marker.factor | 123 ++++++++++++++++--------- extra/xmode/marker/state/state.factor | 2 + extra/xmode/rules/rules.factor | 17 ---- 6 files changed, 165 insertions(+), 69 deletions(-) mode change 100644 => 100755 extra/xmode/README.txt mode change 100644 => 100755 extra/xmode/loader/loader.factor mode change 100644 => 100755 extra/xmode/marker/marker-tests.factor mode change 100644 => 100755 extra/xmode/marker/marker.factor mode change 100644 => 100755 extra/xmode/marker/state/state.factor mode change 100644 => 100755 extra/xmode/rules/rules.factor diff --git a/extra/xmode/README.txt b/extra/xmode/README.txt old mode 100644 new mode 100755 index 7a9d1580d3..bf73042030 --- a/extra/xmode/README.txt +++ b/extra/xmode/README.txt @@ -1,5 +1,41 @@ -This is a Factor port of jEdit's syntax highlighting engine. +This is a Factor port of the jEdit 4.3 syntax highlighting engine +(http://www.jedit.org). -It implements a relatively basic, rule-driven recursive parser. -The parser is incremental, with one line granularity. This is -still a work in progress. +jEdit 1.2, released in late 1998, was the first release to support +syntax highlighting. It featured a small number of hand-coded +"token markers" -- simple incremental parers -- all based on the +original JavaTokenMarker contributed by Tal Davidson. + +Around the time of jEdit 1.5 in 1999, Mike Dillon began developing a +jEdit plugin named "XMode". This plugin implemented a generic, +rule-driven token marker which read mode descriptions from XML files. +XMode eventually matured to the point where it could replace the +formerly hand-coded token markers. + +With the release of jEdit 2.4, I merged XMode into the core and +eliminated the old hand-coded token markers. + +XMode suffers from a somewhat archaic design, and was written at a time +when Java VMs with JIT compilers were relatively uncommon, object +allocation was expensive, and heap space tight. As a result the parser +design is less general than it could be. + +Furthermore, the parser has a few bugs which some mode files have come +to depend on: + +- If a RULES tag does not define any keywords or rules, then its + NO_WORD_SEP attribute is ignored. + + The Factor implementation duplicates this behavior. + +- if a RULES tag does not have a NO_WORD_SEP attribute, then + it inherits the value of the NO_WORD_SEP attribute from the previous + RULES tag. + + The Factor implementation does not duplicate this behavior. + +This is still a work in progress. If you find any behavioral differences +between the Factor implementation and the original jEdit code, please +report them as bugs. Also, if you wish to contribute a new or improved +mode file, please contact the jEdit project. Updated mode files in jEdit +will be periodically imported into the Factor source tree. diff --git a/extra/xmode/loader/loader.factor b/extra/xmode/loader/loader.factor old mode 100644 new mode 100755 index a287efdd4b..c6b5cad9d1 --- a/extra/xmode/loader/loader.factor +++ b/extra/xmode/loader/loader.factor @@ -35,8 +35,7 @@ IN: xmode.loader dup children>string swap position-attrs ; : parse-regexp-matcher ( tag -- matcher ) - ! XXX - dup children>string swap position-attrs ; + dup children>string swap position-attrs ; ! SPAN's children { "SET" string>rule-set-name set-rule-set-name } { "IGNORE_CASE" string>boolean set-rule-set-ignore-case? } { "HIGHLIGHT_DIGITS" string>boolean set-rule-set-highlight-digits? } - { "DIGIT_RE" f set-rule-set-digit-re } ! XXX + { "DIGIT_RE" set-rule-set-digit-re } ! XXX { "ESCAPE" f add-escape-rule } { "DEFAULT" string>token set-rule-set-default } { "NO_WORD_SEP" f set-rule-set-no-word-sep } diff --git a/extra/xmode/marker/marker-tests.factor b/extra/xmode/marker/marker-tests.factor old mode 100644 new mode 100755 index 6c66f958a6..cb7f2960a4 --- a/extra/xmode/marker/marker-tests.factor +++ b/extra/xmode/marker/marker-tests.factor @@ -2,6 +2,40 @@ USING: xmode.tokens xmode.catalog xmode.marker tools.test kernel ; IN: temporary +[ + { + T{ token f "int" KEYWORD3 } + T{ token f " " f } + T{ token f "x" f } + } +] [ f "int x" "c" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "\"" LITERAL1 } + T{ token f "hello\\\"" LITERAL1 } + T{ token f " " LITERAL1 } + T{ token f "world" LITERAL1 } + T{ token f "\"" LITERAL1 } + } +] [ f "\"hello\\\" world\"" "c" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "\"" LITERAL1 } + T{ token f "hello\\\ world" LITERAL1 } + T{ token f "\"" LITERAL1 } + } +] [ f "\"hello\\\ world\"" "c" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "int" KEYWORD3 } + T{ token f " " f } + T{ token f "x" f } + } +] [ f "int x" "java" load-mode tokenize-line nip ] unit-test + [ { T{ token f "//" COMMENT2 } @@ -66,3 +100,12 @@ IN: temporary ] [ f "" "xml" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "$" KEYWORD2 } + T{ token f "FOO" KEYWORD2 } + } +] [ + f "$FOO" "shellscript" load-mode tokenize-line nip +] unit-test diff --git a/extra/xmode/marker/marker.factor b/extra/xmode/marker/marker.factor old mode 100644 new mode 100755 index c155f8e11c..cd9eacbb88 --- a/extra/xmode/marker/marker.factor +++ b/extra/xmode/marker/marker.factor @@ -24,8 +24,18 @@ assocs combinators combinators.lib strings regexp splitting ; : mark-number ( keyword -- id ) keyword-number? DIGIT and ; +: resolve-delegate ( name -- rules ) + dup string? [ + "::" split1 [ swap load-mode at ] [ rule-sets get at ] if* + ] when ; + +: rule-set-keyword-maps ( ruleset -- seq ) + dup rule-set-imports + [ resolve-delegate rule-set-keyword-maps ] map concat + swap rule-set-keywords add ; + : mark-keyword ( keyword -- id ) - current-keywords at ; + current-rule-set rule-set-keyword-maps assoc-stack ; : add-remaining-token ( -- ) current-rule-set rule-set-default prev-token, ; @@ -45,30 +55,6 @@ assocs combinators combinators.lib strings regexp splitting ; : current-char ( -- char ) position get line get nth ; -GENERIC: perform-rule ( rule -- ) - -: ... ; - -M: escape-rule perform-rule ( rule -- ) ... ; - -: find-escape-rule ( -- rule ) - context get dup - line-context-in-rule-set rule-set-escape-rule - [ ] [ line-context-parent find-escape-rule ] ?if ; - -: check-escape-rule ( rule -- ) - #! Unlike jEdit, we keep checking parents until we find - #! an escape rule. - dup rule-no-escape? [ drop ] [ - drop - ! find-escape-rule - ! current-rule-set rule-set-escape-rule [ - ! find-escape-rule - ! ] [ - ! - ! ] if* - ] if ; - GENERIC: match-position ( rule -- n ) M: mark-previous-rule match-position drop last-offset get ; @@ -83,10 +69,10 @@ M: rule match-position drop position get ; [ over matcher-at-word-start? over last-offset get = implies ] } && 2nip ; -: matches-not-mark-following? ... ; - GENERIC: text-matches? ( position text -- match-count/f ) +M: f text-matches? 2drop f ; + M: string text-matches? ! XXX ignore case >r line get swap tail-slice r> @@ -103,7 +89,7 @@ M: string text-matches? : rule-end-matches? ( rule -- match-count/f ) dup mark-following-rule? [ - dup rule-end swap can-match-here? 0 and + dup rule-start swap can-match-here? 0 and ] [ dup rule-end tuck swap can-match-here? [ position get swap matcher-text @@ -114,10 +100,48 @@ M: string text-matches? ] if ] if ; +DEFER: get-rules + +: get-imported-rules ( vector/f char ruleset -- vector/f ) + rule-set-imports + [ resolve-delegate get-rules ?push-all ] curry* each ; + +: get-always-rules ( vector/f ruleset -- vector/f ) + f swap rule-set-rules at ?push-all ; + +: get-char-rules ( vector/f char ruleset -- vector/f ) + >r ch>upper r> rule-set-rules at ?push-all ; + +: get-rules ( char ruleset -- seq ) + f -rot + [ get-char-rules ] 2keep + [ get-always-rules ] keep + get-imported-rules ; + GENERIC: handle-rule-start ( match-count rule -- ) GENERIC: handle-rule-end ( match-count rule -- ) +: find-escape-rule ( -- rule ) + context get dup + line-context-in-rule-set rule-set-escape-rule [ ] [ + line-context-parent line-context-in-rule-set + dup [ rule-set-escape-rule ] when + ] ?if ; + +: check-escape-rule ( rule -- ? ) + rule-no-escape? [ f ] [ + find-escape-rule dup [ + dup rule-start-matches? dup [ + swap handle-rule-start + delegate-end-escaped? [ not ] change + t + ] [ + 2drop f + ] if + ] when + ] if ; + : check-every-rule ( -- ? ) current-char current-rule-set get-rules [ rule-start-matches? ] map-find @@ -129,11 +153,6 @@ GENERIC: handle-rule-end ( match-count rule -- ) dup [ swap handle-rule-end ] [ 2drop ] if ] when* ; -: handle-escape-rule ( rule -- ) - ?end-rule - ; -! ... process escape ... ; - : rule-match-token* ( rule -- id ) dup rule-match-token { { f [ dup rule-body-token ] } @@ -141,10 +160,13 @@ GENERIC: handle-rule-end ( match-count rule -- ) [ ] } case nip ; -: resolve-delegate ( name -- rules ) - dup string? [ - "::" split1 [ swap load-mode at ] [ rule-sets get at ] if* - ] when ; +M: escape-rule handle-rule-start + drop + ?end-rule + process-escape? get [ + escaped? [ not ] change + position [ + ] change + ] [ 2drop ] if ; M: seq-rule handle-rule-start ?end-rule @@ -174,6 +196,10 @@ M: mark-following-rule handle-rule-start f context get set-line-context-end context get set-line-context-in-rule ; +M: mark-following-rule handle-rule-end + nip rule-match-token* prev-token, + f context get set-line-context-in-rule ; + M: mark-previous-rule handle-rule-start ?end-rule mark-token @@ -183,7 +209,7 @@ M: mark-previous-rule handle-rule-start : do-escaped escaped? get [ escaped? off - ... + ! ... ] when ; : check-end-delegate ( -- ? ) @@ -198,14 +224,14 @@ M: mark-previous-rule handle-rule-start ] keep context get line-context-parent line-context-in-rule rule-match-token* next-token, pop-context seen-whitespace-end? on t - ] [ 2drop f ] if + ] [ drop check-escape-rule ] if ] [ f ] if* ] [ f ] if* ; : handle-no-word-break ( -- ) context get line-context-parent [ line-context-in-rule dup rule-no-word-break? [ - rule-match-token prev-token, + rule-match-token* prev-token, pop-context ] [ drop ] if ] when* ; @@ -221,6 +247,10 @@ M: mark-previous-rule handle-rule-start 1 current-rule-set rule-set-default next-token, ; +: rule-set-empty? ( ruleset -- ? ) + dup rule-set-rules assoc-empty? + swap rule-set-keywords assoc-empty? and ; + : check-word-break ( -- ? ) current-char dup blank? [ drop @@ -232,14 +262,17 @@ M: mark-previous-rule handle-rule-start (check-word-break) ] [ - dup alpha? [ + ! Micro-optimization with incorrect semantics; we keep + ! it here because jEdit mode files depend on it now... + current-rule-set rule-set-empty? [ drop ] [ - dup current-rule-set dup short. rule-set-no-word-sep* dup . member? [ - "A: " write write1 nl + dup alpha? [ + drop ] [ - "B: " write write1 nl - (check-word-break) + current-rule-set rule-set-no-word-sep* member? [ + (check-word-break) + ] unless ] if ] if diff --git a/extra/xmode/marker/state/state.factor b/extra/xmode/marker/state/state.factor old mode 100644 new mode 100755 index 26379501bd..cce7c7567a --- a/extra/xmode/marker/state/state.factor +++ b/extra/xmode/marker/state/state.factor @@ -14,6 +14,7 @@ SYMBOL: whitespace-end SYMBOL: seen-whitespace-end? SYMBOL: escaped? +SYMBOL: process-escape? SYMBOL: delegate-end-escaped? SYMBOL: terminated? @@ -61,5 +62,6 @@ SYMBOL: terminated? 0 position set 0 last-offset set 0 whitespace-end set + process-escape? on [ clone ] [ main-rule-set f ] if* context set ; diff --git a/extra/xmode/rules/rules.factor b/extra/xmode/rules/rules.factor old mode 100644 new mode 100755 index 9b530aae14..7206668edb --- a/extra/xmode/rules/rules.factor +++ b/extra/xmode/rules/rules.factor @@ -45,23 +45,6 @@ MEMO: standard-rule-set ( id -- ruleset ) over [ >r V{ } like r> over push-all ] [ nip ] if ] when* ; -DEFER: get-rules - -: get-imported-rules ( vector/f char ruleset -- vector/f ) - rule-set-imports [ get-rules ?push-all ] curry* each ; - -: get-always-rules ( vector/f ruleset -- vector/f ) - f swap rule-set-rules at ?push-all ; - -: get-char-rules ( vector/f char ruleset -- vector/f ) - >r ch>upper r> rule-set-rules at ?push-all ; - -: get-rules ( char ruleset -- seq ) - f -rot - [ get-char-rules ] 2keep - [ get-always-rules ] keep - get-imported-rules ; - : rule-set-no-word-sep* ( ruleset -- str ) dup rule-set-keywords keyword-map-no-word-sep* swap rule-set-no-word-sep "_" 3append ; From 7f625f9836783b01ae7dc14d1938e90c03d7ff30 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 2 Dec 2007 07:07:32 -0500 Subject: [PATCH 150/285] Regexp cleanups --- extra/regexp/regexp-tests.factor | 2 + extra/regexp/regexp.factor | 309 ++++++++++++++----------------- 2 files changed, 144 insertions(+), 167 deletions(-) diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor index 94f9ad172f..8e72c5c2f8 100644 --- a/extra/regexp/regexp-tests.factor +++ b/extra/regexp/regexp-tests.factor @@ -154,3 +154,5 @@ IN: regexp-tests [ t ] [ "|*+" "\\Q|*+\\E" matches? ] unit-test [ f ] [ "abc" "\\Q|*+\\E" matches? ] unit-test +[ t ] [ "S" "\\0123" matches? ] unit-test +[ t ] [ "SXY" "\\0123XY" matches? ] unit-test diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index ba1bd6c32d..51cda83cdc 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -1,135 +1,14 @@ USING: arrays combinators kernel lazy-lists math math.parser namespaces parser parser-combinators parser-combinators.simple -promises quotations sequences sequences.lib strings ; -USING: continuations io prettyprint ; +promises quotations sequences combinators.lib strings macros +assocs ; IN: regexp -: 1satisfy ( n -- parser ) - [ = ] curry satisfy ; - -: satisfy-token ( string quot -- parser ) - >r token r> [ satisfy ] curry [ drop ] swap compose <@ ; - -: octal-digit? ( n -- ? ) CHAR: 0 CHAR: 7 between? ; inline - -: decimal-digit? ( n -- ? ) CHAR: 0 CHAR: 9 between? ; inline - -: hex-digit? ( n -- ? ) - dup decimal-digit? - swap CHAR: a CHAR: f between? or ; - -: octal? ( str -- ? ) [ octal-digit? ] all? ; - -: decimal? ( str -- ? ) [ decimal-digit? ] all? ; - -: hex? ( str -- ? ) [ hex-digit? ] all? ; - -: control-char? ( n -- ? ) - dup 0 HEX: 1f between? - swap HEX: 7f = or ; - -: punct? ( n -- ? ) - "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" member? ; - -: c-identifier-char? ( ch -- ? ) - dup alpha? swap CHAR: _ = or ; inline - -: c-identifier? ( str -- ? ) - [ c-identifier-char? ] all? ; - -: java-blank? ( n -- ? ) - { - CHAR: \t CHAR: \n CHAR: \r - HEX: c HEX: 7 HEX: 1b - } member? ; - -: java-printable? ( n -- ? ) - dup alpha? swap punct? or ; - - -: 'ordinary-char' ( -- parser ) - [ "\\^*+?|(){}[" member? not ] satisfy [ 1satisfy ] <@ ; - -: 'octal-digit' ( -- parser ) [ octal-digit? ] satisfy ; - -: 'octal' ( -- parser ) - "\\0" token - 'octal-digit' - 'octal-digit' 'octal-digit' <&> <|> - [ CHAR: 0 CHAR: 3 between? ] satisfy - 'octal-digit' <&> 'octal-digit' <:&> <|> - &> just [ oct> 1satisfy ] <@ ; - -: 'hex-digit' ( -- parser ) [ hex-digit? ] satisfy ; - -: 'hex' ( -- parser ) - "\\x" token 'hex-digit' 'hex-digit' <&> &> - "\\u" token 'hex-digit' 'hex-digit' <&> - 'hex-digit' <:&> 'hex-digit' <:&> &> <|> [ hex> 1satisfy ] <@ ; - -: 'control-character' ( -- parser ) - "\\c" token [ LETTER? ] satisfy &> [ 1satisfy ] <@ ; - -: 'simple-escape-char' ( -- parser ) - { - { "\\\\" [ CHAR: \\ = ] } - { "\\t" [ CHAR: \t = ] } - { "\\n" [ CHAR: \n = ] } - { "\\r" [ CHAR: \r = ] } - { "\\f" [ HEX: c = ] } - { "\\a" [ HEX: 7 = ] } - { "\\e" [ HEX: 1b = ] } - } [ first2 satisfy-token ] [ <|> ] map-reduce ; - -: 'predefined-char-class' ( -- parser ) - { - { "." [ drop any-char-parser ] } - { "\\d" [ digit? ] } - { "\\D" [ digit? not ] } - { "\\s" [ java-blank? ] } - { "\\S" [ java-blank? not ] } - { "\\w" [ c-identifier? ] } - { "\\W" [ c-identifier? not ] } - } [ first2 satisfy-token ] [ <|> ] map-reduce ; - -: 'posix-character-class' ( -- parser ) - { - { "\\p{Lower}" [ letter? ] } - { "\\p{Upper}" [ LETTER? ] } - { "\\p{ASCII}" [ 0 HEX: 7f between? ] } - { "\\p{Alpha}" [ Letter? ] } - { "\\p{Digit}" [ digit? ] } - { "\\p{Alnum}" [ alpha? ] } - { "\\p{Punct}" [ punct? ] } - { "\\p{Graph}" [ java-printable? ] } - { "\\p{Print}" [ java-printable? ] } - { "\\p{Blank}" [ " \t" member? ] } - { "\\p{Cntrl}" [ control-char? ] } - { "\\p{XDigit}" [ hex-digit? ] } - { "\\p{Space}" [ java-blank? ] } - } [ first2 satisfy-token ] [ <|> ] map-reduce ; - -: 'escaped-seq' ( -- parser ) - "\\Q" token - any-char-parser <*> [ token ] <@ &> - "\\E" token <& ; - -: 'escape-seq' ( -- parser ) - 'simple-escape-char' - 'predefined-char-class' <|> - 'octal' <|> - 'hex' <|> - 'escaped-seq' <|> - 'control-character' <|> - 'posix-character-class' <|> ; - -: 'char' 'escape-seq' 'ordinary-char' <|> ; - -: 'string' - 'char' <+> [ [ <&> ] reduce* ] <@ ; +: or-predicates ( quots -- quot ) + [ \ dup add* ] map [ [ t ] ] f short-circuit \ nip add ; : exactly-n ( parser n -- parser' ) - swap and-parser construct-boa ; + swap ; : at-most-n ( parser n -- parser' ) dup zero? [ @@ -145,6 +24,116 @@ IN: regexp : from-m-to-n ( parser m n -- parser' ) >r [ exactly-n ] 2keep r> swap - at-most-n <&> ; +: octal-digit? ( n -- ? ) CHAR: 0 CHAR: 7 between? ; + +: decimal-digit? ( n -- ? ) CHAR: 0 CHAR: 9 between? ; + +: hex-digit? ( n -- ? ) + dup decimal-digit? + swap CHAR: a CHAR: f between? or ; + +: control-char? ( n -- ? ) + dup 0 HEX: 1f between? + swap HEX: 7f = or ; + +MACRO: fast-member? ( str -- quot ) + [ dup ] H{ } map>assoc [ key? ] curry ; + +: punct? ( n -- ? ) + "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" fast-member? ; + +: c-identifier-char? ( ch -- ? ) + dup alpha? swap CHAR: _ = or ; + +: java-blank? ( n -- ? ) + { + CHAR: \t CHAR: \n CHAR: \r + HEX: c HEX: 7 HEX: 1b + } fast-member? ; + +: java-printable? ( n -- ? ) + dup alpha? swap punct? or ; + +: 'ordinary-char' ( -- parser ) + [ "\\^*+?|(){}[" fast-member? not ] satisfy + [ [ = ] curry ] <@ ; + +: 'octal-digit' ( -- parser ) + [ octal-digit? ] satisfy ; + +: 'octal' ( -- parser ) + "0" token + 'octal-digit' 3 exactly-n + 'octal-digit' 1 2 from-m-to-n <|> + &> [ oct> [ = ] curry ] <@ ; + +: 'hex-digit' ( -- parser ) [ hex-digit? ] satisfy ; + +: 'hex' ( -- parser ) + "x" token 'hex-digit' 2 exactly-n &> + "u" token 'hex-digit' 4 exactly-n &> <|> + [ hex> [ = ] curry ] <@ ; + +: 'control-character' ( -- parser ) + "c" token [ LETTER? ] satisfy [ [ = ] curry ] <@ &> ; + +: satisfy-tokens ( assoc -- parser ) + [ >r token r> [ nip ] curry <@ ] { } assoc>map ; + +: 'simple-escape-char' ( -- parser ) + { + { "\\" CHAR: \\ } + { "t" CHAR: \t } + { "n" CHAR: \n } + { "r" CHAR: \r } + { "f" HEX: c } + { "a" HEX: 7 } + { "e" HEX: 1b } + } [ [ = ] curry ] assoc-map satisfy-tokens ; + +: 'predefined-char-class' ( -- parser ) + { + { "d" [ digit? ] } + { "D" [ digit? not ] } + { "s" [ java-blank? ] } + { "S" [ java-blank? not ] } + { "w" [ c-identifier-char? ] } + { "W" [ c-identifier-char? not ] } + } satisfy-tokens ; + +: 'posix-character-class' ( -- parser ) + { + { "Lower" [ letter? ] } + { "Upper" [ LETTER? ] } + { "ASCII" [ 0 HEX: 7f between? ] } + { "Alpha" [ Letter? ] } + { "Digit" [ digit? ] } + { "Alnum" [ alpha? ] } + { "Punct" [ punct? ] } + { "Graph" [ java-printable? ] } + { "Print" [ java-printable? ] } + { "Blank" [ " \t" member? ] } + { "Cntrl" [ control-char? ] } + { "XDigit" [ hex-digit? ] } + { "Space" [ java-blank? ] } + } satisfy-tokens "p{" "}" surrounded-by ; + +: 'escape' ( -- parser ) + "\\" token + 'simple-escape-char' + 'predefined-char-class' <|> + 'octal' <|> + 'hex' <|> + 'control-character' <|> + 'posix-character-class' <|> &> ; + +: 'any-char' "." token [ drop [ drop t ] ] <@ ; + +: 'char' + 'any-char' 'escape' 'ordinary-char' <|> <|> [ satisfy ] <@ ; + +: 'string' 'char' <+> [ ] <@ ; + DEFER: 'regexp' TUPLE: group-result str ; @@ -152,60 +141,46 @@ TUPLE: group-result str ; C: group-result : 'grouping' - "(" token 'regexp' [ [ ] <@ ] <@ - ")" token <& &> ; - -! Special cases: ]\\^- -: predicates>cond ( seq -- quot ) - #! Takes an array of quotation predicates/objects and makes a cond - #! Makes a predicate of each obj like so: [ dup obj = ] - #! Leaves quotations alone - #! The cond returns a boolean, t if one of the predicates matches - [ - dup callable? [ [ = ] curry ] unless - [ dup ] swap compose [ drop t ] 2array - ] map { [ t ] [ drop f ] } add [ cond ] curry ; + "(" ")" surrounded-by ; : 'range' ( -- parser ) any-char-parser "-" token <& any-char-parser <&> - [ first2 [ between? ] 2curry satisfy ] <@ ; + [ first2 [ between? ] 2curry ] <@ ; -: 'character-class-contents' ( -- parser ) - 'escape-seq' - 'range' <|> - [ "\\]" member? not ] satisfy [ 1satisfy ] <@ <|> ; +: 'character-class-term' ( -- parser ) + 'range' + 'escape' <|> + [ "\\]" member? not ] satisfy [ [ = ] curry ] <@ <|> ; -: make-character-class ( seq ? -- ) - >r [ parser>predicate ] map predicates>cond r> - [ [ not ] compose ] when satisfy ; +: 'positive-character-class' ( -- parser ) + "]" token [ drop [ CHAR: ] = ] ] <@ 'character-class-term' <*> <&:> + 'character-class-term' <+> <|> + [ or-predicates ] <@ ; + +: 'negative-character-class' ( -- parser ) + "^" token 'positive-character-class' &> + [ [ not ] append ] <@ ; : 'character-class' ( -- parser ) - "[" token - "^" token 'character-class-contents' <+> &> [ t make-character-class ] <@ - "]" token [ first 1satisfy ] <@ 'character-class-contents' <*> <&:> - [ f make-character-class ] <@ <|> - 'character-class-contents' <+> [ f make-character-class ] <@ <|> - &> - "]" token <& ; + 'negative-character-class' 'positive-character-class' <|> + "[" "]" surrounded-by [ satisfy ] <@ ; + +: 'escaped-seq' ( -- parser ) + any-char-parser <*> [ token ] <@ "\\Q" "\\E" surrounded-by ; : 'term' ( -- parser ) - 'string' + 'escaped-seq' 'grouping' <|> + 'string' <|> 'character-class' <|> - <+> [ - dup length 1 = - [ first ] [ and-parser construct-boa ] if - ] <@ ; + <+> [ ] <@ ; : 'interval' ( -- parser ) - 'term' "{" token <& 'integer' <&> "}" token <& [ first2 exactly-n ] <@ - 'term' "{" token <& 'integer' <&> "," token <& "}" token <& - [ first2 at-least-n ] <@ <|> - 'term' "{" token <& "," token <& 'integer' <&> "}" token <& - [ first2 at-most-n ] <@ <|> - 'term' "{" token <& 'integer' <&> "," token <& 'integer' <:&> "}" token <& - [ first3 from-m-to-n ] <@ <|> ; + 'term' 'integer' "{" "}" surrounded-by <&> [ first2 exactly-n ] <@ + 'term' 'integer' "{" ",}" surrounded-by <&> [ first2 at-least-n ] <@ <|> + 'term' 'integer' "{," "}" surrounded-by <&> [ first2 at-most-n ] <@ <|> + 'term' 'integer' "," token <& 'integer' <&> "{" "}" surrounded-by <&> [ first2 first2 from-m-to-n ] <@ <|> ; : 'repetition' ( -- parser ) 'term' @@ -221,7 +196,7 @@ C: group-result LAZY: 'union' ( -- parser ) 'simple' - 'simple' "|" token 'union' &> <&> [ first2 <|> ] <@ + 'simple' "|" token nonempty-list-of [ ] <@ <|> ; LAZY: 'regexp' ( -- parser ) From 1fbfc88b906787180b2713db0f4435d4580df40e Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 2 Dec 2007 07:17:12 -0500 Subject: [PATCH 151/285] More regexp changes --- extra/regexp/regexp-tests.factor | 4 +++ extra/regexp/regexp.factor | 56 ++++++++++---------------------- 2 files changed, 21 insertions(+), 39 deletions(-) diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor index 8e72c5c2f8..021592a772 100644 --- a/extra/regexp/regexp-tests.factor +++ b/extra/regexp/regexp-tests.factor @@ -156,3 +156,7 @@ IN: regexp-tests [ t ] [ "S" "\\0123" matches? ] unit-test [ t ] [ "SXY" "\\0123XY" matches? ] unit-test +[ t ] [ "x" "\\x78" matches? ] unit-test +[ f ] [ "y" "\\x78" matches? ] unit-test +[ t ] [ "x" "\\u0078" matches? ] unit-test +[ f ] [ "y" "\\u0078" matches? ] unit-test diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index 51cda83cdc..1de1d9b16e 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -7,23 +7,6 @@ IN: regexp : or-predicates ( quots -- quot ) [ \ dup add* ] map [ [ t ] ] f short-circuit \ nip add ; -: exactly-n ( parser n -- parser' ) - swap ; - -: at-most-n ( parser n -- parser' ) - dup zero? [ - 2drop epsilon - ] [ - 2dup exactly-n - -rot 1- at-most-n <|> - ] if ; - -: at-least-n ( parser n -- parser' ) - dupd exactly-n swap <*> <&> ; - -: from-m-to-n ( parser m n -- parser' ) - >r [ exactly-n ] 2keep r> swap - at-most-n <&> ; - : octal-digit? ( n -- ? ) CHAR: 0 CHAR: 7 between? ; : decimal-digit? ( n -- ? ) CHAR: 0 CHAR: 9 between? ; @@ -58,24 +41,25 @@ MACRO: fast-member? ( str -- quot ) [ "\\^*+?|(){}[" fast-member? not ] satisfy [ [ = ] curry ] <@ ; -: 'octal-digit' ( -- parser ) - [ octal-digit? ] satisfy ; +: 'octal-digit' ( -- parser ) [ octal-digit? ] satisfy ; : 'octal' ( -- parser ) - "0" token - 'octal-digit' 3 exactly-n - 'octal-digit' 1 2 from-m-to-n <|> - &> [ oct> [ = ] curry ] <@ ; + "0" token 'octal-digit' 1 3 from-m-to-n &> + [ oct> ] <@ ; : 'hex-digit' ( -- parser ) [ hex-digit? ] satisfy ; : 'hex' ( -- parser ) "x" token 'hex-digit' 2 exactly-n &> "u" token 'hex-digit' 4 exactly-n &> <|> - [ hex> [ = ] curry ] <@ ; + [ hex> ] <@ ; : 'control-character' ( -- parser ) - "c" token [ LETTER? ] satisfy [ [ = ] curry ] <@ &> ; + "c" token [ LETTER? ] satisfy &> ; + +: 'simple-escape' ( -- parser ) + 'octal' 'hex' 'control-character' <|> <|> + [ [ = ] curry ] <@ ; : satisfy-tokens ( assoc -- parser ) [ >r token r> [ nip ] curry <@ ] { } assoc>map ; @@ -120,11 +104,9 @@ MACRO: fast-member? ( str -- quot ) : 'escape' ( -- parser ) "\\" token - 'simple-escape-char' + 'simple-escape' + 'simple-escape-char' <|> 'predefined-char-class' <|> - 'octal' <|> - 'hex' <|> - 'control-character' <|> 'posix-character-class' <|> &> ; : 'any-char' "." token [ drop [ drop t ] ] <@ ; @@ -132,7 +114,8 @@ MACRO: fast-member? ( str -- quot ) : 'char' 'any-char' 'escape' 'ordinary-char' <|> <|> [ satisfy ] <@ ; -: 'string' 'char' <+> [ ] <@ ; +: 'string' + 'char' <+> [ ] <@ ; DEFER: 'regexp' @@ -183,16 +166,11 @@ C: group-result 'term' 'integer' "," token <& 'integer' <&> "{" "}" surrounded-by <&> [ first2 first2 from-m-to-n ] <@ <|> ; : 'repetition' ( -- parser ) - 'term' - [ "*+?" member? ] satisfy <&> [ - first2 { - { CHAR: * [ <*> ] } - { CHAR: + [ <+> ] } - { CHAR: ? [ ] } - } case - ] <@ ; + 'term' "*" token <& [ <*> ] <@ + 'term' "+" token <& [ <+> ] <@ <|> + 'term' "?" token <& [ ] <@ <|> ; -: 'simple' 'term' 'repetition' <|> 'interval' <|> ; +: 'simple' 'term' 'repetition' 'interval' <|> <|> ; LAZY: 'union' ( -- parser ) 'simple' From 12ff0614e60a2f7f45f67e175ba0ca0c8fbf1f5c Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 2 Dec 2007 07:19:01 -0500 Subject: [PATCH 152/285] Simpler 'union' parser --- extra/regexp/regexp.factor | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index 1de1d9b16e..d377085018 100644 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -173,9 +173,7 @@ C: group-result : 'simple' 'term' 'repetition' 'interval' <|> <|> ; LAZY: 'union' ( -- parser ) - 'simple' - 'simple' "|" token nonempty-list-of [ ] <@ - <|> ; + 'simple' "|" token nonempty-list-of [ ] <@ ; LAZY: 'regexp' ( -- parser ) 'repetition' 'union' <|> ; From 7cbf7ba7198d2320d294398aa0228106010fbb65 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 2 Dec 2007 15:55:44 -0500 Subject: [PATCH 153/285] Updates for parser-combinators --- .../parser-combinators.factor | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/extra/parser-combinators/parser-combinators.factor b/extra/parser-combinators/parser-combinators.factor index 7256ad18dd..874dedeb6f 100755 --- a/extra/parser-combinators/parser-combinators.factor +++ b/extra/parser-combinators/parser-combinators.factor @@ -290,18 +290,19 @@ LAZY: <(+)> ( parser -- parser ) LAZY: surrounded-by ( parser start end -- parser' ) [ token ] 2apply swapd pack ; -: predicates>cond ( seq -- quot ) - #! Takes an array of quotation predicates/objects and makes a cond - #! Makes a predicate of each obj like so: [ dup obj = ] - #! Leaves quotations alone - #! The cond returns a boolean, t if one of the predicates matches - [ - dup callable? [ [ = ] curry ] unless - [ dup ] swap compose [ drop t ] 2array - ] map { [ t ] [ drop f ] } add [ cond ] curry ; +: exactly-n ( parser n -- parser' ) + swap ; -GENERIC: parser>predicate ( obj -- quot ) +: at-most-n ( parser n -- parser' ) + dup zero? [ + 2drop epsilon + ] [ + 2dup exactly-n + -rot 1- at-most-n <|> + ] if ; -M: satisfy-parser parser>predicate ( obj -- quot ) - satisfy-parser-quot ; +: at-least-n ( parser n -- parser' ) + dupd exactly-n swap <*> <&> ; +: from-m-to-n ( parser m n -- parser' ) + >r [ exactly-n ] 2keep r> swap - at-most-n <&> ; From cd041abee3e6db0bf862f56c3410efa533d3d47a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 3 Dec 2007 19:19:18 -0500 Subject: [PATCH 154/285] Generalized pprint-string --- core/alien/syntax/syntax.factor | 2 +- core/prettyprint/backend/backend.factor | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) mode change 100644 => 100755 core/alien/syntax/syntax.factor diff --git a/core/alien/syntax/syntax.factor b/core/alien/syntax/syntax.factor old mode 100644 new mode 100755 index ed1520e9a1..9b7bc6a214 --- a/core/alien/syntax/syntax.factor +++ b/core/alien/syntax/syntax.factor @@ -59,4 +59,4 @@ M: alien pprint* { [ t ] [ \ ALIEN: [ alien-address pprint* ] pprint-prefix ] } } cond ; -M: dll pprint* dll-path dup "DLL\" " pprint-string ; +M: dll pprint* dll-path dup "DLL\" " "\"" pprint-string ; diff --git a/core/prettyprint/backend/backend.factor b/core/prettyprint/backend/backend.factor index 0ee79efa8b..8d0140202e 100755 --- a/core/prettyprint/backend/backend.factor +++ b/core/prettyprint/backend/backend.factor @@ -89,19 +89,20 @@ M: f pprint* drop \ f pprint-word ; { 0.3 0.3 0.3 1.0 } foreground set ] H{ } make-assoc ; -: unparse-string ( str prefix -- str ) - [ - % do-string-limit [ unparse-ch ] each CHAR: " , - ] "" make ; +: unparse-string ( str prefix suffix -- str ) + [ >r % do-string-limit [ unparse-ch ] each r> % ] "" make ; -: pprint-string ( obj str prefix -- ) +: pprint-string ( obj str prefix suffix -- ) unparse-string swap string-style styled-text ; -M: string pprint* dup "\"" pprint-string ; +M: string pprint* + dup "\"" "\"" pprint-string ; -M: sbuf pprint* dup "SBUF\" " pprint-string ; +M: sbuf pprint* + dup "SBUF\" " "\"" pprint-string ; -M: pathname pprint* dup pathname-string "P\" " pprint-string ; +M: pathname pprint* + dup pathname-string "P\" " "\"" pprint-string ; ! Sequences : nesting-limit? ( -- ? ) From 113ea0962bde33389c975e22578c761c985e1691 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 3 Dec 2007 19:20:47 -0500 Subject: [PATCH 155/285] Regexp bug fixes and improved literal syntax --- extra/regexp/regexp-tests.factor | 12 ++++ extra/regexp/regexp.factor | 110 +++++++++++++++++++------------ 2 files changed, 81 insertions(+), 41 deletions(-) mode change 100644 => 100755 extra/regexp/regexp-tests.factor mode change 100644 => 100755 extra/regexp/regexp.factor diff --git a/extra/regexp/regexp-tests.factor b/extra/regexp/regexp-tests.factor old mode 100644 new mode 100755 index 021592a772..5cec0af0a9 --- a/extra/regexp/regexp-tests.factor +++ b/extra/regexp/regexp-tests.factor @@ -160,3 +160,15 @@ IN: regexp-tests [ f ] [ "y" "\\x78" matches? ] unit-test [ t ] [ "x" "\\u0078" matches? ] unit-test [ f ] [ "y" "\\u0078" matches? ] unit-test + +[ t ] [ "ab" "a+b" matches? ] unit-test +[ f ] [ "b" "a+b" matches? ] unit-test +[ t ] [ "aab" "a+b" matches? ] unit-test +[ f ] [ "abb" "a+b" matches? ] unit-test + +[ t ] [ "abbbb" "ab*" matches? ] unit-test +[ t ] [ "a" "ab*" matches? ] unit-test +[ f ] [ "abab" "ab*" matches? ] unit-test + +[ f ] [ "x" "\\." matches? ] unit-test +[ t ] [ "." "\\." matches? ] unit-test diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor old mode 100644 new mode 100755 index d377085018..f1f2d3b1e4 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -1,15 +1,20 @@ USING: arrays combinators kernel lazy-lists math math.parser namespaces parser parser-combinators parser-combinators.simple promises quotations sequences combinators.lib strings macros -assocs ; +assocs prettyprint.backend ; IN: regexp : or-predicates ( quots -- quot ) [ \ dup add* ] map [ [ t ] ] f short-circuit \ nip add ; -: octal-digit? ( n -- ? ) CHAR: 0 CHAR: 7 between? ; +MACRO: fast-member? ( str -- quot ) + [ dup ] H{ } map>assoc [ key? ] curry ; -: decimal-digit? ( n -- ? ) CHAR: 0 CHAR: 9 between? ; +: octal-digit? ( n -- ? ) + CHAR: 0 CHAR: 7 between? ; + +: decimal-digit? ( n -- ? ) + CHAR: 0 CHAR: 9 between? ; : hex-digit? ( n -- ? ) dup decimal-digit? @@ -19,9 +24,6 @@ IN: regexp dup 0 HEX: 1f between? swap HEX: 7f = or ; -MACRO: fast-member? ( str -- quot ) - [ dup ] H{ } map>assoc [ key? ] curry ; - : punct? ( n -- ? ) "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" fast-member? ; @@ -54,13 +56,6 @@ MACRO: fast-member? ( str -- quot ) "u" token 'hex-digit' 4 exactly-n &> <|> [ hex> ] <@ ; -: 'control-character' ( -- parser ) - "c" token [ LETTER? ] satisfy &> ; - -: 'simple-escape' ( -- parser ) - 'octal' 'hex' 'control-character' <|> <|> - [ [ = ] curry ] <@ ; - : satisfy-tokens ( assoc -- parser ) [ >r token r> [ nip ] curry <@ ] { } assoc>map ; @@ -102,21 +97,26 @@ MACRO: fast-member? ( str -- quot ) { "Space" [ java-blank? ] } } satisfy-tokens "p{" "}" surrounded-by ; +: 'simple-escape' ( -- parser ) + 'octal' + 'hex' <|> + "c" token [ LETTER? ] satisfy &> <|> + any-char-parser <|> + [ [ = ] curry ] <@ ; + : 'escape' ( -- parser ) "\\" token - 'simple-escape' - 'simple-escape-char' <|> + 'simple-escape-char' 'predefined-char-class' <|> - 'posix-character-class' <|> &> ; + 'posix-character-class' <|> + 'simple-escape' <|> &> ; -: 'any-char' "." token [ drop [ drop t ] ] <@ ; +: 'any-char' + "." token [ drop [ drop t ] ] <@ ; : 'char' 'any-char' 'escape' 'ordinary-char' <|> <|> [ satisfy ] <@ ; -: 'string' - 'char' <+> [ ] <@ ; - DEFER: 'regexp' TUPLE: group-result str ; @@ -152,47 +152,75 @@ C: group-result : 'escaped-seq' ( -- parser ) any-char-parser <*> [ token ] <@ "\\Q" "\\E" surrounded-by ; -: 'term' ( -- parser ) +: 'simple' ( -- parser ) 'escaped-seq' 'grouping' <|> - 'string' <|> - 'character-class' <|> - <+> [ ] <@ ; + 'char' <|> + 'character-class' <|> ; : 'interval' ( -- parser ) - 'term' 'integer' "{" "}" surrounded-by <&> [ first2 exactly-n ] <@ - 'term' 'integer' "{" ",}" surrounded-by <&> [ first2 at-least-n ] <@ <|> - 'term' 'integer' "{," "}" surrounded-by <&> [ first2 at-most-n ] <@ <|> - 'term' 'integer' "," token <& 'integer' <&> "{" "}" surrounded-by <&> [ first2 first2 from-m-to-n ] <@ <|> ; + 'simple' 'integer' "{" "}" surrounded-by <&> [ first2 exactly-n ] <@ + 'simple' 'integer' "{" ",}" surrounded-by <&> [ first2 at-least-n ] <@ <|> + 'simple' 'integer' "{," "}" surrounded-by <&> [ first2 at-most-n ] <@ <|> + 'simple' 'integer' "," token <& 'integer' <&> "{" "}" surrounded-by <&> [ first2 first2 from-m-to-n ] <@ <|> ; : 'repetition' ( -- parser ) - 'term' "*" token <& [ <*> ] <@ - 'term' "+" token <& [ <+> ] <@ <|> - 'term' "?" token <& [ ] <@ <|> ; + 'simple' "*" token <& [ <*> ] <@ + 'simple' "+" token <& [ <+> ] <@ <|> + 'simple' "?" token <& [ ] <@ <|> ; -: 'simple' 'term' 'repetition' 'interval' <|> <|> ; - -LAZY: 'union' ( -- parser ) - 'simple' "|" token nonempty-list-of [ ] <@ ; +: 'term' ( -- parser ) + 'simple' 'repetition' 'interval' <|> <|> + <+> [ ] <@ ; LAZY: 'regexp' ( -- parser ) - 'repetition' 'union' <|> ; + 'term' "|" token nonempty-list-of [ ] <@ ; -: 'regexp' just parse-1 ; +TUPLE: regexp source parser ; + +: dup 'regexp' just parse-1 regexp construct-boa ; GENERIC: >regexp ( obj -- parser ) -M: string >regexp 'regexp' just parse-1 ; + +M: string >regexp ; + M: object >regexp ; -: matches? ( string regexp -- ? ) >regexp just parse nil? not ; +: matches? ( string regexp -- ? ) + >regexp regexp-parser just parse nil? not ; +! Literal syntax for regexps : parse-regexp ( accum end -- accum ) lexer get dup skip-blank [ [ index* dup 1+ swap ] 2keep swapd subseq swap ] change-column parsed ; -: R/ CHAR: / parse-regexp ; parsing -: R| CHAR: | parse-regexp ; parsing +: R! CHAR: ! parse-regexp ; parsing : R" CHAR: " parse-regexp ; parsing +: R# CHAR: # parse-regexp ; parsing : R' CHAR: ' parse-regexp ; parsing +: R( CHAR: ) parse-regexp ; parsing +: R/ CHAR: / parse-regexp ; parsing +: R@ CHAR: @ parse-regexp ; parsing +: R[ CHAR: ] parse-regexp ; parsing : R` CHAR: ` parse-regexp ; parsing +: R{ CHAR: } parse-regexp ; parsing +: R| CHAR: | parse-regexp ; parsing + +: find-regexp-syntax ( string -- prefix suffix ) + { + { "R/ " "/" } + { "R! " "!" } + { "R\" " "\"" } + { "R# " "#" } + { "R' " "'" } + { "R( " ")" } + { "R@ " "@" } + { "R[ " "]" } + { "R` " "`" } + { "R{ " "}" } + { "R| " "|" } + } swap [ subseq? not nip ] curry assoc-find drop ; + +M: regexp pprint* + dup regexp-source dup find-regexp-syntax pprint-string ; From 3c95a5a3ea068a6ae348aec7566e6a52b76acf24 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Mon, 3 Dec 2007 19:29:16 -0500 Subject: [PATCH 156/285] Fix map>assoc where the input is a specialized array --- core/assocs/assocs-tests.factor | 6 ++++++ core/assocs/assocs.factor | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/assocs/assocs-tests.factor b/core/assocs/assocs-tests.factor index b38ce82052..8fabee06ef 100644 --- a/core/assocs/assocs-tests.factor +++ b/core/assocs/assocs-tests.factor @@ -87,3 +87,9 @@ unit-test [ H{ { 1 2 } { 3 4 } } ] [ "hi" 5 H{ { 1 2 } { 3 4 } } clone [ rename-at ] keep ] unit-test + +[ + H{ { 1.0 1.0 } { 2.0 2.0 } } +] [ + F{ 1.0 2.0 } [ dup ] H{ } map>assoc +] unit-test diff --git a/core/assocs/assocs.factor b/core/assocs/assocs.factor index 272a763b7b..40b35a931b 100644 --- a/core/assocs/assocs.factor +++ b/core/assocs/assocs.factor @@ -135,7 +135,7 @@ M: assoc assoc-clone-like ( assoc exemplar -- newassoc ) [ 0 or + ] change-at ; : map>assoc ( seq quot exemplar -- assoc ) - >r [ 2array ] compose map r> assoc-like ; inline + >r [ 2array ] compose { } map-as r> assoc-like ; inline M: assoc >alist [ 2array ] { } assoc>map ; From 9c577e881ab7976c43f658cd8125607045d837a0 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 21:17:23 -0600 Subject: [PATCH 157/285] Add install-x11, which can install the extra libraries for Factor on Linux X11 Add a message for git update (so the user doesn't think it got stuck) Fix a bug to identify x86_64 as an x86 system --- misc/factor.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/misc/factor.sh b/misc/factor.sh index 98f9104549..7511b3d83d 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -105,6 +105,7 @@ find_architecture() { i386) ARCH=x86;; i686) ARCH=x86;; *86) ARCH=x86;; + *86_64) ARCH=x86;; "Power Macintosh") ARCH=ppc;; esac } @@ -142,6 +143,9 @@ echo_build_info() { set_build_info() { if ! [[ -n $OS && -n $ARCH && -n $WORD ]] ; then + echo "OS: $OS" + echo "ARCH: $ARCH" + echo "WORD: $WORD" echo "OS, ARCH, or WORD is empty. Please report this" exit 5 fi @@ -170,6 +174,7 @@ git_clone() { } git_pull_factorcode() { + echo "Updating the git repository from factorcode.org..." git pull git://factorcode.org/git/factor.git check_ret git } @@ -216,7 +221,7 @@ bootstrap() { } usage() { - echo "usage: $0 install|update" + echo "usage: $0 install|install-x11|update" } install() { @@ -244,8 +249,13 @@ update() { bootstrap } +install_libraries() { + sudo apt-get install libc6-dev libfreetype6-dev wget git-core git-doc libx11-dev glutg3-dev +} + case "$1" in install) install ;; + install-x11) install_libraries; install ;; update) update ;; *) usage ;; esac From 3a2eba824372cbf82f9a68bb66a833d2019c1cf0 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 21:25:52 -0600 Subject: [PATCH 158/285] Remove some parser-combinators tests for --- extra/parser-combinators/parser-combinators-tests.factor | 6 ------ 1 file changed, 6 deletions(-) diff --git a/extra/parser-combinators/parser-combinators-tests.factor b/extra/parser-combinators/parser-combinators-tests.factor index 546eb84c98..8d55cc5770 100644 --- a/extra/parser-combinators/parser-combinators-tests.factor +++ b/extra/parser-combinators/parser-combinators-tests.factor @@ -149,9 +149,3 @@ IN: scratchpad { { } } [ "234" "1" token <+> parse list>array ] unit-test - - -[ "a" "a" token parse-1 ] unit-test-fails -[ t ] [ "b" "a" token parse-1 >boolean ] unit-test -[ t ] [ "b" "ab" token parse-1 >boolean ] unit-test - From 601c4fedcfe1a1c90f9ffff570d77844979ee8c7 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 21:46:56 -0600 Subject: [PATCH 159/285] Add some stubs for reluctant and possessive qualifiers --- extra/regexp/regexp.factor | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index f1f2d3b1e4..d60011c41c 100755 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -2,6 +2,7 @@ USING: arrays combinators kernel lazy-lists math math.parser namespaces parser parser-combinators parser-combinators.simple promises quotations sequences combinators.lib strings macros assocs prettyprint.backend ; +USE: io IN: regexp : or-predicates ( quots -- quot ) @@ -158,17 +159,27 @@ C: group-result 'char' <|> 'character-class' <|> ; -: 'interval' ( -- parser ) +: 'greedy-interval' ( -- parser ) 'simple' 'integer' "{" "}" surrounded-by <&> [ first2 exactly-n ] <@ 'simple' 'integer' "{" ",}" surrounded-by <&> [ first2 at-least-n ] <@ <|> 'simple' 'integer' "{," "}" surrounded-by <&> [ first2 at-most-n ] <@ <|> 'simple' 'integer' "," token <& 'integer' <&> "{" "}" surrounded-by <&> [ first2 first2 from-m-to-n ] <@ <|> ; -: 'repetition' ( -- parser ) +: 'interval' ( -- parser ) + 'greedy-interval' + 'greedy-interval' "?" token <& [ "reluctant {}" print ] <@ <|> + 'greedy-interval' "+" token <& [ "possessive {}" print ] <@ <|> ; + +: 'greedy-repetition' ( -- parser ) 'simple' "*" token <& [ <*> ] <@ 'simple' "+" token <& [ <+> ] <@ <|> 'simple' "?" token <& [ ] <@ <|> ; +: 'repetition' ( -- parser ) + 'greedy-repetition' + 'greedy-repetition' "?" token <& [ "reluctant" print ] <@ <|> + 'greedy-repetition' "+" token <& [ "possessive" print ] <@ <|> ; + : 'term' ( -- parser ) 'simple' 'repetition' 'interval' <|> <|> <+> [ ] <@ ; From a5d450de63f4e60890fabc875164c65896fee709 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 22:43:33 -0600 Subject: [PATCH 160/285] Add stubs for ^ and $ --- extra/regexp/regexp.factor | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor index d60011c41c..55d15aed42 100755 --- a/extra/regexp/regexp.factor +++ b/extra/regexp/regexp.factor @@ -41,7 +41,7 @@ MACRO: fast-member? ( str -- quot ) dup alpha? swap punct? or ; : 'ordinary-char' ( -- parser ) - [ "\\^*+?|(){}[" fast-member? not ] satisfy + [ "\\^*+?|(){}[$" fast-member? not ] satisfy [ [ = ] curry ] <@ ; : 'octal-digit' ( -- parser ) [ octal-digit? ] satisfy ; @@ -185,7 +185,13 @@ C: group-result <+> [ ] <@ ; LAZY: 'regexp' ( -- parser ) - 'term' "|" token nonempty-list-of [ ] <@ ; + 'term' "|" token nonempty-list-of [ ] <@ + "^" token 'term' "|" token nonempty-list-of [ ] <@ + &> [ "caret" print ] <@ <|> + 'term' "|" token nonempty-list-of [ ] <@ + "$" token <& [ "dollar" print ] <@ <|> + "^" token 'term' "|" token nonempty-list-of [ ] <@ &> + "$" token [ "caret dollar" print ] <@ <& <|> ; TUPLE: regexp source parser ; From f1c6932eaa07c0768f6e1ae27a59794d216f7295 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 23:01:34 -0600 Subject: [PATCH 161/285] Add support for UltraEdit --- extra/editors/ultraedit/authors.txt | 1 + extra/editors/ultraedit/summary.txt | 1 + extra/editors/ultraedit/ultraedit.factor | 12 ++++++++++++ 3 files changed, 14 insertions(+) create mode 100644 extra/editors/ultraedit/authors.txt create mode 100644 extra/editors/ultraedit/summary.txt create mode 100644 extra/editors/ultraedit/ultraedit.factor diff --git a/extra/editors/ultraedit/authors.txt b/extra/editors/ultraedit/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/editors/ultraedit/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/editors/ultraedit/summary.txt b/extra/editors/ultraedit/summary.txt new file mode 100644 index 0000000000..fe2ad9c1a9 --- /dev/null +++ b/extra/editors/ultraedit/summary.txt @@ -0,0 +1 @@ +UltraEdit editor integration diff --git a/extra/editors/ultraedit/ultraedit.factor b/extra/editors/ultraedit/ultraedit.factor new file mode 100644 index 0000000000..d7a1a18132 --- /dev/null +++ b/extra/editors/ultraedit/ultraedit.factor @@ -0,0 +1,12 @@ +USING: editors io.launcher kernel math.parser namespaces ; +IN: editors.ultraedit + +: ultraedit ( file line -- ) + [ + \ ultraedit get-global % " " % swap % "/" % # "/1" % + ] "" make run-detached ; + +! Put the path in your .factor-boot-rc +! "K:\\Program Files (x86)\\IDM Computer Solutions\\UltraEdit-32\\uedit32.exe" \ ultraedit set-global + +[ ultraedit ] edit-hook set-global From cea8b7c2a17da622774cd6806b076ee8b99ae1e9 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 23:31:03 -0600 Subject: [PATCH 162/285] Add support for EmEditor --- extra/editors/emeditor/authors.txt | 1 + extra/editors/emeditor/emeditor.factor | 10 ++++++++++ extra/editors/emeditor/summary.txt | 1 + 3 files changed, 12 insertions(+) create mode 100644 extra/editors/emeditor/authors.txt create mode 100644 extra/editors/emeditor/emeditor.factor create mode 100644 extra/editors/emeditor/summary.txt diff --git a/extra/editors/emeditor/authors.txt b/extra/editors/emeditor/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/editors/emeditor/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/editors/emeditor/emeditor.factor b/extra/editors/emeditor/emeditor.factor new file mode 100644 index 0000000000..6df4a3619d --- /dev/null +++ b/extra/editors/emeditor/emeditor.factor @@ -0,0 +1,10 @@ +USING: editors io.launcher kernel math.parser namespaces ; +IN: editors.emeditor + +: emeditor ( file line -- ) + [ + \ emeditor get-global % " /l " % # + " " % "\"" % % "\"" % + ] "" make run-detached ; + +[ emeditor ] edit-hook set-global diff --git a/extra/editors/emeditor/summary.txt b/extra/editors/emeditor/summary.txt new file mode 100644 index 0000000000..831acc08af --- /dev/null +++ b/extra/editors/emeditor/summary.txt @@ -0,0 +1 @@ +EmEditor integration From 9718a4e1763a461a04dcd44cccc653c42a6ffec4 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 23:44:21 -0600 Subject: [PATCH 163/285] Add support for TED Notepad --- extra/editors/ted-notepad/authors.txt | 1 + extra/editors/ted-notepad/summary.txt | 1 + extra/editors/ted-notepad/ted-notepad.factor | 10 ++++++++++ 3 files changed, 12 insertions(+) create mode 100644 extra/editors/ted-notepad/authors.txt create mode 100644 extra/editors/ted-notepad/summary.txt create mode 100644 extra/editors/ted-notepad/ted-notepad.factor diff --git a/extra/editors/ted-notepad/authors.txt b/extra/editors/ted-notepad/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/editors/ted-notepad/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/editors/ted-notepad/summary.txt b/extra/editors/ted-notepad/summary.txt new file mode 100644 index 0000000000..c1b8424393 --- /dev/null +++ b/extra/editors/ted-notepad/summary.txt @@ -0,0 +1 @@ +TED Notepad integration diff --git a/extra/editors/ted-notepad/ted-notepad.factor b/extra/editors/ted-notepad/ted-notepad.factor new file mode 100644 index 0000000000..945233ff9b --- /dev/null +++ b/extra/editors/ted-notepad/ted-notepad.factor @@ -0,0 +1,10 @@ +USING: editors io.launcher kernel math.parser namespaces ; +IN: editors.ted-notepad + +: ted-notepad ( file line -- ) + [ + \ ted-notepad get-global % " /l" % # + " " % % + ] "" make run-detached ; + +[ ted-notepad ] edit-hook set-global From 61aaa4f0dea74351644ef91e4ffaa02e9c4a9d51 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 23:54:59 -0600 Subject: [PATCH 164/285] Add nfirst to combinators.lib and add seq>stack --- extra/combinators/lib/lib-tests.factor | 2 ++ extra/combinators/lib/lib.factor | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/extra/combinators/lib/lib-tests.factor b/extra/combinators/lib/lib-tests.factor index 43385b911d..0d76e6f50d 100644 --- a/extra/combinators/lib/lib-tests.factor +++ b/extra/combinators/lib/lib-tests.factor @@ -58,3 +58,5 @@ IN: temporary [ dup array? ] [ dup vector? ] [ dup float? ] } || nip ] unit-test + +[ 1 2 3 4 ] [ { 1 2 3 4 } 4 nfirst ] unit-test diff --git a/extra/combinators/lib/lib.factor b/extra/combinators/lib/lib.factor index 3f49da7cb3..fe11fd1338 100644 --- a/extra/combinators/lib/lib.factor +++ b/extra/combinators/lib/lib.factor @@ -67,6 +67,12 @@ MACRO: napply ( n -- ) : map-with2 ( obj obj list quot -- newseq ) 2 map-withn ; inline +MACRO: nfirst ( n -- ) + [ [ swap nth ] curry [ keep ] curry ] map concat [ drop ] compose ; + +: seq>stack ( seq -- ) + dup length nfirst ; inline + ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : sigma ( seq quot -- n ) [ rot slip + ] curry 0 swap reduce ; From 529fa9259080ec99738a68853e9c44309d9d2731 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 23:56:30 -0600 Subject: [PATCH 165/285] Port random-tester --- extra/random-tester/databank/databank.factor | 11 ++ extra/random-tester/random-tester.factor | 45 +++++++ extra/random-tester/random/random.factor | 87 +++++++++++++ .../safe-words/safe-words.factor | 117 ++++++++++++++++++ extra/random-tester/utils/utils.factor | 95 ++++++++++++++ 5 files changed, 355 insertions(+) create mode 100644 extra/random-tester/databank/databank.factor create mode 100644 extra/random-tester/random-tester.factor create mode 100755 extra/random-tester/random/random.factor create mode 100644 extra/random-tester/safe-words/safe-words.factor create mode 100644 extra/random-tester/utils/utils.factor diff --git a/extra/random-tester/databank/databank.factor b/extra/random-tester/databank/databank.factor new file mode 100644 index 0000000000..45ee779372 --- /dev/null +++ b/extra/random-tester/databank/databank.factor @@ -0,0 +1,11 @@ +USING: kernel math.constants ; +IN: random-tester.databank + +: databank ( -- array ) + { + ! V{ } H{ } V{ 3 } { 3 } { } "" "asdf" + pi 1/0. -1/0. 0/0. [ ] + f t "" 0 0.0 3.14 2 -3 -7 20 3/4 -3/4 1.2/3 3.5 + C{ 2 2 } C{ 1/0. 1/0. } + } ; + diff --git a/extra/random-tester/random-tester.factor b/extra/random-tester/random-tester.factor new file mode 100644 index 0000000000..f8aa0f29b5 --- /dev/null +++ b/extra/random-tester/random-tester.factor @@ -0,0 +1,45 @@ +USING: compiler continuations io kernel math namespaces +prettyprint quotations random sequences vectors ; +USING: random-tester.databank random-tester.safe-words ; +IN: random-tester + +SYMBOL: errored +SYMBOL: before +SYMBOL: after +SYMBOL: quot +TUPLE: random-tester-error ; + +: setup-test ( #data #code -- data... quot ) + #! Variable stack effect + >r [ databank random ] times r> + [ drop \ safe-words get random ] map >quotation ; + +: test-compiler ! ( data... quot -- ... ) + errored off + dup quot set + datastack clone >vector dup pop* before set + [ call ] catch drop + datastack clone after set + clear + before get [ ] each + quot get [ compile-1 ] [ errored on ] recover ; + +: do-test ! ( data... quot -- ) + .s flush test-compiler + errored get [ + datastack after get 2dup = [ + 2drop + ] [ + [ . ] each + "--" print + [ . ] each + quot get . + random-tester-error construct-empty throw + ] if + ] unless clear ; + +: random-test1 ( #data #code -- ) + setup-test do-test ; + +: random-test2 ( -- ) + 3 2 setup-test do-test ; diff --git a/extra/random-tester/random/random.factor b/extra/random-tester/random/random.factor new file mode 100755 index 0000000000..da9a5c26d8 --- /dev/null +++ b/extra/random-tester/random/random.factor @@ -0,0 +1,87 @@ +USING: kernel math sequences namespaces errors hashtables words +arrays parser compiler syntax io tools prettyprint optimizer +inference ; +IN: random-tester + +! Tweak me +: max-length 15 ; inline +: max-value 1000000000 ; inline + +: 10% ( -- bool ) 10 random 8 > ; +: 20% ( -- bool ) 10 random 7 > ; +: 30% ( -- bool ) 10 random 6 > ; +: 40% ( -- bool ) 10 random 5 > ; +: 50% ( -- bool ) 10 random 4 > ; +: 60% ( -- bool ) 10 random 3 > ; +: 70% ( -- bool ) 10 random 2 > ; +: 80% ( -- bool ) 10 random 1 > ; +: 90% ( -- bool ) 10 random 0 > ; + +! varying bit-length random number +: random-bits ( n -- int ) + random 2 swap ^ random ; + +: random-seq ( -- seq ) + { [ ] { } V{ } "" } random + [ max-length random [ max-value random , ] times ] swap make ; + +: random-string + [ max-length random [ max-value random , ] times ] "" make ; + +SYMBOL: special-integers +[ { -1 0 1 } % most-negative-fixnum , most-positive-fixnum , first-bignum , ] +{ } make \ special-integers set-global +: special-integers ( -- seq ) \ special-integers get ; +SYMBOL: special-floats +[ { 0.0 -0.0 } % e , pi , 1./0. , -1./0. , 0./0. , epsilon , epsilon neg , ] +{ } make \ special-floats set-global +: special-floats ( -- seq ) \ special-floats get ; +SYMBOL: special-complexes +[ + { -1 0 1 i -i } % + e , e neg , pi , pi neg , + 0 pi rect> , 0 pi neg rect> , pi neg 0 rect> , pi pi rect> , + pi pi neg rect> , pi neg pi rect> , pi neg pi neg rect> , + e neg e neg rect> , e e rect> , +] { } make \ special-complexes set-global +: special-complexes ( -- seq ) \ special-complexes get ; + +: random-fixnum ( -- fixnum ) + most-positive-fixnum random 1+ coin-flip [ neg 1- ] when >fixnum ; + +: random-bignum ( -- bignum ) + 400 random-bits first-bignum + coin-flip [ neg ] when ; + +: random-integer ( -- n ) + coin-flip [ + random-fixnum + ] [ + coin-flip [ random-bignum ] [ special-integers random ] if + ] if ; + +: random-positive-integer ( -- int ) + random-integer dup 0 < [ + neg + ] [ + dup 0 = [ 1 + ] when + ] if ; + +: random-ratio ( -- ratio ) + 1000000000 dup [ random ] 2apply 1+ / coin-flip [ neg ] when dup [ drop random-ratio ] unless 10% [ drop 0 ] when ; + +: random-float ( -- float ) + coin-flip [ random-ratio ] [ special-floats random ] if + coin-flip + [ .0000000000000000001 /f ] [ coin-flip [ .00000000000000001 * ] when ] if + >float ; + +: random-number ( -- number ) + { + [ random-integer ] + [ random-ratio ] + [ random-float ] + } do-one ; + +: random-complex ( -- C ) + random-number random-number rect> ; + diff --git a/extra/random-tester/safe-words/safe-words.factor b/extra/random-tester/safe-words/safe-words.factor new file mode 100644 index 0000000000..9bc87a9c5a --- /dev/null +++ b/extra/random-tester/safe-words/safe-words.factor @@ -0,0 +1,117 @@ +USING: kernel namespaces sequences sorting vocabs ; +USING: arrays assocs generic hashtables math math.intervals math.parser math.functions refs shuffle vectors words ; +IN: random-tester.safe-words + +: ?-words + { + delegate + + /f + + bits>float bits>double + float>bits double>bits + + >bignum >boolean >fixnum >float + + array? integer? complex? value-ref? ref? key-ref? + interval? number? + wrapper? tuple? + [-1,1]? between? bignum? both? either? eq? equal? even? fixnum? float? fp-nan? hashtable? interval-contains? interval-subset? interval? key-ref? key? number? odd? pair? power-of-2? ratio? rational? real? subassoc? valid-digits? zero? assoc? curry? vector? callstack? ! clear 3.14 [ assoc? ] compile-1 + 2^ not + ! arrays + resize-array + ! assocs + (assoc-stack) + new-assoc + assoc-like + + all-integers? (all-integers?) ! hangs? + assoc-push-if + + (clone) assoc-clone-like ! SYMBOL: foo foo dup (clone) = + } ; + +: bignum-words + { + next-power-of-2 (next-power-of-2) + times + hashcode hashcode* + } ; + +: initialization-words + { + init-namespaces + } ; + +: stack-words + { + dup + drop 2drop 3drop + roll -roll 2swap + + >r r> + } ; + +: method-words + { + method-def + forget-word + } ; + +: stateful-words + { + counter + gensym + } ; + +: foo-words + { + set-retainstack + retainstack callstack + datastack + callstack>array + } ; + +: exit-words + { + call-clear die + } ; + +: bad-words ( -- array ) + [ + ?-words % + bignum-words % + initialization-words % + stack-words % + method-words % + stateful-words % + exit-words % + foo-words % + ] { } make ; + +: safe-words ( -- array ) + bad-words { + "alists" "arrays" "assocs" ! "bit-arrays" "byte-arrays" + ! "classes" "combinators" "compiler" "continuations" + ! "core-foundation" "definitions" "documents" + ! "float-arrays" "generic" "graphs" "growable" + "hashtables" ! io.* + "kernel" "math" + "math.bitfields" "math.complex" "math.constants" "math.floats" + "math.functions" "math.integers" "math.intervals" "math.libm" + "math.parser" "math.ratios" "math.vectors" + ! "namespaces" "quotations" "sbufs" + ! "queues" "strings" "sequences" + "vectors" + ! "words" + } [ words ] map concat seq-diff natural-sort ; + +safe-words \ safe-words set-global + +! foo dup (clone) = . +! foo dup clone = . +! f [ byte-array>bignum assoc-clone-like ] compile-1 +! 2 3.14 [ construct-empty number= ] compile-1 +! 3.14 [ assoc? ] compile-1 +! -3 [ ] 2 [ byte-array>bignum denominator ] compile-1 + diff --git a/extra/random-tester/utils/utils.factor b/extra/random-tester/utils/utils.factor new file mode 100644 index 0000000000..ef3d66ad2d --- /dev/null +++ b/extra/random-tester/utils/utils.factor @@ -0,0 +1,95 @@ +USING: arrays assocs combinators.lib continuations kernel +math math.functions namespaces quotations random sequences +sequences.private shuffle ; + +IN: random-tester.utils + +: %chance ( n -- ? ) + 100 random > ; + +: 10% ( -- ? ) 10 %chance ; +: 20% ( -- ? ) 20 %chance ; +: 30% ( -- ? ) 30 %chance ; +: 40% ( -- ? ) 40 %chance ; +: 50% ( -- ? ) 50 %chance ; +: 60% ( -- ? ) 60 %chance ; +: 70% ( -- ? ) 70 %chance ; +: 80% ( -- ? ) 80 %chance ; +: 90% ( -- ? ) 90 %chance ; + +: call-if ( quot ? -- ) [ call ] [ drop ] if ; inline + +: with-10% ( quot -- ) 10% call-if ; inline +: with-20% ( quot -- ) 20% call-if ; inline +: with-30% ( quot -- ) 30% call-if ; inline +: with-40% ( quot -- ) 40% call-if ; inline +: with-50% ( quot -- ) 50% call-if ; inline +: with-60% ( quot -- ) 60% call-if ; inline +: with-70% ( quot -- ) 70% call-if ; inline +: with-80% ( quot -- ) 80% call-if ; inline +: with-90% ( quot -- ) 90% call-if ; inline + +: random-hash-key keys random ; +: random-hash-value [ random-hash-key ] keep at ; + +: do-one ( seq -- ) random call ; inline + +TUPLE: p-list seq max count count-vec ; + +: reset-array ( seq -- ) + [ drop 0 ] over map-into ; + +C: p-list + +: make-p-list ( seq n -- tuple ) + >r dup length [ 1- ] keep r> + [ ^ 0 swap 2array ] keep + 0 ; + +: inc-seq ( seq max -- ) + 2dup [ < ] curry find-last over [ + nipd 1+ 2over swap set-nth + 1+ over length rot reset-array + ] [ + 3drop reset-array + ] if ; + +: inc-count ( tuple -- ) + [ p-list-count first2 >r 1+ r> 2array ] keep + set-p-list-count ; + +: (get-permutation) ( seq index-seq -- newseq ) + [ swap nth ] map-with ; + +: get-permutation ( tuple -- seq ) + [ p-list-seq ] keep p-list-count-vec (get-permutation) ; + +: p-list-next ( tuple -- seq/f ) + dup p-list-count first2 < [ + [ + [ get-permutation ] keep + [ p-list-count-vec ] keep p-list-max + inc-seq + ] keep inc-count + ] [ + drop f + ] if ; + +: (permutations) ( tuple -- ) + dup p-list-next [ , (permutations) ] [ drop ] if* ; + +: permutations ( seq n -- seq ) + make-p-list [ (permutations) ] { } make ; + +: (each-permutation) ( tuple quot -- ) + over p-list-next [ + [ rot drop swap call ] 3keep + drop (each-permutation) + ] [ + 2drop + ] if* ; inline + +: each-permutation ( seq n quot -- ) + >r make-p-list r> (each-permutation) ; + + From 5f900497d0c04e4c4ba16510cd182d32b67b5cd8 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 3 Dec 2007 23:57:09 -0600 Subject: [PATCH 166/285] Remove random-tester from unmaintained --- unmaintained/random-tester/load.factor | 9 - .../random-tester/random-tester.factor | 301 ------------------ .../random-tester/random-tester2.factor | 186 ----------- unmaintained/random-tester/random.factor | 87 ----- unmaintained/random-tester/type.factor | 218 ------------- unmaintained/random-tester/utils.factor | 77 ----- 6 files changed, 878 deletions(-) delete mode 100644 unmaintained/random-tester/load.factor delete mode 100644 unmaintained/random-tester/random-tester.factor delete mode 100644 unmaintained/random-tester/random-tester2.factor delete mode 100644 unmaintained/random-tester/random.factor delete mode 100644 unmaintained/random-tester/type.factor delete mode 100644 unmaintained/random-tester/utils.factor diff --git a/unmaintained/random-tester/load.factor b/unmaintained/random-tester/load.factor deleted file mode 100644 index ba69545e3b..0000000000 --- a/unmaintained/random-tester/load.factor +++ /dev/null @@ -1,9 +0,0 @@ -REQUIRES: libs/lazy-lists libs/null-stream libs/shuffle ; -PROVIDE: apps/random-tester -{ +files+ { - "utils.factor" - "random.factor" - "random-tester.factor" - "random-tester2.factor" - "type.factor" -} } ; diff --git a/unmaintained/random-tester/random-tester.factor b/unmaintained/random-tester/random-tester.factor deleted file mode 100644 index 649ca9d345..0000000000 --- a/unmaintained/random-tester/random-tester.factor +++ /dev/null @@ -1,301 +0,0 @@ -USING: kernel math math-internals memory sequences namespaces errors -assocs words arrays parser compiler syntax io -quotations tools prettyprint optimizer inference ; -IN: random-tester - -! n-foo>bar -- list of words of type 'foo' that take n parameters -! and output a 'bar' - - -! Math vocabulary words -: 1-x>y - { - 1+ 1- >bignum >digit >fixnum abs absq arg - bitnot bits>double bits>float ceiling cis conjugate cos cosec cosech - cosh cot coth denominator double>bits exp float>bits floor imaginary - log neg numerator real sec ! next-power-of-2 - sech sgn sin sinh sq sqrt tan tanh truncate - } ; - -: 1-x>y-throws - { - recip log2 - asec asech acot acoth acosec acosech acos acosh asin asinh atan atanh - } ; - -: 2-x>y ( -- seq ) { * + - /f max min polar> bitand bitor bitxor align } ; -: 2-x>y-throws ( -- seq ) { / /i mod rem } ; - -: 1-integer>x - { - 1+ 1- >bignum >digit >fixnum abs absq arg - bitnot bits>double bits>float ceiling cis conjugate cos cosec cosech - cosh cot coth denominator exp floor imaginary - log neg next-power-of-2 numerator real sec - sech sgn sin sinh sq sqrt tan tanh truncate - } ; - -: 1-ratio>x - { - 1+ 1- >bignum >digit >fixnum abs absq arg ceiling - cis conjugate cos cosec cosech - cosh cot coth exp floor imaginary - log neg next-power-of-2 real sec - sech sgn sin sinh sq sqrt tan tanh truncate - } ; - -: 1-float>x ( -- seq ) - { - 1+ 1- >bignum >digit >fixnum abs absq arg - ceiling cis conjugate cos cosec cosech - cosh cot coth double>bits exp float>bits floor imaginary - log neg real sec ! next-power-of-2 - sech sgn sin sinh sq sqrt tan tanh truncate - } ; - -: 1-complex>x - { - 1+ 1- abs absq arg conjugate cos cosec cosech - cosh cot coth exp imaginary log neg real - sec sech sin sinh sq sqrt tan tanh - } ; - -: 1-integer>x-throws - { - recip log2 - asec asech acot acoth acosec acosech acos acosh asin asinh atan atanh - } ; - -: 1-ratio>x-throws - { - recip - asec asech acot acoth acosec acosech acos acosh asin asinh atan atanh - } ; - -: 1-integer>integer - { - 1+ 1- >bignum >digit >fixnum abs absq bitnot ceiling conjugate - denominator floor imaginary - neg next-power-of-2 numerator real sgn sq truncate - } ; - -: 1-ratio>ratio - { 1+ 1- >digit abs absq conjugate neg real sq } ; - -: 1-float>float - { - 1+ 1- >digit abs absq arg ceiling - conjugate exp floor neg real sq truncate - } ; - -: 1-complex>complex - { - 1+ 1- abs absq arg conjugate cosec cosech cosh cot coth exp log - neg sech sin sinh sq sqrt tanh - } ; - -: 2-integer>x { * + - /f max min polar> bitand bitor bitxor align } ; -: 2-ratio>x { * + - /f max min polar> } ; -: 2-float>x { float+ float- float* float/f + - * /f max min polar> } ; -: 2-complex>x { * + - /f } ; - -: 2-integer>integer { * + - max min bitand bitor bitxor align } ; -: 2-ratio>ratio { * + - max min } ; -: 2-float>float { float* float+ float- float/f max min /f + - } ; -: 2-complex>complex { * + - /f } ; - - -SYMBOL: last-quot -SYMBOL: first-arg -SYMBOL: second-arg -: 0-runtime-check ( quot -- ) - #! Checks the runtime only, not the compiler - #! Evaluates the quotation twice and makes sure the results agree - [ last-quot set ] keep - [ call ] keep - call - ! 2dup swap unparse write " " write unparse print flush - = [ last-quot get . "problem in runtime" throw ] unless ; - -: 1-runtime-check ( quot -- ) - #! Checks the runtime only, not the compiler - #! Evaluates the quotation twice and makes sure the results agree - #! For quotations that are given one argument - [ last-quot set first-arg set ] 2keep - [ call ] 2keep - call - 2dup swap unparse write " " write unparse print flush - = [ "problem in runtime" throw ] unless ; - -: 1-interpreted-vs-compiled-check ( x quot -- ) - #! Checks the runtime output vs the compiler output - #! quot: ( x -- y ) - 2dup swap unparse write " " write . flush - [ last-quot set first-arg set ] 2keep - [ call ] 2keep compile-1 - 2dup swap unparse write " " write unparse print flush - = [ "problem in math1" throw ] unless ; - -: 2-interpreted-vs-compiled-check ( x y quot -- ) - #! Checks the runtime output vs the compiler output - #! quot: ( x y -- z ) - .s flush - [ last-quot set first-arg set second-arg set ] 3keep - [ call ] 3keep compile-1 - 2dup swap unparse write " " write unparse print flush - = [ "problem in math2" throw ] unless ; - -: 0-interpreted-vs-compiled-check-catch ( quot -- ) - #! Check the runtime output vs the compiler output for words that throw - #! - dup . - [ last-quot set ] keep - [ catch [ "caught: " write dup print-error ] when* ] keep - [ compile-1 ] catch [ nip "caught: " write dup print-error ] when* - = [ "problem in math3" throw ] unless ; - -: 1-interpreted-vs-compiled-check-catch ( quot -- ) - #! Check the runtime output vs the compiler output for words that throw - 2dup swap unparse write " " write . - ! "." write - [ last-quot set first-arg set ] 2keep - [ catch [ nip "caught: " write dup print-error ] when* ] 2keep - [ compile-1 ] catch [ 2nip "caught: " write dup print-error ] when* - = [ "problem in math4" throw ] unless ; - -: 2-interpreted-vs-compiled-check-catch ( quot -- ) - #! Check the runtime output vs the compiler output for words that throw - ! 3dup rot unparse write " " write swap unparse write " " write . - "." write - [ last-quot set first-arg set second-arg set ] 3keep - [ catch [ 2nip "caught: " write dup print-error ] when* ] 3keep - [ compile-1 ] catch [ 2nip nip "caught: " write dup print-error ] when* - = [ "problem in math5" throw ] unless ; - - -! RANDOM QUOTATIONS TO TEST -: random-1-integer>x-quot ( -- quot ) 1-integer>x random 1quotation ; -: random-1-ratio>x-quot ( -- quot ) 1-ratio>x random 1quotation ; -: random-1-float>x-quot ( -- quot ) 1-float>x random 1quotation ; -: random-1-complex>x-quot ( -- quot ) 1-complex>x random 1quotation ; - -: test-1-integer>x ( -- ) - random-integer random-1-integer>x-quot 1-interpreted-vs-compiled-check ; -: test-1-ratio>x ( -- ) - random-ratio random-1-ratio>x-quot 1-interpreted-vs-compiled-check ; -: test-1-float>x ( -- ) - random-float random-1-float>x-quot 1-interpreted-vs-compiled-check ; -: test-1-complex>x ( -- ) - random-complex random-1-complex>x-quot 1-interpreted-vs-compiled-check ; - - -: random-1-float>float-quot ( -- obj ) 1-float>float random 1quotation ; -: random-2-float>float-quot ( -- obj ) 2-float>float random 1quotation ; -: nrandom-2-float>float-quot ( -- obj ) - [ - 5 - [ - { - [ 2-float>float random , random-float , ] - [ 1-float>float random , ] - } do-one - ] times - 2-float>float random , - ] [ ] make ; - -: test-1-float>float ( -- ) - random-float random-1-float>float-quot 1-interpreted-vs-compiled-check ; -: test-2-float>float ( -- ) - random-float random-float random-2-float>float-quot - 2-interpreted-vs-compiled-check ; - -: test-n-2-float>float ( -- ) - random-float random-float nrandom-2-float>float-quot - 2-interpreted-vs-compiled-check ; - -: test-1-integer>x-runtime ( -- ) - random-integer random-1-integer>x-quot 1-runtime-check ; - -: random-1-integer>x-throws-quot ( -- obj ) 1-integer>x-throws random 1quotation ; -: random-1-ratio>x-throws-quot ( -- obj ) 1-ratio>x-throws random 1quotation ; -: test-1-integer>x-throws ( -- obj ) - random-integer random-1-integer>x-throws-quot - 1-interpreted-vs-compiled-check-catch ; -: test-1-ratio>x-throws ( -- obj ) - random-ratio random-1-ratio>x-throws-quot - 1-interpreted-vs-compiled-check-catch ; - - - -: test-2-integer>x-throws ( -- ) - [ - random-integer , random-integer , - 2-x>y-throws random , - ] [ ] make 2-interpreted-vs-compiled-check-catch ; - -! : test-^-ratio ( -- ) - ! [ - ! random-ratio , random-ratio , \ ^ , - ! ] [ ] make interp-compile-check-catch ; - -: test-0-float?-when - [ - random-number , \ dup , \ float? , 1-float>x random 1quotation , \ when , - ] [ ] make 0-runtime-check ; - -: test-1-integer?-when - random-integer [ - \ dup , \ integer? , 1-integer>x random 1quotation , \ when , - ] [ ] make 1-interpreted-vs-compiled-check ; - -: test-1-ratio?-when - random-ratio [ - \ dup , \ ratio? , 1-ratio>x random 1quotation , \ when , - ] [ ] make 1-interpreted-vs-compiled-check ; - -: test-1-float?-when - random-float [ - \ dup , \ float? , 1-float>x random 1quotation , \ when , - ] [ ] make 1-interpreted-vs-compiled-check ; - -: test-1-complex?-when - random-complex [ - \ dup , \ complex? , 1-complex>x random 1quotation , \ when , - ] [ ] make 1-interpreted-vs-compiled-check ; - - -: many-word-test ( -- ) - #! defines words a1000 down to a0, which does a trivial addition - "random-tester-scratchpad" vocabularies get delete-at - "random-tester-scratchpad" set-in - "a0" "random-tester-scratchpad" create [ 1 1 + ] define-compound - 100 [ - [ 1+ "a" swap unparse append "random-tester-scratchpad" create ] keep - "a" swap unparse append [ parse ] catch [ :1 ] when define-compound - ] each ; - -: compile-loop ( -- ) - 10 [ many-word-test "a100" parse first compile ] times ; - -: random-test - "----" print - { - test-1-integer>x - test-1-ratio>x - test-1-float>x - test-1-complex>x - test-1-integer>x-throws - test-1-ratio>x-throws - test-1-float>float - test-2-float>float - ! test-n-2-float>float - test-1-integer>x-runtime - ! test-0-float?-when - test-1-integer?-when - test-1-ratio?-when - test-1-float?-when - test-1-complex?-when - ! full-gc - ! code-gc - } random dup . execute nl ; - diff --git a/unmaintained/random-tester/random-tester2.factor b/unmaintained/random-tester/random-tester2.factor deleted file mode 100644 index 8a49830f12..0000000000 --- a/unmaintained/random-tester/random-tester2.factor +++ /dev/null @@ -1,186 +0,0 @@ -USING: compiler errors inference interpreter io kernel math -memory namespaces prettyprint random-tester sequences tools -quotations words arrays definitions generic graphs -hashtables byte-arrays assocs network ; -IN: random-tester2 - -: dangerous-words ( -- array ) - { - die - set-walker-hook exit - >r r> ndrop - - set-callstack set-word set-word-prop - set-catchstack set-namestack set-retainstack - set-continuation-retain continuation-catch - set-continuation-name catchstack retainstack - set-no-math-method-generic - set-no-math-method-right - set-check-method-class - set-check-create-name - set-pathname-string - set-check-create-vocab - set-check-method-generic - check-create? - reset-generic forget-class - create forget-word forget-vocab forget - forget-methods forget-predicate - remove-word-prop empty-method - continue-with - - define-compound define make-generic - define-method define-predicate-class - define-tuple-class define-temp define-tuple-slots - define-writer define-predicate define-generic - (define-union-class) - define-declared define-class - define-union-class define-inline - ?make-generic define-reader define-slot define-slots - define-typecheck define-slot-word define-union-class - define-simple-generic with-methods define-constructor - predicate-word condition-continuation define-symbol - tuple-predicate (sort-classes) - - stdio - close readln read1 read read-until - stream-read stream-readln stream-read1 lines - contents stream-copy stream-flush - lines-loop - stream-format set-line-reader-cr - - - style-stream default-constructor - init-namespaces plain-writer - - with-datastack datastack-underflow. - (delegates) simple-slot , # % - continue-with set-delegate - callcc0 callcc1 - - :r :s :c - - (next-power-of-2) (^) d>w/w w>h/h millis - (random) ^n integer, first-bignum - most-positive-fixnum ^ init-random next-power-of-2 - most-negative-fixnum - - clear-assoc build-graph - - set-word-def set-word-name - set-word-props - set set-axis set-delegate set-global set-restart-obj - - - - gensym random - - double>bits float>bits >bignum - - class-predicates delete (delete) memq? - prune join concat group at+ - normalize norm vneg vmax vmin v- v+ [v-] - times repeat (repeat) - supremum infimum at norm-sq - product sum curry remove-all member? subseq? - - ! O(n) on bignums - (add-vertex) (prune) (split) digits>integer - substitute ?head ?tail add-vertex all? base> closure - drop-prefix - find-last-sep format-column head? index index* - last-index mismatch push-new remove-vertex reset-props - seq-quot-uses sequence= split split, split1 start - start* string-lines string>integer tail? v. - - stack-picture - - ! allot crashes - at+ natural-sort - - # % (delegates) +@ , . .s - be> bin> callstack changed-word - changed-words continue-with counter dec - global - hex> inc le> namespace namestack nest oct> off - on parent-dir path+ - simple-slot simple-slots string>number tabular-output - unxref-word xref-word xref-words vocabularies - with-datastack - - bind if-graph ! 0 >n ! GCs - - move-backward move-forward open-slice (open-slice) ! infinite loop - (assoc-stack) ! infinite loop - - case ! 100000000000 t case ! takes a long time - } ; - -: safe-words ( -- array ) - dangerous-words { - "arrays" "assocs" "bit-arrays" "byte-arrays" - "errors" "generic" "graphs" "hashtables" "io" - "kernel" "math" "namespaces" "quotations" "sbufs" - "queues" "strings" "sequences" "vectors" "words" - } [ words ] map concat seq-diff natural-sort ; - -safe-words \ safe-words set-global - -: databank ( -- array ) - { - ! V{ } H{ } V{ 3 } { 3 } { } "" "asdf" - pi 1/0. -1/0. 0/0. [ ] - f t "" 0 0.0 3.14 2 -3 -7 20 3/4 -3/4 1.2/3 3.5 - C{ 2 2 } C{ 1/0. 1/0. } - } ; - -: setup-test ( #data #code -- data... quot ) - #! variable stack effect - >r [ databank random ] times r> - [ drop \ safe-words get random ] map >quotation ; - -SYMBOL: before -SYMBOL: after -SYMBOL: quot -SYMBOL: err -err off - -: test-compiler ( data... quot -- ... ) - err off - dup quot set - datastack clone dup pop* before set - [ call ] catch drop datastack clone after set - clear - before get [ ] each - quot get [ compile-1 ] [ err on ] recover ; - -: do-test ( data... quot -- ) - .s flush test-compiler - err get [ - datastack after get 2dup = [ - 2drop - ] [ - [ . ] each - "--" print [ . ] each quot get . - "not =" throw - ] if - ] unless - clear ; - -: random-test* ( #data #code -- ) - setup-test do-test ; - -: run-random-tester2 - 100000000000000 [ 6 3 random-test* ] times ; - - -! A worthwhile test that has not been run extensively - -1000 [ drop gensym ] map "syms" set-global - -: fooify-test - "syms" get-global random - 2000 random >quotation - over set-word-def - 100 random zero? [ code-gc ] when - compile fooify-test ; - diff --git a/unmaintained/random-tester/random.factor b/unmaintained/random-tester/random.factor deleted file mode 100644 index da9a5c26d8..0000000000 --- a/unmaintained/random-tester/random.factor +++ /dev/null @@ -1,87 +0,0 @@ -USING: kernel math sequences namespaces errors hashtables words -arrays parser compiler syntax io tools prettyprint optimizer -inference ; -IN: random-tester - -! Tweak me -: max-length 15 ; inline -: max-value 1000000000 ; inline - -: 10% ( -- bool ) 10 random 8 > ; -: 20% ( -- bool ) 10 random 7 > ; -: 30% ( -- bool ) 10 random 6 > ; -: 40% ( -- bool ) 10 random 5 > ; -: 50% ( -- bool ) 10 random 4 > ; -: 60% ( -- bool ) 10 random 3 > ; -: 70% ( -- bool ) 10 random 2 > ; -: 80% ( -- bool ) 10 random 1 > ; -: 90% ( -- bool ) 10 random 0 > ; - -! varying bit-length random number -: random-bits ( n -- int ) - random 2 swap ^ random ; - -: random-seq ( -- seq ) - { [ ] { } V{ } "" } random - [ max-length random [ max-value random , ] times ] swap make ; - -: random-string - [ max-length random [ max-value random , ] times ] "" make ; - -SYMBOL: special-integers -[ { -1 0 1 } % most-negative-fixnum , most-positive-fixnum , first-bignum , ] -{ } make \ special-integers set-global -: special-integers ( -- seq ) \ special-integers get ; -SYMBOL: special-floats -[ { 0.0 -0.0 } % e , pi , 1./0. , -1./0. , 0./0. , epsilon , epsilon neg , ] -{ } make \ special-floats set-global -: special-floats ( -- seq ) \ special-floats get ; -SYMBOL: special-complexes -[ - { -1 0 1 i -i } % - e , e neg , pi , pi neg , - 0 pi rect> , 0 pi neg rect> , pi neg 0 rect> , pi pi rect> , - pi pi neg rect> , pi neg pi rect> , pi neg pi neg rect> , - e neg e neg rect> , e e rect> , -] { } make \ special-complexes set-global -: special-complexes ( -- seq ) \ special-complexes get ; - -: random-fixnum ( -- fixnum ) - most-positive-fixnum random 1+ coin-flip [ neg 1- ] when >fixnum ; - -: random-bignum ( -- bignum ) - 400 random-bits first-bignum + coin-flip [ neg ] when ; - -: random-integer ( -- n ) - coin-flip [ - random-fixnum - ] [ - coin-flip [ random-bignum ] [ special-integers random ] if - ] if ; - -: random-positive-integer ( -- int ) - random-integer dup 0 < [ - neg - ] [ - dup 0 = [ 1 + ] when - ] if ; - -: random-ratio ( -- ratio ) - 1000000000 dup [ random ] 2apply 1+ / coin-flip [ neg ] when dup [ drop random-ratio ] unless 10% [ drop 0 ] when ; - -: random-float ( -- float ) - coin-flip [ random-ratio ] [ special-floats random ] if - coin-flip - [ .0000000000000000001 /f ] [ coin-flip [ .00000000000000001 * ] when ] if - >float ; - -: random-number ( -- number ) - { - [ random-integer ] - [ random-ratio ] - [ random-float ] - } do-one ; - -: random-complex ( -- C ) - random-number random-number rect> ; - diff --git a/unmaintained/random-tester/type.factor b/unmaintained/random-tester/type.factor deleted file mode 100644 index bda0284c47..0000000000 --- a/unmaintained/random-tester/type.factor +++ /dev/null @@ -1,218 +0,0 @@ -USING: arrays errors generic hashtables io kernel lazy-lists math -memory modules namespaces null-stream prettyprint random-tester2 -quotations sequences strings -tools vectors words ; -IN: random-tester - -: inert ; -TUPLE: inert-object ; - -: inputs ( -- seq ) - { - 0 -1 -1000000000000000000000000 2 - inert - -29/2 - 1000000000000000000000000000000/1111111111111111111111111111111111 - 3/4 - -1000000000000000000000000/111111111111111111 - -3.14 1/0. 0.0 -1/0. 3.14 0/0. - 20102101010100110110 - C{ 1 -1 } - W{ 55 } - { } - f t - "" - "asdf" - [ ] - ! DLL" libm.dylib" - ! ALIEN: 1 - T{ inert-object f } - } - [ - H{ { 1 2 } { "asdf" "foo" } } clone , - H{ } clone , - V{ 1 0 65536 } clone , - V{ } clone , - SBUF" " clone , - B{ } clone , - ?{ } clone , - ] { } make append ; - -TUPLE: success quot inputs outputs input-types output-types ; - -SYMBOL: err -SYMBOL: last-time -SYMBOL: quot -SYMBOL: output -SYMBOL: input -SYMBOL: silent -t silent set-global - -: test-quot ( input quot -- success/f ) - ! 2dup swap . . flush - ! dup [ hash+ ] = [ 2dup . . flush ] when - err off - quot set input set - silent get [ - quot get last-time get = [ - quot get - dup . flush - last-time set - ] unless - ] unless - [ - clear - input get >vector set-datastack quot get - [ [ [ call ] { } make drop ] with-null-stream ] - [ err on ] recover - datastack clone output set - ] with-saved-datastack - err get [ - f - ] [ - quot get input get output get - 2dup [ [ type ] map ] 2apply - ] if ; - -: test-inputs ( word -- seq ) - [ - [ word-input-count inputs swap ] keep - 1quotation [ - test-quot [ , ] when* - ] curry each-permutation - ] { } make ; - -: >types ( quot -- seq ) - map concat prune natural-sort ; - -: >output-types ( seq -- seq ) - #! input seq is the result of test-inputs - [ success-output-types ] >types ; - -: >input-types ( seq -- seq ) - #! input seq is the result of test-inputs - [ success-input-types ] >types ; - -TUPLE: typed quot inputs outputs ; - -: successes>typed ( seq -- typed ) - dup empty? [ - drop f { } clone { } clone - ] [ - [ first success-quot ] keep - [ >input-types ] keep >output-types - ] if ; - -: word>type-check ( word -- tuple ) - [ - dup test-inputs - successes>typed , - ] curry [ with-saved-datastack ] { } make first ; - -: type>name ( n -- string ) - dup integer? [ - { - "fixnum" - "bignum" - "word" - "obj" - "ratio" - "float" - "complex" - "wrapper" - "array" - "boolean" - "hashtable" - "vector" - "string" - "sbuf" - "quotation" - "dll" - "alien" - "tuple" - } nth - ] when ; - -: replace-subseqs ( seq new old -- seq ) - [ - swapd split1 [ append swap add ] [ nip ] if* - ] 2each ; - -: type-array>name ( seq -- seq ) - { - { "object" { 0 1 2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 } } - { "seq3" { 0 1 8 9 11 12 13 14 } } - { "seq2" { 0 8 9 11 12 13 14 } } - { "seq" { 8 9 11 12 13 14 } } - { "number" { 0 1 4 5 6 } } - { "real" { 0 1 4 5 } } - { "rational" { 0 1 4 } } - { "integer" { 0 1 } } - { "float/complex" { 5 6 } } - { "word/f" { 2 9 } } - } flip first2 replace-subseqs [ type>name ] map ; - -: buggy? - [ word>type-check ] catch [ - drop f - ] [ - 2array [ [ type-array>name ] map ] map - [ [ length 1 = ] all? ] all? not - ] if ; - -: variable-stack-effect? - [ word>type-check ] catch nip ; - -: find-words ( quot -- seq ) - \ safe-words get - [ - word-input-count 3 <= - ] subset swap subset ; - -: find-safe ( -- seq ) [ buggy? not ] find-words ; - -: find-buggy ( -- seq ) [ buggy? ] find-words ; - -: test-word ( output input word -- ? ) - 1quotation test-quot dup [ - success-outputs sequence= - ] [ - nip - ] if ; - -: word-finder ( inputs outputs -- seq ) - swap safe-words - [ >r 2dup r> test-word ] subset 2nip ; - -: (enumeration-test) - [ - [ stack-effect effect-in length ] catch [ 4 < ] unless - ] subset [ [ test-inputs successes>typed , ] each ] { } make ; - -! full-gc finds corrupted memory faster - -: enumeration-test ( -- seq ) - [ - \ safe-words get - f silent set - (enumeration-test) - ] with-scope ; - -: array>all-quots ( seq n -- seq ) - [ - [ 1+ [ >quotation , ] each-permutation ] each-with - ] { } make ; - -: array>all ( seq n -- seq ) - dupd array>all-quots append ; - -: quot-finder ( inputs outputs -- seq ) - swap safe-words 2 array>all - [ - 3 [ >quotation >r 2dup r> [ test-quot ] keep - swap [ , ] [ drop ] if ] each-permutation - ] { } make ; - -: word-frequency ( -- alist ) - all-words [ dup usage length 2array ] map sort-values ; - diff --git a/unmaintained/random-tester/utils.factor b/unmaintained/random-tester/utils.factor deleted file mode 100644 index e699d53f22..0000000000 --- a/unmaintained/random-tester/utils.factor +++ /dev/null @@ -1,77 +0,0 @@ -USING: generic kernel math sequences namespaces errors -assocs words arrays parser compiler syntax io -quotations optimizer inference shuffle tools prettyprint ; -IN: random-tester - -: word-input-count ( word -- n ) - [ stack-effect effect-in length ] [ 2drop 0 ] recover ; - -: type-error? ( exception -- ? ) - [ swap execute or ] curry - >r { no-method? no-math-method? } f r> reduce ; - -! HASHTABLES -: random-hash-entry ( hash -- key value ) - [ keys random dup ] keep at ; - -: coin-flip ( -- bool ) 2 random zero? ; -: do-one ( seq -- ) random call ; inline - -: nzero-array ( seq -- ) - dup length >r 0 r> [ pick set-nth ] each-with drop ; - -: zero-array ( n -- seq ) [ drop 0 ] map ; - -TUPLE: p-list seq max count count-vec ; -: make-p-list ( seq n -- tuple ) - >r dup length [ 1- ] keep r> - [ ^ 0 swap 2array ] keep - zero-array ; - -: inc-seq ( seq max -- ) - 2dup [ < ] curry find-last over -1 = [ - 3drop nzero-array - ] [ - nipd 1+ 2over swap set-nth - 1+ over length rot nzero-array - ] if ; - -: inc-count ( tuple -- ) - [ p-list-count first2 >r 1+ r> 2array ] keep - set-p-list-count ; - -: get-permutation ( tuple -- seq ) - [ p-list-seq ] keep p-list-count-vec [ swap nth ] map-with ; - -: p-list-next ( tuple -- seq/f ) - dup p-list-count first2 < [ - [ - [ get-permutation ] keep - [ p-list-count-vec ] keep p-list-max - inc-seq - ] keep inc-count - ] [ - drop f - ] if ; - -: (permutations) ( tuple -- ) - dup p-list-next [ , (permutations) ] [ drop ] if* ; - -: permutations ( seq n -- seq ) - make-p-list [ (permutations) ] { } make ; - -: (each-permutation) ( tuple quot -- ) - over p-list-next [ - [ rot drop swap call ] 3keep - drop (each-permutation) - ] [ - 2drop - ] if* ; inline - -: each-permutation ( seq n quot -- ) - >r make-p-list r> (each-permutation) ; - -SYMBOL: saved-datastack -: with-saved-datastack - >r datastack saved-datastack set r> call - saved-datastack get set-datastack ; inline From 142bc22e006098dcd764ec02bf3d301c1cde9a85 Mon Sep 17 00:00:00 2001 From: Aaron Schaefer Date: Tue, 4 Dec 2007 01:05:41 -0500 Subject: [PATCH 167/285] Add edit-hook for EditPlus editor support --- extra/editors/editplus/authors.txt | 1 + extra/editors/editplus/editplus.factor | 12 ++++++++++++ extra/editors/editplus/summary.txt | 1 + 3 files changed, 14 insertions(+) create mode 100644 extra/editors/editplus/authors.txt create mode 100644 extra/editors/editplus/editplus.factor create mode 100644 extra/editors/editplus/summary.txt diff --git a/extra/editors/editplus/authors.txt b/extra/editors/editplus/authors.txt new file mode 100644 index 0000000000..4eec9c9a08 --- /dev/null +++ b/extra/editors/editplus/authors.txt @@ -0,0 +1 @@ +Aaron Schaefer diff --git a/extra/editors/editplus/editplus.factor b/extra/editors/editplus/editplus.factor new file mode 100644 index 0000000000..e47ca257ca --- /dev/null +++ b/extra/editors/editplus/editplus.factor @@ -0,0 +1,12 @@ +USING: editors io.launcher math.parser namespaces ; +IN: editors.editplus + +: editplus ( file line -- ) + [ + \ editplus get-global % " -cursor " % # " " % % + ] "" make run-detached ; + +! Put in your .factor-boot-rc +! "c:\\Program Files\\EditPlus\\editplus.exe" \ editplus set-global + +[ editplus ] edit-hook set-global diff --git a/extra/editors/editplus/summary.txt b/extra/editors/editplus/summary.txt new file mode 100644 index 0000000000..9a696c2f0f --- /dev/null +++ b/extra/editors/editplus/summary.txt @@ -0,0 +1 @@ +EditPlus editor integration From 4a855cc8e64a3f4bd2a61d89e883d70728c2fd41 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 00:14:52 -0600 Subject: [PATCH 168/285] Add rlwrap to the programs to install --- misc/factor.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/factor.sh b/misc/factor.sh index 7511b3d83d..dfea2415f3 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -250,7 +250,7 @@ update() { } install_libraries() { - sudo apt-get install libc6-dev libfreetype6-dev wget git-core git-doc libx11-dev glutg3-dev + sudo apt-get install libc6-dev libfreetype6-dev wget git-core git-doc libx11-dev glutg3-dev rlwrap } case "$1" in From ac364e6e04b476108b1a32ef1c8b9ea8c6ec4574 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 13:44:46 -0600 Subject: [PATCH 169/285] Add quick-update to misc/factor.sh --- misc/factor.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/misc/factor.sh b/misc/factor.sh index dfea2415f3..def1126360 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -221,7 +221,7 @@ bootstrap() { } usage() { - echo "usage: $0 install|install-x11|update" + echo "usage: $0 install|install-x11|update|quick-update" } install() { @@ -244,11 +244,18 @@ update() { git_pull_factorcode make_clean make_factor +} + +update_bootstrap() { delete_boot_images get_boot_image bootstrap } +refresh_image() { + ./factor-nt -e="refresh-all save 0 USE: system exit" +} + install_libraries() { sudo apt-get install libc6-dev libfreetype6-dev wget git-core git-doc libx11-dev glutg3-dev rlwrap } @@ -256,6 +263,7 @@ install_libraries() { case "$1" in install) install ;; install-x11) install_libraries; install ;; - update) update ;; + quick-update) update; refresh_image;; + update) update; update_bootstrap ;; *) usage ;; esac From 9448d956a49c7b92225c807266a48e2ef9e17f7b Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:02:07 -0600 Subject: [PATCH 170/285] More error checking in misc/factor.sh --- misc/factor.sh | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/misc/factor.sh b/misc/factor.sh index def1126360..616119dd61 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -32,12 +32,16 @@ check_ret() { } check_gcc_version() { + echo -n "Checking gcc version..." GCC_VERSION=`gcc --version` + check_ret gcc if [[ $GCC_VERSION == *3.3.* ]] ; then + echo "bad!" echo "You have a known buggy version of gcc (3.3)" echo "Install gcc 3.4 or higher and try again." exit 3 fi + echo "ok." } check_installed_programs() { @@ -53,16 +57,20 @@ check_installed_programs() { check_library_exists() { GCC_TEST=factor-library-test.c GCC_OUT=factor-library-test.out - echo "Checking for library $1" + echo -n "Checking for library $1" echo "int main(){return 0;}" > $GCC_TEST gcc $GCC_TEST -o $GCC_OUT -l $1 if [[ $? -ne 0 ]] ; then + echo "not found!" echo "Warning: library $1 not found." echo "***Factor will compile NO_UI=1" NO_UI=1 fi rm -f $GCC_TEST + check_ret rm rm -f $GCC_OUT + check_ret rm + echo "found." } check_X11_libraries() { @@ -87,7 +95,9 @@ check_factor_exists() { } find_os() { + echo "Finding OS..." uname_s=`uname -s` + check_ret uname case $uname_s in CYGWIN_NT-5.2-WOW64) OS=windows-nt;; *CYGWIN_NT*) OS=windows-nt;; @@ -100,7 +110,9 @@ find_os() { } find_architecture() { + echo "Finding ARCH..." uname_m=`uname -m` + check_ret uname case $uname_m in i386) ARCH=x86;; i686) ARCH=x86;; @@ -116,6 +128,7 @@ write_test_program() { } find_word_size() { + echo "Finding WORD..." C_WORD=factor-word-size write_test_program gcc -o $C_WORD $C_WORD.c @@ -208,11 +221,11 @@ get_boot_image() { maybe_download_dlls() { if [[ $OS == windows-nt ]] ; then wget http://factorcode.org/dlls/freetype6.dll - check_ret + check_ret wget wget http://factorcode.org/dlls/zlib1.dll - check_ret + check_ret wget chmod 777 *.dll - check_ret + check_ret chmod fi } @@ -253,7 +266,7 @@ update_bootstrap() { } refresh_image() { - ./factor-nt -e="refresh-all save 0 USE: system exit" + ./$FACTOR_BINARY -e="refresh-all save 0 USE: system exit" } install_libraries() { @@ -263,7 +276,7 @@ install_libraries() { case "$1" in install) install ;; install-x11) install_libraries; install ;; - quick-update) update; refresh_image;; + quick-update) update; refresh_image ;; update) update; update_bootstrap ;; *) usage ;; esac From e2acf8c3865389cbe396d2372da5ef7d6e708870 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:14:07 -0600 Subject: [PATCH 171/285] Rename http.parser to html.parser --- extra/{http => html}/parser/analyzer/analyzer.factor | 0 extra/{http => html}/parser/parser-tests.factor | 0 extra/{http => html}/parser/parser.factor | 0 extra/{http => html}/parser/printer/printer.factor | 0 extra/{http => html}/parser/utils/utils-tests.factor | 0 extra/{http => html}/parser/utils/utils.factor | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename extra/{http => html}/parser/analyzer/analyzer.factor (100%) rename extra/{http => html}/parser/parser-tests.factor (100%) rename extra/{http => html}/parser/parser.factor (100%) rename extra/{http => html}/parser/printer/printer.factor (100%) rename extra/{http => html}/parser/utils/utils-tests.factor (100%) rename extra/{http => html}/parser/utils/utils.factor (100%) diff --git a/extra/http/parser/analyzer/analyzer.factor b/extra/html/parser/analyzer/analyzer.factor similarity index 100% rename from extra/http/parser/analyzer/analyzer.factor rename to extra/html/parser/analyzer/analyzer.factor diff --git a/extra/http/parser/parser-tests.factor b/extra/html/parser/parser-tests.factor similarity index 100% rename from extra/http/parser/parser-tests.factor rename to extra/html/parser/parser-tests.factor diff --git a/extra/http/parser/parser.factor b/extra/html/parser/parser.factor similarity index 100% rename from extra/http/parser/parser.factor rename to extra/html/parser/parser.factor diff --git a/extra/http/parser/printer/printer.factor b/extra/html/parser/printer/printer.factor similarity index 100% rename from extra/http/parser/printer/printer.factor rename to extra/html/parser/printer/printer.factor diff --git a/extra/http/parser/utils/utils-tests.factor b/extra/html/parser/utils/utils-tests.factor similarity index 100% rename from extra/http/parser/utils/utils-tests.factor rename to extra/html/parser/utils/utils-tests.factor diff --git a/extra/http/parser/utils/utils.factor b/extra/html/parser/utils/utils.factor similarity index 100% rename from extra/http/parser/utils/utils.factor rename to extra/html/parser/utils/utils.factor From 4ac3b181f09d50a773515fe06b04bd99e106af33 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:14:33 -0600 Subject: [PATCH 172/285] Fix usings and vocab names --- extra/html/parser/analyzer/analyzer.factor | 6 +++--- extra/html/parser/parser-tests.factor | 2 +- extra/html/parser/parser.factor | 6 +++--- extra/html/parser/printer/printer.factor | 9 ++++----- extra/html/parser/utils/utils-tests.factor | 2 +- extra/html/parser/utils/utils.factor | 4 ++-- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/extra/html/parser/analyzer/analyzer.factor b/extra/html/parser/analyzer/analyzer.factor index ffae26eb8a..9303b81055 100755 --- a/extra/html/parser/analyzer/analyzer.factor +++ b/extra/html/parser/analyzer/analyzer.factor @@ -1,5 +1,5 @@ -USING: assocs http.parser kernel math sequences strings ; -IN: http.parser.analyzer +USING: assocs html.parser kernel math sequences strings ; +IN: html.parser.analyzer : remove-blank-text ( vector -- vector' ) [ @@ -87,5 +87,5 @@ IN: http.parser.analyzer ! clear "/Users/erg/web/hostels.html" contents parse-html "Currency" "name" pick find-first-attribute-key-value ! clear "/Users/erg/web/hostels.html" contents parse-html -! "Currency" "name" pick find-first-attribute-key-value +! "Currency" "name" pick find-first-attribute-key-value ! pick find-between remove-blank-text diff --git a/extra/html/parser/parser-tests.factor b/extra/html/parser/parser-tests.factor index b4cd87d542..c490b737d9 100644 --- a/extra/html/parser/parser-tests.factor +++ b/extra/html/parser/parser-tests.factor @@ -1,4 +1,4 @@ -USING: browser.parser kernel tools.test ; +USING: html.parser kernel tools.test ; IN: temporary [ diff --git a/extra/html/parser/parser.factor b/extra/html/parser/parser.factor index 77a0580132..7057cfe61e 100644 --- a/extra/html/parser/parser.factor +++ b/extra/html/parser/parser.factor @@ -1,7 +1,7 @@ -USING: arrays http.parser.utils hashtables io kernel +USING: arrays html.parser.utils hashtables io kernel namespaces prettyprint quotations sequences splitting state-parser strings ; -IN: http.parser +IN: html.parser TUPLE: tag name attributes text matched? closing? ; @@ -120,7 +120,7 @@ SYMBOL: tagstack ] unless ; : parse-attributes ( -- hashtable ) - [ (parse-attributes) ] { } make >hashtable ; + [ (parse-attributes) ] { } make >hashtable ; : (parse-tag) [ diff --git a/extra/html/parser/printer/printer.factor b/extra/html/parser/printer/printer.factor index 3df1a76991..979c27a3e5 100644 --- a/extra/html/parser/printer/printer.factor +++ b/extra/html/parser/printer/printer.factor @@ -1,9 +1,9 @@ -USING: assocs http.parser browser.utils combinators +USING: assocs html.parser html.utils combinators continuations hashtables hashtables.private io kernel math namespaces prettyprint quotations sequences splitting state-parser strings ; -IN: http.parser.printer +IN: html.parser.printer SYMBOL: no-section SYMBOL: html @@ -42,7 +42,7 @@ HOOK: print-closing-named-tag printer ( tag -- ) M: printer print-text-tag ( tag -- ) tag-text write ; -M: printer print-comment-tag ( tag -- ) +M: printer print-comment-tag ( tag -- ) "" write ; @@ -67,7 +67,6 @@ M: printer print-closing-named-tag ( tag -- ) [ swap bl write "=" write ?quote write ] assoc-each ; - M: src-printer print-opening-named-tag ( tag -- ) "<" write @@ -102,7 +101,7 @@ SYMBOL: tablestack [ V{ } clone tablestack set ] with-scope ; - + ! { { 1 2 } { 3 4 } } ! H{ { table-gap { 10 10 } } } [ ! [ [ [ [ . ] with-cell ] each ] with-row ] each diff --git a/extra/html/parser/utils/utils-tests.factor b/extra/html/parser/utils/utils-tests.factor index 9ae54c775f..d39e4eef17 100644 --- a/extra/html/parser/utils/utils-tests.factor +++ b/extra/html/parser/utils/utils-tests.factor @@ -2,7 +2,7 @@ USING: assocs combinators continuations hashtables hashtables.private io kernel math namespaces prettyprint quotations sequences splitting state-parser strings tools.test ; -USING: browser.utils ; +USING: html.utils ; IN: temporary [ "'Rome'" ] [ "Rome" single-quote ] unit-test diff --git a/extra/html/parser/utils/utils.factor b/extra/html/parser/utils/utils.factor index c8d10a0a2b..febd1716ed 100644 --- a/extra/html/parser/utils/utils.factor +++ b/extra/html/parser/utils/utils.factor @@ -2,8 +2,8 @@ USING: assocs circular combinators continuations hashtables hashtables.private io kernel math namespaces prettyprint quotations sequences splitting state-parser strings ; -USING: http.parser ; -IN: http.parser.utils +USING: html.parser ; +IN: html.parser.utils : string-parse-end? get-next not ; From 47bab61d72feb835085b856955c45df84f0e1b26 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:15:41 -0600 Subject: [PATCH 173/285] Fix using --- extra/html/parser/printer/printer.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/html/parser/printer/printer.factor b/extra/html/parser/printer/printer.factor index 979c27a3e5..5ed9ab84c1 100644 --- a/extra/html/parser/printer/printer.factor +++ b/extra/html/parser/printer/printer.factor @@ -1,4 +1,4 @@ -USING: assocs html.parser html.utils combinators +USING: assocs html.parser html.parser.utils combinators continuations hashtables hashtables.private io kernel math namespaces prettyprint quotations sequences splitting From 0a23aebc761c39a518a1a34af88acc2b298bff11 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:17:34 -0600 Subject: [PATCH 174/285] Fix using --- extra/html/parser/utils/utils-tests.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/html/parser/utils/utils-tests.factor b/extra/html/parser/utils/utils-tests.factor index d39e4eef17..fcac31a6aa 100644 --- a/extra/html/parser/utils/utils-tests.factor +++ b/extra/html/parser/utils/utils-tests.factor @@ -2,7 +2,7 @@ USING: assocs combinators continuations hashtables hashtables.private io kernel math namespaces prettyprint quotations sequences splitting state-parser strings tools.test ; -USING: html.utils ; +USING: html.parser.utils ; IN: temporary [ "'Rome'" ] [ "Rome" single-quote ] unit-test From ac0daf19bc9ad1b4a075677f116c0bf029baeec9 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:19:50 -0600 Subject: [PATCH 175/285] Remove alarms and regexp from unmaintained --- unmaintained/alarms/alarms.factor | 89 ----- unmaintained/alarms/load.factor | 5 - unmaintained/regexp/load.factor | 10 - unmaintained/regexp/regexp.factor | 501 ------------------------- unmaintained/regexp/tables.factor | 111 ------ unmaintained/regexp/test/regexp.factor | 30 -- unmaintained/regexp/test/tables.factor | 49 --- 7 files changed, 795 deletions(-) delete mode 100644 unmaintained/alarms/alarms.factor delete mode 100644 unmaintained/alarms/load.factor delete mode 100644 unmaintained/regexp/load.factor delete mode 100644 unmaintained/regexp/regexp.factor delete mode 100644 unmaintained/regexp/tables.factor delete mode 100644 unmaintained/regexp/test/regexp.factor delete mode 100644 unmaintained/regexp/test/tables.factor diff --git a/unmaintained/alarms/alarms.factor b/unmaintained/alarms/alarms.factor deleted file mode 100644 index 0402ead8f4..0000000000 --- a/unmaintained/alarms/alarms.factor +++ /dev/null @@ -1,89 +0,0 @@ -! Copyright (C) 2007 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. - -USING: arrays calendar concurrency generic kernel math -namespaces sequences threads ; -IN: alarms-internals - -! for now a V{ }, eventually a min-heap to store alarms -SYMBOL: alarms -SYMBOL: alarm-receiver -SYMBOL: alarm-looper - -TUPLE: alarm time quot ; - -: add-alarm ( alarm -- ) - alarms get-global push ; - -: remove-alarm ( alarm -- ) - alarms get-global remove alarms set-global ; - -: handle-alarm ( alarm -- ) - dup delegate { - { "register" [ add-alarm ] } - { "unregister" [ remove-alarm ] } - } case ; - -: expired-alarms ( -- seq ) - now alarms get-global - [ alarm-time compare-timestamps 0 > ] subset-with ; - -: unexpired-alarms ( -- seq ) - now alarms get-global - [ alarm-time compare-timestamps 0 <= ] subset-with ; - -: call-alarm ( alarm -- ) - alarm-quot spawn drop ; - -: do-alarms ( -- ) - alarms get-global expired-alarms - [ call-alarm ] each - unexpired-alarms alarms set-global ; - -: alarm-receive-loop ( -- ) - receive dup alarm? [ handle-alarm ] [ drop ] if - alarm-receive-loop ; - -: start-alarm-receiver ( -- ) - [ - alarm-receive-loop - ] spawn alarm-receiver set-global ; - -: alarm-loop ( -- ) - alarms get-global empty? [ - do-alarms - ] unless 100 sleep alarm-loop ; - -: start-alarm-looper ( -- ) - [ - alarm-loop - ] spawn alarm-looper set-global ; - -: send-alarm ( alarm -- ) - over set-delegate - alarm-receiver get-global send ; - -: start-alarm-daemon ( -- process ) - alarms get-global [ - V{ } clone alarms set-global - start-alarm-looper - start-alarm-receiver - ] unless ; - -start-alarm-daemon - -IN: alarms - -: register-alarm ( alarm -- ) - "register" send-alarm ; - -: unregister-alarm ( alarm -- ) - "unregister" send-alarm ; - -: change-alarm ( alarm-old alarm-new -- ) - "register" send-alarm - "unregister" send-alarm ; - - -! Example: -! now 5 seconds +dt [ "hi" print flush ] register-alarm diff --git a/unmaintained/alarms/load.factor b/unmaintained/alarms/load.factor deleted file mode 100644 index 4b52ce6c79..0000000000 --- a/unmaintained/alarms/load.factor +++ /dev/null @@ -1,5 +0,0 @@ -REQUIRES: libs/calendar libs/concurrency ; -PROVIDE: libs/alarms -{ +files+ { - "alarms.factor" -} } ; diff --git a/unmaintained/regexp/load.factor b/unmaintained/regexp/load.factor deleted file mode 100644 index 989452e606..0000000000 --- a/unmaintained/regexp/load.factor +++ /dev/null @@ -1,10 +0,0 @@ -REQUIRES: libs/memoize ; -PROVIDE: libs/regexp -{ +files+ { - "tables.factor" - "regexp.factor" -} } { +tests+ { - "test/regexp.factor" - "test/tables.factor" -} } ; - diff --git a/unmaintained/regexp/regexp.factor b/unmaintained/regexp/regexp.factor deleted file mode 100644 index de233b2155..0000000000 --- a/unmaintained/regexp/regexp.factor +++ /dev/null @@ -1,501 +0,0 @@ -USING: arrays errors generic assocs io kernel math -memoize namespaces kernel sequences strings tables -vectors ; -USE: interpreter -USE: prettyprint -USE: test - -IN: regexp-internals - -SYMBOL: trans-table -SYMBOL: eps -SYMBOL: start-state -SYMBOL: final-state - -SYMBOL: paren-count -SYMBOL: currentstate -SYMBOL: stack - -SYMBOL: bot -SYMBOL: eot -SYMBOL: alternation -SYMBOL: lparen -SYMBOL: rparen - -: regexp-init ( -- ) - 0 paren-count set - -1 currentstate set - V{ } clone stack set - final-state over add-column trans-table set ; - -: paren-underflow? ( -- ) - paren-count get 0 < [ "too many rparen" throw ] when ; - -: unbalanced-paren? ( -- ) - paren-count get 0 > [ "neesds closing paren" throw ] when ; - -: inc-paren-count ( -- ) - paren-count [ 1+ ] change ; - -: dec-paren-count ( -- ) - paren-count [ 1- ] change paren-underflow? ; - -: push-stack ( n -- ) stack get push ; -: next-state ( -- n ) - currentstate [ 1+ ] change currentstate get ; -: current-state ( -- n ) currentstate get ; - -: set-trans-table ( row col data -- ) - trans-table get set-value ; - -: add-trans-table ( row col data -- ) - trans-table get add-value ; - -: data-stack-slice ( token -- seq ) - stack get reverse [ index ] keep cut reverse dup pop* stack set reverse ; - -: find-start-state ( table -- n ) - start-state t rot find-by-column first ; - -: find-final-state ( table -- n ) - final-state t rot find-by-column first ; - -: final-state? ( row table -- ? ) - get-row final-state swap key? ; - -: switch-rows ( r1 r2 -- ) - [ 2array [ trans-table get get-row ] each ] 2keep - 2array [ trans-table get set-row ] each ; - -: set-table-prop ( prop s table -- ) - pick over add-column table-rows - [ - pick rot member? [ - pick t swap rot set-at - ] [ - drop - ] if - ] assoc-each 2drop ; - -: add-numbers ( n obj -- obj ) - dup sequence? [ - [ + ] map-with - ] [ - dup number? [ + ] [ nip ] if - ] if ; - -: increment-cols ( n row -- ) - ! n row - dup [ >r pick r> add-numbers swap pick set-at ] assoc-each 2drop ; - -: complex-count ( c -- ci-cr+1 ) - >rect swap - 1+ ; - -: copy-rows ( c1 -- ) - #! copy rows to the bottom with a new row-name c1_range higher - [ complex-count ] keep trans-table get table-rows ! 2 C{ 0 1 } rows - [ drop [ over real >= ] keep pick imaginary <= and ] assoc-subset nip - [ clone [ >r over r> increment-cols ] keep swap pick + trans-table get set-row ] assoc-each ! 2 - currentstate get 1+ dup pick + 1- rect> push-stack - currentstate [ + ] change ; - - -! s1 final f ! s1 eps s2 ! output s0,s3 -: apply-concat ( seq -- ) - ! "Concat: " write dup . - dup pop over pop swap - over imaginary final-state f set-trans-table - 2dup >r imaginary eps r> real add-trans-table - >r real r> imaginary rect> swap push ; - -! swap 0, 4 so 0 is incoming -! ! s1 final f ! s3 final f ! s4 e s0 ! s4 e s2 ! s1 e s5 ! s3 e s5 -! ! s5 final t ! s4,s5 push - -SYMBOL: saved-state -: apply-alternation ( seq -- ) - ! "Alternation: " print - dup pop over pop* over pop swap - next-state trans-table get add-row - >r >rect >r saved-state set current-state r> rect> r> - ! 4,1 2,3 - over real saved-state get trans-table get swap-rows - saved-state get start-state t set-trans-table - over real start-state f set-trans-table - over imaginary final-state f set-trans-table - dup imaginary final-state f set-trans-table - over real saved-state get eps rot add-trans-table - dup real saved-state get eps rot add-trans-table - imaginary eps next-state add-trans-table - imaginary eps current-state add-trans-table - current-state final-state t set-trans-table - saved-state get current-state rect> swap push ; - -! s1 final f ! s1 e s0 ! s2 e s0 ! s2 e s3 ! s1 e s3 ! s3 final t -: apply-kleene-closure ( -- ) - ! "Apply kleene closure" print - stack get pop - next-state trans-table get add-row - >rect >r [ saved-state set ] keep current-state - [ trans-table get swap-rows ] keep r> rect> - - dup imaginary final-state f set-trans-table - dup imaginary eps pick real add-trans-table - saved-state get eps pick real add-trans-table - saved-state get eps next-state add-trans-table - imaginary eps current-state add-trans-table - current-state final-state t add-trans-table - saved-state get current-state rect> push-stack ; - -: apply-plus-closure ( -- ) - ! "Apply plus closure" print - stack get peek copy-rows - apply-kleene-closure stack get apply-concat ; - -: apply-alternation? ( seq -- ? ) - dup length dup 3 < [ - 2drop f - ] [ - 2 - swap nth alternation = - ] if ; - -: apply-concat? ( seq -- ? ) - dup length dup 2 < [ - 2drop f - ] [ - 2 - swap nth complex? - ] if ; - -: (apply) ( slice -- slice ) - dup length 1 > [ - { - { [ dup apply-alternation? ] - [ [ apply-alternation ] keep (apply) ] } - { [ dup apply-concat? ] - [ [ apply-concat ] keep (apply) ] } - } cond - ] when ; - -: apply-til-last ( tokens -- slice ) - data-stack-slice (apply) ; - -: maybe-concat ( -- ) - stack get apply-concat? [ stack get apply-concat ] when ; - -: maybe-concat-loop ( -- ) - stack get length maybe-concat stack get length > [ - maybe-concat-loop - ] when ; - -: create-nontoken-nfa ( tok -- ) - next-state swap next-state - [ trans-table get set-value ] keep - entry-value final-state t set-trans-table - current-state [ 1- ] keep rect> push-stack ; - -! stack gets: alternation C{ 0 1 } -: apply-question-closure ( -- ) - alternation push-stack - eps create-nontoken-nfa stack get apply-alternation ; - -! {2} exactly twice, {2,} 2 or more, {2,4} exactly 2,3,4 times -! : apply-bracket-closure ( c1 -- ) - ! ; -SYMBOL: character-class -SYMBOL: brace -SYMBOL: escaped-character -SYMBOL: octal -SYMBOL: hex -SYMBOL: control -SYMBOL: posix - -: addto-character-class ( char -- ) - ; - -: make-escaped ( char -- ) - { - ! TODO: POSIX character classes (US-ASCII only) - ! TODO: Classes for Unicode blocks and categories - - ! { CHAR: { [ ] } ! left brace - { CHAR: \\ [ ] } ! backaslash - - { CHAR: 0 [ ] } ! octal \0n \0nn \0mnn (0 <= m <= 3, 0 <= n <= 7) - { CHAR: x [ ] } ! \xhh - { CHAR: u [ ] } ! \uhhhh - { CHAR: t [ ] } ! tab \u0009 - { CHAR: n [ ] } ! newline \u000a - { CHAR: r [ ] } ! carriage-return \u000d - { CHAR: f [ ] } ! form-feed \u000c - { CHAR: a [ ] } ! alert (bell) \u0007 - { CHAR: e [ ] } ! escape \u001b - { CHAR: c [ ] } ! control character corresoding to X in \cX - - { CHAR: d [ ] } ! [0-9] - { CHAR: D [ ] } ! [^0-9] - { CHAR: s [ ] } ! [ \t\n\x0B\f\r] - { CHAR: S [ ] } ! [^\s] - { CHAR: w [ ] } ! [a-zA-Z_0-9] - { CHAR: W [ ] } ! [^\w] - - { CHAR: b [ ] } ! a word boundary - { CHAR: B [ ] } ! a non-word boundary - { CHAR: A [ ] } ! the beginning of input - { CHAR: G [ ] } ! the end of the previous match - { CHAR: Z [ ] } ! the end of the input but for the - ! final terminator, if any - { CHAR: z [ ] } ! the end of the input - } case ; - -: handle-character-class ( char -- ) - { - { [ \ escaped-character get ] [ make-escaped \ escaped-character off ] } - { [ dup CHAR: ] = ] [ \ character-class off ] } - { [ t ] [ addto-character-class ] } - } cond ; - -: parse-token ( char -- ) - { - ! { [ \ character-class get ] [ ] } - ! { [ \ escaped-character get ] [ ] } - ! { [ dup CHAR: [ = ] [ \ character-class on ] } - ! { [ dup CHAR: \\ = ] [ drop \ escaped-character on ] } - - ! { [ dup CHAR: ^ = ] [ ] } - ! { [ dup CHAR: $ = ] [ ] } - ! { [ dup CHAR: { = ] [ ] } - ! { [ dup CHAR: } = ] [ ] } - - { [ dup CHAR: | = ] - [ drop maybe-concat-loop alternation push-stack ] } - { [ dup CHAR: * = ] - [ drop apply-kleene-closure ] } - { [ dup CHAR: + = ] - [ drop apply-plus-closure ] } - { [ dup CHAR: ? = ] - [ drop apply-question-closure ] } - - { [ dup CHAR: ( = ] - [ drop inc-paren-count lparen push-stack ] } - { [ dup CHAR: ) = ] - [ - drop dec-paren-count lparen apply-til-last - stack get push-all - ] } ! apply - - - { [ dup bot = ] [ push-stack ] } - { [ dup eot = ] - [ - drop unbalanced-paren? maybe-concat-loop bot apply-til-last - dup length 1 = [ - pop real start-state t set-trans-table - ] [ - drop - ] if - ] } - { [ t ] [ create-nontoken-nfa ] } - } cond ; - -: cut-at-index ( i string ch -- i subseq ) - -rot [ index* ] 2keep >r >r [ 1+ ] keep r> swap r> subseq ; - -: parse-character-class ( index string -- new-index obj ) - 2dup >r 1+ r> nth CHAR: ] = [ >r 1+ r> ] when - cut-at-index ; - -: (parse-regexp) ( str -- ) - dup length [ - 2dup swap character-class get [ - parse-character-class - "CHARACTER CLASS: " write . - character-class off - nip ! adjust index - ] [ - nth parse-token - ] if - ] repeat ; - -: parse-regexp ( str -- ) - bot parse-token - ! [ "parsing: " write dup ch>string . parse-token ] each - [ parse-token ] each - ! (parse-regexp) - eot parse-token ; - -: push-all-diff ( seq seq -- diff ) - [ swap seq-diff ] 2keep push-all ; - -: prune-sort ( vec -- vec ) - prune natural-sort >vector ; - -SYMBOL: ttable -SYMBOL: transition -SYMBOL: check-list -SYMBOL: initial-check-list -SYMBOL: result - -: init-find ( data state table -- ) - ttable set - dup sequence? [ clone >vector ] [ V{ } clone [ push ] keep ] if - [ check-list set ] keep clone initial-check-list set - V{ } clone result set - transition set ; - -: (find-next-state) ( -- ) - check-list get [ - [ - ttable get get-row transition get swap at* - [ dup sequence? [ % ] [ , ] if ] [ drop ] if - ] each - ] { } make - result get push-all-diff - check-list set - result get prune-sort result set ; - -: (find-next-state-recursive) ( -- ) - check-list get empty? [ (find-next-state) (find-next-state-recursive) ] unless ; - -: find-epsilon-closure ( state table -- vec ) - eps -rot init-find - (find-next-state-recursive) result get initial-check-list get append natural-sort ; - -: find-next-state ( data state table -- vec ) - find-epsilon-closure check-list set - V{ } clone result set transition set - (find-next-state) result get ttable get find-epsilon-closure ; - -: filter-cols ( vec -- vec ) - #! remove info columns state-state, eps, final - clone start-state over delete-at eps over delete-at - final-state over delete-at ; - -SYMBOL: old-table -SYMBOL: new-table -SYMBOL: todo-states -SYMBOL: transitions - -: init-nfa>dfa ( table -- ) - new-table set - [ table-columns clone filter-cols keys transitions set ] keep - dup [ find-start-state ] keep find-epsilon-closure - V{ } clone [ push ] keep todo-states set - old-table set ; - -: create-row ( state table -- ) - 2dup row-exists? - [ 2drop ] [ [ add-row ] 2keep drop todo-states get push ] if ; - -: (nfa>dfa) ( -- ) - todo-states get dup empty? [ - pop transitions get [ - 2dup swap old-table get find-next-state - dup empty? [ - 3drop - ] [ - dup new-table get create-row - new-table get set-value - ] if - ] each-with - ] unless* todo-states get empty? [ (nfa>dfa) ] unless ; - -: nfa>dfa ( table -- table ) - init-nfa>dfa - (nfa>dfa) - start-state old-table get find-start-state - new-table get set-table-prop - final-state old-table get find-final-state - new-table get [ set-table-prop ] keep ; - -SYMBOL: regexp -SYMBOL: text -SYMBOL: matches -SYMBOL: partial-matches -TUPLE: partial-match index row count ; -! a state is a vector -! state is a key in a hashtable. the value is a hashtable of transition states - -: save-partial-match ( index row -- ) - 1 dup partial-match-index - \ partial-matches get set-at ; - -: inc-partial-match ( partial-match -- ) - [ partial-match-count 1+ ] keep set-partial-match-count ; - -: check-final-state ( partial-match -- ) - dup partial-match-row regexp get final-state? [ - clone dup partial-match-index matches get set-at - ] [ - drop - ] if ; - -: check-trivial-match ( row regexp -- ) - dupd final-state? [ - >r 0 r> 0 - 0 matches get set-at - ] [ - drop - ] if ; - -: update-partial-match ( char partial-match -- ) - tuck partial-match-row regexp get get-row at* [ - over set-partial-match-row - inc-partial-match - ] [ - drop - partial-match-index partial-matches get delete-at - ] if ; - -: regexp-step ( index char start-state -- ) - ! check partial-matches - over \ partial-matches get - [ nip update-partial-match ] assoc-each-with - - ! check new match - at* [ - save-partial-match - ] [ - 2drop - ] if - partial-matches get values [ check-final-state ] each ; - -: regexp-match ( text regexp -- seq ) - #! text is the haystack - #! regexp is a table describing the needle - H{ } clone \ matches set - H{ } clone \ partial-matches set - dup regexp set - >r dup text set r> - [ find-start-state ] keep - 2dup check-trivial-match - get-row - swap [ length ] keep - [ pick regexp-step ] 2each drop - matches get values [ - [ partial-match-index ] keep - partial-match-count dupd + text get - ] map ; - -IN: regexp -MEMO: make-regexp ( str -- table ) - [ - regexp-init - parse-regexp - trans-table get nfa>dfa - ] with-scope ; - -! TODO: make compatible with -! http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html - -! Greedy -! Match the longest possible string, default -! a+ - -! Reluctant -! Match on shortest possible string -! / in vi does this (find next) -! a+? - -! Possessive -! Match only when the entire text string matches -! a++ diff --git a/unmaintained/regexp/tables.factor b/unmaintained/regexp/tables.factor deleted file mode 100644 index 76b27e1a03..0000000000 --- a/unmaintained/regexp/tables.factor +++ /dev/null @@ -1,111 +0,0 @@ -USING: errors generic kernel namespaces -sequences vectors assocs ; -IN: tables - -TUPLE: table rows columns ; -TUPLE: entry row-key column-key value ; -GENERIC: add-value ( entry table -- ) - -C: table ( -- obj ) - H{ } clone over set-table-rows - H{ } clone over set-table-columns ; - -: (add-row) ( row-key table -- row ) - 2dup table-rows at* [ - 2nip - ] [ - drop H{ } clone [ -rot table-rows set-at ] keep - ] if ; - -: add-row ( row-key table -- ) - (add-row) drop ; - -: add-column ( column-key table -- ) - t -rot table-columns set-at ; - -: set-row ( row row-key table -- ) - table-rows set-at ; - -: lookup-row ( row-key table -- row/f ? ) - table-rows at* ; - -: row-exists? ( row-key table -- ? ) - lookup-row nip ; - -: lookup-column ( column-key table -- column/f ? ) - table-columns at* ; - -: column-exists? ( column-key table -- ? ) - lookup-column nip ; - -TUPLE: no-row key ; -TUPLE: no-column key ; - -: get-row ( row-key table -- row ) - dupd lookup-row [ - nip - ] [ - drop throw - ] if ; - -: get-column ( column-key table -- column ) - dupd lookup-column [ - nip - ] [ - drop throw - ] if ; - -: get-value ( row-key column-key table -- obj ? ) - swapd lookup-row [ - at* - ] [ - 2drop f f - ] if ; - -: (set-value) ( entry table -- value column-key row ) - [ >r entry-column-key r> add-column ] 2keep - dupd >r entry-row-key r> (add-row) - >r [ entry-value ] keep entry-column-key r> ; - -: set-value ( entry table -- ) - (set-value) set-at ; - -: swap-rows ( row-key1 row-key2 table -- ) - [ tuck get-row >r get-row r> ] 3keep - >r >r rot r> r> [ set-row ] keep set-row ; - -: member?* ( obj obj -- bool ) - 2dup = [ 2drop t ] [ member? ] if ; - -: find-by-column ( column-key data table -- seq ) - swapd 2dup lookup-column 2drop - [ - table-rows [ - pick swap at* [ - >r pick r> member?* [ , ] [ drop ] if - ] [ - 2drop - ] if - ] assoc-each - ] { } make 2nip ; - - -TUPLE: vector-table ; -C: vector-table ( -- obj ) - over set-delegate ; - -: add-hash-vector ( value key hash -- ) - 2dup at* [ - dup vector? [ - 2nip push - ] [ - V{ } clone [ push ] keep - -rot >r >r [ push ] keep r> r> set-at - ] if - ] [ - drop set-at - ] if ; - -M: vector-table add-value ( entry table -- ) - (set-value) add-hash-vector ; - diff --git a/unmaintained/regexp/test/regexp.factor b/unmaintained/regexp/test/regexp.factor deleted file mode 100644 index 36c627c9cf..0000000000 --- a/unmaintained/regexp/test/regexp.factor +++ /dev/null @@ -1,30 +0,0 @@ -USING: kernel sequences namespaces errors io math tables arrays generic hashtables vectors strings parser ; -USING: prettyprint test ; -USING: regexp-internals regexp ; - -[ "dog" ] [ "dog" "cat|dog" make-regexp regexp-match first >string ] unit-test -[ "cat" ] [ "cat" "cat|dog" make-regexp regexp-match first >string ] unit-test -[ "a" ] [ "a" "a|b|c" make-regexp regexp-match first >string ] unit-test -[ "" ] [ "" "a*" make-regexp regexp-match first >string ] unit-test -[ "aaaa" ] [ "aaaa" "a*" make-regexp regexp-match first >string ] unit-test -[ "aaaa" ] [ "aaaa" "a+" make-regexp regexp-match first >string ] unit-test -[ t ] [ "" "a+" make-regexp regexp-match empty? ] unit-test -[ "cadog" ] [ "cadog" "ca(t|d)og" make-regexp regexp-match first >string ] unit-test -[ "catog" ] [ "catog" "ca(t|d)og" make-regexp regexp-match first >string ] unit-test -[ "cadog" ] [ "abcadoghi" "ca(t|d)og" make-regexp regexp-match first >string ] unit-test -[ t ] [ "abcatdoghi" "ca(t|d)og" make-regexp regexp-match empty? ] unit-test - -[ "abcdefghijklmnopqrstuvwxyz" ] [ "abcdefghijklmnopqrstuvwxyz" "a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+" make-regexp regexp-match first >string ] unit-test -[ "aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz" ] [ "aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz" "a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+" make-regexp regexp-match first >string ] unit-test -[ t ] [ "aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyy" "a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+" make-regexp regexp-match empty? ] unit-test -[ "abcdefghijklmnopqrstuvwxyz" ] [ "abcdefghijklmnopqrstuvwxyz" "a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*" make-regexp regexp-match first >string ] unit-test -[ "" ] [ "" "a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*" make-regexp regexp-match first >string ] unit-test -[ "az" ] [ "az" "a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*" make-regexp regexp-match first >string ] unit-test - -[ t ] [ "abc" "a?b?c?" make-regexp regexp-match length 3 = ] unit-test -[ "ac" ] [ "ac" "a?b?c?" make-regexp regexp-match first >string ] unit-test -[ "" ] [ "" "a?b?c?" make-regexp regexp-match first >string ] unit-test -[ t ] [ "aabc" "a?b?c?" make-regexp regexp-match length 4 = ] unit-test -[ "abbbccdefefffeffe" ] [ "abbbccdefefffeffe" "(a?b*c+d(e|f)*)+" make-regexp regexp-match first >string ] unit-test -[ t ] [ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" make-regexp regexp-match length 29 = ] unit-test - diff --git a/unmaintained/regexp/test/tables.factor b/unmaintained/regexp/test/tables.factor deleted file mode 100644 index 4ce339afad..0000000000 --- a/unmaintained/regexp/test/tables.factor +++ /dev/null @@ -1,49 +0,0 @@ -USING: kernel tables test ; - -: test-table -
- "a" "c" "z" over set-value - "a" "o" "y" over set-value - "a" "l" "x" over set-value - "b" "o" "y" over set-value - "b" "l" "x" over set-value - "b" "s" "u" over set-value ; - -[ - T{ table f - H{ - { "a" H{ { "l" "x" } { "c" "z" } { "o" "y" } } } - { "b" H{ { "l" "x" } { "s" "u" } { "o" "y" } } } - } - H{ { "l" t } { "s" t } { "c" t } { "o" t } } } -] [ test-table ] unit-test - -[ "x" t ] [ "a" "l" test-table get-value ] unit-test -[ "har" t ] [ - "a" "z" "har" test-table [ set-value ] keep - >r "a" "z" r> get-value -] unit-test - -: vector-test-table - - "a" "c" "z" over add-value - "a" "c" "r" over add-value - "a" "o" "y" over add-value - "a" "l" "x" over add-value - "b" "o" "y" over add-value - "b" "l" "x" over add-value - "b" "s" "u" over add-value ; - -[ -T{ vector-table - T{ table f - H{ - { "a" - H{ { "l" "x" } { "c" V{ "z" "r" } } { "o" "y" } } } - { "b" - H{ { "l" "x" } { "s" "u" } { "o" "y" } } } - } - H{ { "l" t } { "s" t } { "c" t } { "o" t } } } -} -] [ vector-test-table ] unit-test - From 06893a0f224725449bb3d631b0c4bcd7acdc5096 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:22:17 -0600 Subject: [PATCH 176/285] Fix typo --- misc/factor.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/factor.sh b/misc/factor.sh index 616119dd61..11ea2a9cdf 100755 --- a/misc/factor.sh +++ b/misc/factor.sh @@ -57,7 +57,7 @@ check_installed_programs() { check_library_exists() { GCC_TEST=factor-library-test.c GCC_OUT=factor-library-test.out - echo -n "Checking for library $1" + echo -n "Checking for library $1..." echo "int main(){return 0;}" > $GCC_TEST gcc $GCC_TEST -o $GCC_OUT -l $1 if [[ $? -ne 0 ]] ; then From e7cbbaa6929ead06675c11f32e87f08bd0a29aed Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 14:38:36 -0600 Subject: [PATCH 177/285] Use MAX_UNICODE_PATH for outrageously long c:\windows directory names --- vm/os-windows-nt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index be9dde1fa8..da54b794d1 100755 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -10,9 +10,9 @@ s64 current_millis(void) DEFINE_PRIMITIVE(cwd) { - F_CHAR buf[MAX_PATH + 4]; + F_CHAR buf[MAX_UNICODE_PATH]; - if(!GetCurrentDirectory(MAX_PATH + 4, buf)) + if(!GetCurrentDirectory(MAX_UNICODE_PATH, buf)) io_error(); box_u16_string(buf); From 023a1defb5122ef913d9e6827975b64cf996ebd2 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 15:12:47 -0600 Subject: [PATCH 178/285] Fix bootstrap --- extra/random-tester/random/random.factor | 37 ++++++++---------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/extra/random-tester/random/random.factor b/extra/random-tester/random/random.factor index da9a5c26d8..7cd669becf 100755 --- a/extra/random-tester/random/random.factor +++ b/extra/random-tester/random/random.factor @@ -1,22 +1,12 @@ -USING: kernel math sequences namespaces errors hashtables words -arrays parser compiler syntax io tools prettyprint optimizer -inference ; +USING: kernel math sequences namespaces hashtables words +arrays parser compiler syntax io prettyprint optimizer +random math.constants math.functions layouts random-tester.utils ; IN: random-tester ! Tweak me : max-length 15 ; inline : max-value 1000000000 ; inline -: 10% ( -- bool ) 10 random 8 > ; -: 20% ( -- bool ) 10 random 7 > ; -: 30% ( -- bool ) 10 random 6 > ; -: 40% ( -- bool ) 10 random 5 > ; -: 50% ( -- bool ) 10 random 4 > ; -: 60% ( -- bool ) 10 random 3 > ; -: 70% ( -- bool ) 10 random 2 > ; -: 80% ( -- bool ) 10 random 1 > ; -: 90% ( -- bool ) 10 random 0 > ; - ! varying bit-length random number : random-bits ( n -- int ) random 2 swap ^ random ; @@ -31,32 +21,29 @@ IN: random-tester SYMBOL: special-integers [ { -1 0 1 } % most-negative-fixnum , most-positive-fixnum , first-bignum , ] { } make \ special-integers set-global -: special-integers ( -- seq ) \ special-integers get ; SYMBOL: special-floats [ { 0.0 -0.0 } % e , pi , 1./0. , -1./0. , 0./0. , epsilon , epsilon neg , ] { } make \ special-floats set-global -: special-floats ( -- seq ) \ special-floats get ; SYMBOL: special-complexes [ - { -1 0 1 i -i } % + { -1 0 1 C{ 0 1 } C{ 0 -1 } } % e , e neg , pi , pi neg , 0 pi rect> , 0 pi neg rect> , pi neg 0 rect> , pi pi rect> , pi pi neg rect> , pi neg pi rect> , pi neg pi neg rect> , e neg e neg rect> , e e rect> , ] { } make \ special-complexes set-global -: special-complexes ( -- seq ) \ special-complexes get ; : random-fixnum ( -- fixnum ) - most-positive-fixnum random 1+ coin-flip [ neg 1- ] when >fixnum ; + most-positive-fixnum random 1+ 50% [ neg 1- ] when >fixnum ; : random-bignum ( -- bignum ) - 400 random-bits first-bignum + coin-flip [ neg ] when ; + 400 random-bits first-bignum + 50% [ neg ] when ; : random-integer ( -- n ) - coin-flip [ + 50% [ random-fixnum ] [ - coin-flip [ random-bignum ] [ special-integers random ] if + 50% [ random-bignum ] [ special-integers get random ] if ] if ; : random-positive-integer ( -- int ) @@ -67,12 +54,12 @@ SYMBOL: special-complexes ] if ; : random-ratio ( -- ratio ) - 1000000000 dup [ random ] 2apply 1+ / coin-flip [ neg ] when dup [ drop random-ratio ] unless 10% [ drop 0 ] when ; + 1000000000 dup [ random ] 2apply 1+ / 50% [ neg ] when dup [ drop random-ratio ] unless 10% [ drop 0 ] when ; : random-float ( -- float ) - coin-flip [ random-ratio ] [ special-floats random ] if - coin-flip - [ .0000000000000000001 /f ] [ coin-flip [ .00000000000000001 * ] when ] if + 50% [ random-ratio ] [ special-floats get random ] if + 50% + [ .0000000000000000001 /f ] [ 50% [ .00000000000000001 * ] when ] if >float ; : random-number ( -- number ) From 038d7bb53453463c725ec347d3030bb7732af862 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Tue, 4 Dec 2007 16:34:35 -0500 Subject: [PATCH 179/285] RSS reader moved to unmaintained --- {extra/rss => unmaintained}/reader/reader.factor | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {extra/rss => unmaintained}/reader/reader.factor (100%) diff --git a/extra/rss/reader/reader.factor b/unmaintained/reader/reader.factor similarity index 100% rename from extra/rss/reader/reader.factor rename to unmaintained/reader/reader.factor From db3add2690a9405ef44d02c78469c184fe3e8e34 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 15:45:59 -0600 Subject: [PATCH 180/285] Add editors to changelog --- extra/help/handbook/handbook.factor | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/extra/help/handbook/handbook.factor b/extra/help/handbook/handbook.factor index ef25e91191..c59524be6e 100755 --- a/extra/help/handbook/handbook.factor +++ b/extra/help/handbook/handbook.factor @@ -273,7 +273,11 @@ ARTICLE: "changes" "Changes in the latest release" { { $vocab-link "channels" } " - concurrent message passing over message channels" } { { $vocab-link "destructors" } " - deterministic scope-based resource deallocation (Doug Coleman)" } { { $vocab-link "dlists" } " - various updates (Doug Coleman)" } + { { $vocab-link "editors.emeditor" } " - EmEditor integration (Doug Coleman)" } + { { $vocab-link "editors.editplus" } " - EditPlus integration (Aaron Schaefer)" } { { $vocab-link "editors.notepadpp" } " - Notepad++ integration (Doug Coleman)" } + { { $vocab-link "editors.ted-notepad" } " - TED Notepad integration (Doug Coleman)" } + { { $vocab-link "editors.ultraedit" } " - UltraEdit integration (Doug Coleman)" } { { $vocab-link "heaps" } " - updated for new module system and cleaned up (Doug Coleman)" } { { $vocab-link "peg" } " - Parser Expression Grammars, a new appoach to parser construction, similar to parser combinators (Chris Double)" } { { $vocab-link "regexp" } " - revived from " { $snippet "unmaintained/" } " and completely redesigned (Doug Coleman)" } From 9c79dc1fa75d089a1560174ac717aab93dcc2f09 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 15:47:26 -0600 Subject: [PATCH 181/285] Better error handling for safe_sigaction --- vm/os-unix.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vm/os-unix.c b/vm/os-unix.c index 437a528fb8..b33c879d88 100644 --- a/vm/os-unix.c +++ b/vm/os-unix.c @@ -219,6 +219,9 @@ static void sigaction_safe(int signum, const struct sigaction *act, struct sigac ret = sigaction(signum, act, oldact); } while(ret == -1 && errno == EINTR); + + if(ret == -1) + fatal_error("sigaction failed", 0); } void unix_init_signals(void) From 09aad9868725b2add264f189bf6255a54fe5aabc Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 18:16:15 -0600 Subject: [PATCH 182/285] Fix UI bug that puts mouse-captured objects in the datastack while walking code I don't understand why it does this, but removing the spurious call to release-capture in the raise-window word fixes the problem --- extra/ui/windows/windows.factor | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/extra/ui/windows/windows.factor b/extra/ui/windows/windows.factor index 43b30d7a9f..3d95e281aa 100755 --- a/extra/ui/windows/windows.factor +++ b/extra/ui/windows/windows.factor @@ -257,14 +257,12 @@ M: windows-ui-backend (close-window) : prepare-mouse ( hWnd uMsg wParam lParam -- button coordinate world ) nip >r mouse-event>gesture r> >lo-hi rot window ; -: mouse-captured? ( -- ? ) - mouse-captured get ; - : set-capture ( hwnd -- ) mouse-captured get [ drop ] [ - [ SetCapture drop ] keep mouse-captured set + [ SetCapture drop ] keep + mouse-captured set ] if ; : release-capture ( -- ) @@ -276,7 +274,7 @@ M: windows-ui-backend (close-window) prepare-mouse send-button-down ; : handle-wm-buttonup ( hWnd uMsg wParam lParam -- ) - mouse-captured? [ release-capture ] when + mouse-captured get [ release-capture ] when prepare-mouse send-button-up ; : make-TRACKMOUSEEVENT ( hWnd -- alien ) @@ -434,7 +432,7 @@ M: windows-ui-backend flush-gl-context ( handle -- ) ! Move window to front M: windows-ui-backend raise-window ( world -- ) world-handle [ - win-hWnd SetFocus drop release-capture + win-hWnd SetFocus drop ] when* ; M: windows-ui-backend set-title ( string world -- ) From 53730a28c2118bc17fa4dfbd08d995d43251e6af Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Tue, 4 Dec 2007 21:19:11 -0500 Subject: [PATCH 183/285] Planet Factor RSS changes --- extra/webapps/planet/planet.factor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extra/webapps/planet/planet.factor b/extra/webapps/planet/planet.factor index 31ef4222ba..9fdafe033b 100644 --- a/extra/webapps/planet/planet.factor +++ b/extra/webapps/planet/planet.factor @@ -11,7 +11,7 @@ TUPLE: posting author title date link body ; : fetch-feed ( pair -- feed ) second dup "Fetching " diagnostic - dup news-get feed-entries + dup download-feed feed-entries swap "Done fetching " diagnostic ; : fetch-blogroll ( blogroll -- entries ) @@ -130,9 +130,9 @@ SYMBOL: last-update [ feed-entries ] map concat sort-entries ; : planet-feed ( -- feed ) - default-blogroll get [ second news-get ] map merge-feeds + default-blogroll get [ second download-feed ] map merge-feeds >r "[ planet-factor ]" "http://planet.factorcode.org" r> - generate-atom ; + feed>xml ; : feed.xml planet-feed ; From 9b69278b908ac4c5c230b642edaf731685a957cd Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Tue, 4 Dec 2007 21:31:11 -0500 Subject: [PATCH 184/285] Fixing stack effect in extra/rss --- extra/rss/rss.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/rss/rss.factor b/extra/rss/rss.factor index 8a9be3f9f6..da810ee377 100644 --- a/extra/rss/rss.factor +++ b/extra/rss/rss.factor @@ -99,5 +99,5 @@ C: entry feed-entries [ entry, ] each ] make-xml* ; -: write-feed ( feed -- xml ) +: write-feed ( feed -- ) feed>xml write-xml ; From 00eeb7074f9349f7d25f72df0da40bd3baf8d86f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 4 Dec 2007 23:57:17 -0600 Subject: [PATCH 185/285] Fix hardware-info on Windows --- extra/hardware-info/windows/ce/ce.factor | 4 ++-- extra/hardware-info/windows/nt/nt.factor | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extra/hardware-info/windows/ce/ce.factor b/extra/hardware-info/windows/ce/ce.factor index 1ae908c6ef..42fd9e5343 100644 --- a/extra/hardware-info/windows/ce/ce.factor +++ b/extra/hardware-info/windows/ce/ce.factor @@ -1,7 +1,7 @@ -USING: alien.c-types hardware-info kernel math namespaces windows windows.kernel32 ; +USING: alien.c-types hardware-info hardware-info.windows +kernel math namespaces windows windows.kernel32 ; IN: hardware-info.windows.ce -TUPLE: wince ; T{ wince } os set-global : memory-status ( -- MEMORYSTATUS ) diff --git a/extra/hardware-info/windows/nt/nt.factor b/extra/hardware-info/windows/nt/nt.factor index fafcb58dca..2b2522e6ee 100644 --- a/extra/hardware-info/windows/nt/nt.factor +++ b/extra/hardware-info/windows/nt/nt.factor @@ -1,8 +1,8 @@ -USING: alien alien.c-types hardware-info kernel libc math namespaces +USING: alien alien.c-types hardware-info hardware-info.windows +kernel libc math namespaces windows windows.advapi32 windows.kernel32 ; IN: hardware-info.windows.nt -TUPLE: winnt ; T{ winnt } os set-global : memory-status ( -- MEMORYSTATUSEX ) From baf0ef79e55c40893b0488893044aa9f90fc8fa7 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 01:03:35 -0600 Subject: [PATCH 186/285] Add more win32 bindings Bind to shell32 and add desktop, program-files... --- extra/windows/kernel32/kernel32.factor | 9 +- extra/windows/nt/nt.factor | 3 + extra/windows/shell32/shell32.factor | 127 +++++++++++++++++++++++++ extra/windows/windows.factor | 1 + 4 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 extra/windows/shell32/shell32.factor diff --git a/extra/windows/kernel32/kernel32.factor b/extra/windows/kernel32/kernel32.factor index bb8919dd70..5e0f4ddc65 100755 --- a/extra/windows/kernel32/kernel32.factor +++ b/extra/windows/kernel32/kernel32.factor @@ -1010,7 +1010,8 @@ FUNCTION: HANDLE GetStdHandle ( DWORD nStdHandle ) ; ! FUNCTION: GetSystemDefaultLCID ! FUNCTION: GetSystemDefaultUILanguage ! FUNCTION: GetSystemDirectoryA -! FUNCTION: GetSystemDirectoryW +FUNCTION: UINT GetSystemDirectoryW ( LPTSTR lpBuffer, UINT uSize ) ; +: GetSystemDirectory GetSystemDirectoryW ; inline FUNCTION: void GetSystemInfo ( LPSYSTEM_INFO lpSystemInfo ) ; ! FUNCTION: GetSystemPowerStatus ! FUNCTION: GetSystemRegistryQuota @@ -1019,7 +1020,8 @@ FUNCTION: void GetSystemTime ( LPSYSTEMTIME lpSystemTime ) ; FUNCTION: void GetSystemTimeAsFileTime ( LPFILETIME lpSystemTimeAsFileTime ) ; ! FUNCTION: GetSystemTimes ! FUNCTION: GetSystemWindowsDirectoryA -! FUNCTION: GetSystemWindowsDirectoryW +FUNCTION: UINT GetSystemWindowsDirectoryW ( LPTSTR lpBuffer, UINT uSize ) ; +: GetSystemWindowsDirectory GetSystemWindowsDirectoryW ; inline ! FUNCTION: GetSystemWow64DirectoryA ! FUNCTION: GetSystemWow64DirectoryW ! FUNCTION: GetTapeParameters @@ -1057,7 +1059,8 @@ FUNCTION: BOOL GetVersionExW ( LPOSVERSIONINFO lpVersionInfo ) ; ! FUNCTION: GetVolumePathNamesForVolumeNameW ! FUNCTION: GetVolumePathNameW ! FUNCTION: GetWindowsDirectoryA -! FUNCTION: GetWindowsDirectoryW +FUNCTION: UINT GetWindowsDirectoryW ( LPTSTR lpBuffer, UINT uSize ) ; +: GetWindowsDirectory GetWindowsDirectoryW ; inline ! FUNCTION: GetWriteWatch ! FUNCTION: GlobalAddAtomA ! FUNCTION: GlobalAddAtomW diff --git a/extra/windows/nt/nt.factor b/extra/windows/nt/nt.factor index d9e8f58cc2..a485beba00 100644 --- a/extra/windows/nt/nt.factor +++ b/extra/windows/nt/nt.factor @@ -6,9 +6,12 @@ USING: alien sequences ; { "kernel32" "kernel32.dll" "stdcall" } { "winsock" "ws2_32.dll" "stdcall" } { "mswsock" "mswsock.dll" "stdcall" } + { "shell32" "shell32.dll" "stdcall" } { "libc" "msvcrt.dll" "cdecl" } { "libm" "msvcrt.dll" "cdecl" } { "gl" "opengl32.dll" "stdcall" } { "glu" "glu32.dll" "stdcall" } { "freetype" "freetype6.dll" "cdecl" } } [ first3 add-library ] each + +USING: windows.shell32 ; diff --git a/extra/windows/shell32/shell32.factor b/extra/windows/shell32/shell32.factor new file mode 100644 index 0000000000..a6599df637 --- /dev/null +++ b/extra/windows/shell32/shell32.factor @@ -0,0 +1,127 @@ +USING: alien alien.c-types alien.syntax combinators +kernel windows ; +IN: windows.shell32 + +: CSIDL_DESKTOP HEX: 00 ; inline +: CSIDL_INTERNET HEX: 01 ; inline +: CSIDL_PROGRAMS HEX: 02 ; inline +: CSIDL_CONTROLS HEX: 03 ; inline +: CSIDL_PRINTERS HEX: 04 ; inline +: CSIDL_PERSONAL HEX: 05 ; inline +: CSIDL_FAVORITES HEX: 06 ; inline +: CSIDL_STARTUP HEX: 07 ; inline +: CSIDL_RECENT HEX: 08 ; inline +: CSIDL_SENDTO HEX: 09 ; inline +: CSIDL_BITBUCKET HEX: 0a ; inline +: CSIDL_STARTMENU HEX: 0b ; inline +: CSIDL_MYDOCUMENTS HEX: 0c ; inline +: CSIDL_MYMUSIC HEX: 0d ; inline +: CSIDL_MYVIDEO HEX: 0e ; inline +: CSIDL_DESKTOPDIRECTORY HEX: 10 ; inline +: CSIDL_DRIVES HEX: 11 ; inline +: CSIDL_NETWORK HEX: 12 ; inline +: CSIDL_NETHOOD HEX: 13 ; inline +: CSIDL_FONTS HEX: 14 ; inline +: CSIDL_TEMPLATES HEX: 15 ; inline +: CSIDL_COMMON_STARTMENU HEX: 16 ; inline +: CSIDL_COMMON_PROGRAMS HEX: 17 ; inline +: CSIDL_COMMON_STARTUP HEX: 18 ; inline +: CSIDL_COMMON_DESKTOPDIRECTORY HEX: 19 ; inline +: CSIDL_APPDATA HEX: 1a ; inline +: CSIDL_PRINTHOOD HEX: 1b ; inline +: CSIDL_LOCAL_APPDATA HEX: 1c ; inline +: CSIDL_ALTSTARTUP HEX: 1d ; inline +: CSIDL_COMMON_ALTSTARTUP HEX: 1e ; inline +: CSIDL_COMMON_FAVORITES HEX: 1f ; inline +: CSIDL_INTERNET_CACHE HEX: 20 ; inline +: CSIDL_COOKIES HEX: 21 ; inline +: CSIDL_HISTORY HEX: 22 ; inline +: CSIDL_COMMON_APPDATA HEX: 23 ; inline +: CSIDL_WINDOWS HEX: 24 ; inline +: CSIDL_SYSTEM HEX: 25 ; inline +: CSIDL_PROGRAM_FILES HEX: 26 ; inline +: CSIDL_MYPICTURES HEX: 27 ; inline +: CSIDL_PROFILE HEX: 28 ; inline +: CSIDL_SYSTEMX86 HEX: 29 ; inline +: CSIDL_PROGRAM_FILESX86 HEX: 2a ; inline +: CSIDL_PROGRAM_FILES_COMMON HEX: 2b ; inline +: CSIDL_PROGRAM_FILES_COMMONX86 HEX: 2c ; inline +: CSIDL_COMMON_TEMPLATES HEX: 2d ; inline +: CSIDL_COMMON_DOCUMENTS HEX: 2e ; inline +: CSIDL_COMMON_ADMINTOOLS HEX: 2f ; inline +: CSIDL_ADMINTOOLS HEX: 30 ; inline +: CSIDL_CONNECTIONS HEX: 31 ; inline +: CSIDL_COMMON_MUSIC HEX: 35 ; inline +: CSIDL_COMMON_PICTURES HEX: 36 ; inline +: CSIDL_COMMON_VIDEO HEX: 37 ; inline +: CSIDL_RESOURCES HEX: 38 ; inline +: CSIDL_RESOURCES_LOCALIZED HEX: 39 ; inline +: CSIDL_COMMON_OEM_LINKS HEX: 3a ; inline +: CSIDL_CDBURN_AREA HEX: 3b ; inline +: CSIDL_COMPUTERSNEARME HEX: 3d ; inline +: CSIDL_PROFILES HEX: 3e ; inline +: CSIDL_FOLDER_MASK HEX: ff ; inline +: CSIDL_FLAG_PER_USER_INIT HEX: 800 ; inline +: CSIDL_FLAG_NO_ALIAS HEX: 1000 ; inline +: CSIDL_FLAG_DONT_VERIFY HEX: 4000 ; inline +: CSIDL_FLAG_CREATE HEX: 8000 ; inline +: CSIDL_FLAG_MASK HEX: ff00 ; inline + +: S_OK 0 ; inline +: S_FALSE 1 ; inline +: E_FAIL HEX: 80004005 ; inline +: E_INVALIDARG HEX: 80070057 ; inline +: ERROR_FILE_NOT_FOUND 2 ; inline + + +: SHGFP_TYPE_CURRENT 0 ; inline +: SHGFP_TYPE_DEFAULT 1 ; inline + +LIBRARY: shell32 + +TYPEDEF: void* PIDLIST_ABSOLUTE +FUNCTION: HRESULT SHGetFolderPathW ( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPTSTR pszPath ) ; +! SHGetSpecialFolderLocation +! SHGetSpecialFolderPath + +: SHGetFolderPath SHGetFolderPathW ; inline + +: shell32-error ( n -- ) + dup S_OK = [ + drop + ] [ + { + ! { ERROR_FILE_NOT_FOUND [ "file not found" throw ] } + ! { E_INVALIDARG [ "invalid arg" throw ] } + [ (win32-error-string) throw ] + } case + ] if ; + +: shell32-directory ( n -- str ) + f swap f SHGFP_TYPE_DEFAULT + MAX_UNICODE_PATH "ushort" + [ SHGetFolderPath shell32-error ] keep alien>u16-string ; + +: desktop ( -- str ) + CSIDL_DESKTOPDIRECTORY shell32-directory ; + +: my-documents ( -- str ) + CSIDL_PERSONAL shell32-directory ; + +: application-data ( -- str ) + CSIDL_APPDATA shell32-directory ; + +: programs ( -- str ) + CSIDL_PROGRAMS shell32-directory ; + +: program-files ( -- str ) + CSIDL_PROGRAM_FILES shell32-directory ; + +: program-files-x86 ( -- str ) + CSIDL_PROGRAM_FILESX86 shell32-directory ; + +: program-files-common ( -- str ) + CSIDL_PROGRAM_FILES_COMMON shell32-directory ; + +: program-files-common-x86 ( -- str ) + CSIDL_PROGRAM_FILES_COMMONX86 shell32-directory ; diff --git a/extra/windows/windows.factor b/extra/windows/windows.factor index 657a8e8a7c..e07c504781 100755 --- a/extra/windows/windows.factor +++ b/extra/windows/windows.factor @@ -7,6 +7,7 @@ IN: windows : lo-word ( wparam -- lo ) *short ; inline : hi-word ( wparam -- hi ) -16 shift lo-word ; inline +: MAX_UNICODE_PATH 32768 ; inline ! You must LocalFree the return value! FUNCTION: void* error_message ( DWORD id ) ; From e63e96d7e14e3059a2514036b8bf7443d55264ed Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 01:04:23 -0600 Subject: [PATCH 187/285] Add word to get windows directory --- extra/hardware-info/windows/windows.factor | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/extra/hardware-info/windows/windows.factor b/extra/hardware-info/windows/windows.factor index bbae541ab4..88e9a8cfb5 100644 --- a/extra/hardware-info/windows/windows.factor +++ b/extra/hardware-info/windows/windows.factor @@ -1,5 +1,6 @@ USING: alien alien.c-types kernel libc math namespaces -windows windows.kernel32 windows.advapi32 hardware-info ; +windows windows.kernel32 windows.advapi32 hardware-info +words ; IN: hardware-info.windows TUPLE: wince ; @@ -53,6 +54,22 @@ M: windows cpus ( -- n ) : sse3? ( -- ? ) PF_SSE3_INSTRUCTIONS_AVAILABLE feature-present? ; +: ( n -- obj ) + "ushort" ; + +: get-directory ( word -- str ) + >r MAX_UNICODE_PATH [ ] keep dupd r> + execute win32-error=0/f alien>u16-string ; inline + +: windows-directory ( -- str ) + \ GetWindowsDirectory get-directory ; + +: system-directory ( -- str ) + \ GetSystemDirectory get-directory ; + +: system-windows-directory ( -- str ) + \ GetSystemWindowsDirectory get-directory ; + USE-IF: wince? hardware-info.windows.ce USE-IF: winnt? hardware-info.windows.nt From adb540e4851964ca698a9c211c649e4382938e46 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 01:21:52 -0600 Subject: [PATCH 188/285] Wordpad integration (it's default installed on windows, handles \n, but no line numbers) --- extra/editors/wordpad/authors.txt | 1 + extra/editors/wordpad/summary.txt | 1 + extra/editors/wordpad/wordpad.factor | 13 +++++++++++++ 3 files changed, 15 insertions(+) create mode 100644 extra/editors/wordpad/authors.txt create mode 100644 extra/editors/wordpad/summary.txt create mode 100644 extra/editors/wordpad/wordpad.factor diff --git a/extra/editors/wordpad/authors.txt b/extra/editors/wordpad/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/editors/wordpad/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/editors/wordpad/summary.txt b/extra/editors/wordpad/summary.txt new file mode 100644 index 0000000000..016c602e75 --- /dev/null +++ b/extra/editors/wordpad/summary.txt @@ -0,0 +1 @@ +Wordpad editor integration diff --git a/extra/editors/wordpad/wordpad.factor b/extra/editors/wordpad/wordpad.factor new file mode 100644 index 0000000000..4369013b50 --- /dev/null +++ b/extra/editors/wordpad/wordpad.factor @@ -0,0 +1,13 @@ +USING: editors hardware-info.windows io.launcher kernel +math.parser namespaces sequences windows.shell32 ; +IN: editors.wordpad + +: wordpad ( file line -- ) + [ + \ wordpad get-global % drop " " % % + ] "" make run-detached ; + +program-files "\\Windows NT\\Accessories\\wordpad.exe" append +\ wordpad set-global + +[ wordpad ] edit-hook set-global From f4600ded0cc8b4f789d0dc17a92a786afd0b8ab2 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 01:25:22 -0600 Subject: [PATCH 189/285] Put "" around the filename for wordpad --- extra/editors/wordpad/wordpad.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/editors/wordpad/wordpad.factor b/extra/editors/wordpad/wordpad.factor index 4369013b50..e1646a0855 100644 --- a/extra/editors/wordpad/wordpad.factor +++ b/extra/editors/wordpad/wordpad.factor @@ -4,7 +4,7 @@ IN: editors.wordpad : wordpad ( file line -- ) [ - \ wordpad get-global % drop " " % % + \ wordpad get-global % drop " " % "\"" % % "\"" % ] "" make run-detached ; program-files "\\Windows NT\\Accessories\\wordpad.exe" append From 3d0304e61445c8fc345aab1a96545c7548fe5bb2 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 01:44:20 -0600 Subject: [PATCH 190/285] Fix bootstrap --- extra/windows/nt/nt.factor | 2 -- 1 file changed, 2 deletions(-) diff --git a/extra/windows/nt/nt.factor b/extra/windows/nt/nt.factor index a485beba00..8a709416d8 100644 --- a/extra/windows/nt/nt.factor +++ b/extra/windows/nt/nt.factor @@ -13,5 +13,3 @@ USING: alien sequences ; { "glu" "glu32.dll" "stdcall" } { "freetype" "freetype6.dll" "cdecl" } } [ first3 add-library ] each - -USING: windows.shell32 ; From 244558f48d79a02ee076f74262dca585b9235d7d Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 08:46:18 -0600 Subject: [PATCH 191/285] Add open-in-explorer --- extra/windows/shell32/shell32.factor | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/extra/windows/shell32/shell32.factor b/extra/windows/shell32/shell32.factor index a6599df637..98ad6b0bd9 100644 --- a/extra/windows/shell32/shell32.factor +++ b/extra/windows/shell32/shell32.factor @@ -67,13 +67,27 @@ IN: windows.shell32 : CSIDL_FLAG_CREATE HEX: 8000 ; inline : CSIDL_FLAG_MASK HEX: ff00 ; inline +: SW_HIDE 0 ; inline +: SW_SHOWNORMAL 1 ; inline +: SW_NORMAL 1 ; inline +: SW_SHOWMINIMIZED 2 ; inline +: SW_SHOWMAXIMIZED 3 ; inline +: SW_MAXIMIZE 3 ; inline +: SW_SHOWNOACTIVATE 4 ; inline +: SW_SHOW 5 ; inline +: SW_MINIMIZE 6 ; inline +: SW_SHOWMINNOACTIVE 7 ; inline +: SW_SHOWNA 8 ; inline +: SW_RESTORE 9 ; inline +: SW_SHOWDEFAULT 10 ; inline +: SW_MAX 10 ; inline + : S_OK 0 ; inline : S_FALSE 1 ; inline : E_FAIL HEX: 80004005 ; inline : E_INVALIDARG HEX: 80070057 ; inline : ERROR_FILE_NOT_FOUND 2 ; inline - : SHGFP_TYPE_CURRENT 0 ; inline : SHGFP_TYPE_DEFAULT 1 ; inline @@ -83,6 +97,11 @@ TYPEDEF: void* PIDLIST_ABSOLUTE FUNCTION: HRESULT SHGetFolderPathW ( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPTSTR pszPath ) ; ! SHGetSpecialFolderLocation ! SHGetSpecialFolderPath +FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd ) ; +: ShellExecute ShellExecuteW ; inline + +: open-in-explorer ( dir -- ) + f "open" rot f f SW_SHOWNORMAL ShellExecute drop ; : SHGetFolderPath SHGetFolderPathW ; inline From 9143e843b110f39a55253b72ae98331a36569a2f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 09:00:15 -0600 Subject: [PATCH 192/285] Force windows.shell32 to load when UI loads Remove duplicated code --- extra/ui/windows/windows.factor | 4 ++-- extra/windows/shell32/shell32.factor | 16 +--------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/extra/ui/windows/windows.factor b/extra/ui/windows/windows.factor index 3d95e281aa..9ee9994d95 100755 --- a/extra/ui/windows/windows.factor +++ b/extra/ui/windows/windows.factor @@ -4,8 +4,8 @@ USING: alien alien.c-types arrays assocs ui ui.gadgets ui.backend ui.clipboards ui.gadgets.worlds ui.gestures io kernel math math.vectors namespaces prettyprint sequences strings vectors words windows.kernel32 windows.gdi32 windows.user32 -windows.opengl32 windows.messages windows.types windows.nt -windows threads timers libc combinators continuations +windows.shell32 windows.opengl32 windows.messages windows.types +windows.nt windows threads timers libc combinators continuations command-line shuffle opengl ui.render ; IN: ui.windows diff --git a/extra/windows/shell32/shell32.factor b/extra/windows/shell32/shell32.factor index 98ad6b0bd9..25d265479e 100644 --- a/extra/windows/shell32/shell32.factor +++ b/extra/windows/shell32/shell32.factor @@ -1,5 +1,5 @@ USING: alien alien.c-types alien.syntax combinators -kernel windows ; +kernel windows windows.user32 ; IN: windows.shell32 : CSIDL_DESKTOP HEX: 00 ; inline @@ -67,20 +67,6 @@ IN: windows.shell32 : CSIDL_FLAG_CREATE HEX: 8000 ; inline : CSIDL_FLAG_MASK HEX: ff00 ; inline -: SW_HIDE 0 ; inline -: SW_SHOWNORMAL 1 ; inline -: SW_NORMAL 1 ; inline -: SW_SHOWMINIMIZED 2 ; inline -: SW_SHOWMAXIMIZED 3 ; inline -: SW_MAXIMIZE 3 ; inline -: SW_SHOWNOACTIVATE 4 ; inline -: SW_SHOW 5 ; inline -: SW_MINIMIZE 6 ; inline -: SW_SHOWMINNOACTIVE 7 ; inline -: SW_SHOWNA 8 ; inline -: SW_RESTORE 9 ; inline -: SW_SHOWDEFAULT 10 ; inline -: SW_MAX 10 ; inline : S_OK 0 ; inline : S_FALSE 1 ; inline From 6ffd6456c4b892ff7a8ea63cc5cb17f7d6907765 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 09:42:08 -0600 Subject: [PATCH 193/285] Add some code to build up all possible quotations with random-tester --- extra/random-tester/utils/utils.factor | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/extra/random-tester/utils/utils.factor b/extra/random-tester/utils/utils.factor index ef3d66ad2d..91aefabe6f 100644 --- a/extra/random-tester/utils/utils.factor +++ b/extra/random-tester/utils/utils.factor @@ -1,5 +1,5 @@ USING: arrays assocs combinators.lib continuations kernel -math math.functions namespaces quotations random sequences +math math.functions memoize namespaces quotations random sequences sequences.private shuffle ; IN: random-tester.utils @@ -93,3 +93,13 @@ C: p-list >r make-p-list r> (each-permutation) ; +MEMO: builder-permutations ( n -- seq ) + { compose curry } swap permutations + [ >quotation ] map ; foldable + +: all-quot-permutations ( seq -- newseq ) + dup length 1- builder-permutations + swap [ 1quotation ] map dup length permutations + [ swap [ >r seq>stack r> call ] curry* map ] curry* map ; + +! clear { map sq 10 } all-quot-permutations [ [ [ [ [ call ] keep datastack length 2 = [ . .s nl ] when ] catch ] in-thread drop ] each ] each From 70299ba86a26d7721d47ff4852cc0732f77d7589 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 09:49:39 -0600 Subject: [PATCH 194/285] Fix bug curry -> swap curry --- extra/random-tester/utils/utils.factor | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/extra/random-tester/utils/utils.factor b/extra/random-tester/utils/utils.factor index 91aefabe6f..1c591a11e9 100644 --- a/extra/random-tester/utils/utils.factor +++ b/extra/random-tester/utils/utils.factor @@ -93,9 +93,9 @@ C: p-list >r make-p-list r> (each-permutation) ; -MEMO: builder-permutations ( n -- seq ) - { compose curry } swap permutations - [ >quotation ] map ; foldable +: builder-permutations ( n -- seq ) + { [ compose ] [ swap curry ] } swap permutations + [ concat ] map ; foldable : all-quot-permutations ( seq -- newseq ) dup length 1- builder-permutations @@ -103,3 +103,4 @@ MEMO: builder-permutations ( n -- seq ) [ swap [ >r seq>stack r> call ] curry* map ] curry* map ; ! clear { map sq 10 } all-quot-permutations [ [ [ [ [ call ] keep datastack length 2 = [ . .s nl ] when ] catch ] in-thread drop ] each ] each +! clear { map sq sq 10 } all-quot-permutations [ [ [ [ [ call ] keep datastack length 2 = [ . .s nl ] when ] catch ] in-thread drop ] each ] each From ddd55ac4faab03e1c3ec2b7e7c1e2ecdc374bd58 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 18:09:08 -0600 Subject: [PATCH 195/285] Experimental find-binary and find-library words --- core/io/files/files.factor | 14 ++++++++++++++ extra/io/windows/windows.factor | 12 +++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/core/io/files/files.factor b/core/io/files/files.factor index 1dd4259bb6..03bcb77731 100755 --- a/core/io/files/files.factor +++ b/core/io/files/files.factor @@ -126,3 +126,17 @@ TUPLE: pathname string ; C: pathname M: pathname <=> [ pathname-string ] compare ; + +HOOK: library-roots io-backend ( -- seq ) +HOOK: binary-roots io-backend ( -- seq ) + +: find-file ( seq str -- path/f ) + [ + [ path+ exists? ] curry find nip + ] keep over [ path+ ] [ drop ] if ; + +: find-library ( str -- path/f ) + library-roots swap find-file ; + +: find-binary ( str -- path/f ) + binary-roots swap find-file ; diff --git a/extra/io/windows/windows.factor b/extra/io/windows/windows.factor index d112a99cae..2defa48298 100755 --- a/extra/io/windows/windows.factor +++ b/extra/io/windows/windows.factor @@ -4,13 +4,23 @@ USING: alien alien.c-types arrays destructors io io.backend io.buffers io.files io.nonblocking io.sockets io.binary io.sockets.impl windows.errors strings io.streams.duplex kernel math namespaces sequences windows windows.kernel32 -windows.winsock splitting ; +windows.shell32 windows.winsock splitting ; IN: io.windows TUPLE: windows-nt-io ; TUPLE: windows-ce-io ; UNION: windows-io windows-nt-io windows-ce-io ; +M: windows-io library-roots ( -- seq ) + [ + windows , + ] { } make ; + +M: windows-io binary-roots ( -- seq ) + [ + windows , + ] { } make ; + M: windows-io destruct-handle CloseHandle drop ; M: windows-io destruct-socket closesocket drop ; From 583b3abd7417d66eaa5a972b2fe26bbbdc71ae79 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 18:10:55 -0600 Subject: [PATCH 196/285] Add windows word to shell32 --- extra/windows/shell32/shell32.factor | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/extra/windows/shell32/shell32.factor b/extra/windows/shell32/shell32.factor index 25d265479e..501f49edfe 100644 --- a/extra/windows/shell32/shell32.factor +++ b/extra/windows/shell32/shell32.factor @@ -79,18 +79,15 @@ IN: windows.shell32 LIBRARY: shell32 -TYPEDEF: void* PIDLIST_ABSOLUTE FUNCTION: HRESULT SHGetFolderPathW ( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPTSTR pszPath ) ; -! SHGetSpecialFolderLocation -! SHGetSpecialFolderPath +: SHGetFolderPath SHGetFolderPathW ; inline + FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd ) ; : ShellExecute ShellExecuteW ; inline : open-in-explorer ( dir -- ) f "open" rot f f SW_SHOWNORMAL ShellExecute drop ; -: SHGetFolderPath SHGetFolderPathW ; inline - : shell32-error ( n -- ) dup S_OK = [ drop @@ -116,6 +113,9 @@ FUNCTION: HINSTANCE ShellExecuteW ( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFi : application-data ( -- str ) CSIDL_APPDATA shell32-directory ; +: windows ( -- str ) + CSIDL_WINDOWS shell32-directory ; + : programs ( -- str ) CSIDL_PROGRAMS shell32-directory ; From 7d30e47bca9eec18d00def7a6e9905f31b4bec5c Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 5 Dec 2007 19:49:29 -0600 Subject: [PATCH 197/285] Add library-roots and binary-roots for linux/mac --- extra/io/unix/files/files.factor | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/extra/io/unix/files/files.factor b/extra/io/unix/files/files.factor index f9d642d661..8f1d05876d 100755 --- a/extra/io/unix/files/files.factor +++ b/extra/io/unix/files/files.factor @@ -38,3 +38,21 @@ M: unix-io make-directory ( path -- ) M: unix-io delete-directory ( path -- ) rmdir io-error ; + +M: unix-io binary-roots ( -- seq ) + { + "/bin" "/sbin" + "/usr/bin" "/usr/sbin" + "/usr/local/bin" "/usr/local/sbin" + "/opt/local/bin" "/opt/local/sbin" + "~/bin" + } ; + +M: unix-io library-roots ( -- seq ) + { + "/lib" + "/usr/lib" + "/usr/local/lib" + "/opt/local/lib" + "/lib64" + } ; From c2e2fb2304e7f10baaf1a3044a01c98b9ae5e161 Mon Sep 17 00:00:00 2001 From: Daniel Ehrenberg Date: Wed, 5 Dec 2007 21:00:52 -0500 Subject: [PATCH 198/285] extra/rss now works with some Atom 0.3 feeds --- extra/rss/rss.factor | 64 +++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/extra/rss/rss.factor b/extra/rss/rss.factor index da810ee377..40395e720f 100644 --- a/extra/rss/rss.factor +++ b/extra/rss/rss.factor @@ -9,6 +9,9 @@ USING: xml.utilities kernel assocs : ?children>string ( tag/f -- string/f ) [ children>string ] [ f ] if* ; +: any-tag-named ( tag names -- tag-inside ) + f -rot [ tag-named nip dup ] curry* find 2drop ; + TUPLE: feed title link entries ; C: feed @@ -17,50 +20,51 @@ TUPLE: entry title link description pub-date ; C: entry +: rss1.0-entry ( tag -- entry ) + [ "title" tag-named children>string ] keep + [ "link" tag-named children>string ] keep + [ "description" tag-named children>string ] keep + f "date" "http://purl.org/dc/elements/1.1/" + tag-named ?children>string + ; + : rss1.0 ( xml -- feed ) [ "channel" tag-named [ "title" tag-named children>string ] keep "link" tag-named children>string ] keep - "item" tags-named [ - [ "title" tag-named children>string ] keep - [ "link" tag-named children>string ] keep - [ "description" tag-named children>string ] keep - f "date" "http://purl.org/dc/elements/1.1/" - tag-named ?children>string - - ] map ; + "item" tags-named [ rss1.0-entry ] map ; + +: rss2.0-entry ( tag -- entry ) + [ "title" tag-named children>string ] keep + [ "link" tag-named ] keep + [ "guid" tag-named dupd ? children>string ] keep + [ "description" tag-named children>string ] keep + "pubDate" tag-named children>string ; : rss2.0 ( xml -- feed ) "channel" tag-named [ "title" tag-named children>string ] keep [ "link" tag-named children>string ] keep - "item" tags-named [ - [ "title" tag-named children>string ] keep - [ "link" tag-named ] keep - [ "guid" tag-named dupd ? children>string ] keep - [ "description" tag-named children>string ] keep - "pubDate" tag-named children>string - ] map ; + "item" tags-named [ rss2.0-entry ] map ; + +: atom1.0-entry ( tag -- entry ) + [ "title" tag-named children>string ] keep + [ "link" tag-named "href" swap at ] keep + [ + { "content" "summary" } any-tag-named + dup tag-children [ string? not ] contains? + [ tag-children [ write-chunk ] string-out ] + [ children>string ] if + ] keep + { "published" "updated" "issued" "modified" } any-tag-named + children>string ; : atom1.0 ( xml -- feed ) [ "title" tag-named children>string ] keep [ "link" tag-named "href" swap at ] keep - "entry" tags-named [ - [ "title" tag-named children>string ] keep - [ "link" tag-named "href" swap at ] keep - [ - dup "content" tag-named - [ nip ] [ "summary" tag-named ] if* - dup tag-children [ tag? ] contains? - [ tag-children [ write-chunk ] string-out ] - [ children>string ] if - ] keep - dup "published" tag-named - [ nip ] [ "updated" tag-named ] if* - children>string - ] map ; + "entry" tags-named [ atom1.0-entry ] map ; : xml>feed ( xml -- feed ) dup name-tag { @@ -74,7 +78,7 @@ C: entry : download-feed ( url -- feed ) #! Retrieve an news syndication file, return as a feed tuple. - http-get rot 200 = [ + http-get-stream rot 200 = [ nip read-feed ] [ 2drop "Error retrieving newsfeed file" throw From 214974ec52d97de3d9917b29d7bd122d821e2c83 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 5 Dec 2007 23:16:13 -0500 Subject: [PATCH 199/285] Fix feed>xml --- extra/rss/rss.factor | 9 ++++++--- extra/webapps/planet/{planet.fhtml => planet.furnace} | 7 ++++++- 2 files changed, 12 insertions(+), 4 deletions(-) rename extra/webapps/planet/{planet.fhtml => planet.furnace} (83%) diff --git a/extra/rss/rss.factor b/extra/rss/rss.factor index da810ee377..0e78208f86 100644 --- a/extra/rss/rss.factor +++ b/extra/rss/rss.factor @@ -74,7 +74,7 @@ C: entry : download-feed ( url -- feed ) #! Retrieve an news syndication file, return as a feed tuple. - http-get rot 200 = [ + http-get-stream rot 200 = [ nip read-feed ] [ 2drop "Error retrieving newsfeed file" throw @@ -84,12 +84,15 @@ C: entry : simple-tag, ( content name -- ) [ , ] tag, ; +: simple-tag*, ( content name attrs -- ) + [ , ] tag*, ; + : entry, ( entry -- ) "entry" [ - dup entry-title "title" simple-tag, + dup entry-title "title" { { "type" "html" } } simple-tag*, "link" over entry-link "href" associate contained*, dup entry-pub-date "published" simple-tag, - entry-description "content" simple-tag, + entry-description "content" { { "type" "html" } } simple-tag*, ] tag, ; : feed>xml ( feed -- xml ) diff --git a/extra/webapps/planet/planet.fhtml b/extra/webapps/planet/planet.furnace similarity index 83% rename from extra/webapps/planet/planet.fhtml rename to extra/webapps/planet/planet.furnace index fb5a673077..bc9172a55a 100644 --- a/extra/webapps/planet/planet.fhtml +++ b/extra/webapps/planet/planet.furnace @@ -9,6 +9,7 @@ planet-factor + @@ -23,7 +24,11 @@ Planet Lisp.

- This webapp is written in Factor. + + Syndicate +

+

+ This webapp is written in Factor.
<% "webapps.planet" browse-webapp-source %>

Blogroll

From 4eb4982e60264f62bc3c2341bb9046d2a4dee11b Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 5 Dec 2007 23:16:20 -0500 Subject: [PATCH 200/285] RSS feed in planet --- extra/webapps/planet/planet.factor | 135 ++++++++++++++--------------- 1 file changed, 65 insertions(+), 70 deletions(-) diff --git a/extra/webapps/planet/planet.factor b/extra/webapps/planet/planet.factor index 9fdafe033b..92da085128 100644 --- a/extra/webapps/planet/planet.factor +++ b/extra/webapps/planet/planet.factor @@ -1,41 +1,14 @@ USING: sequences rss arrays concurrency kernel sorting html.elements io assocs namespaces math threads vocabs html furnace http.server.templating calendar math.parser splitting -continuations debugger system http.server.responders ; +continuations debugger system http.server.responders +xml.writer ; IN: webapps.planet -TUPLE: posting author title date link body ; - -: diagnostic write print flush ; - -: fetch-feed ( pair -- feed ) - second - dup "Fetching " diagnostic - dup download-feed feed-entries - swap "Done fetching " diagnostic ; - -: fetch-blogroll ( blogroll -- entries ) - #! entries is an array of { author entries } pairs. - dup [ - [ fetch-feed ] [ error. drop f ] recover - ] parallel-map - [ [ >r first r> 2array ] curry* map ] 2map concat ; - -: sort-entries ( entries -- entries' ) - [ [ second entry-pub-date ] compare ] sort ; - -: ( pair -- posting ) - #! pair has shape { author entry } - first2 - { entry-title entry-pub-date entry-link entry-description } - get-slots posting construct-boa ; - : print-posting-summary ( posting -- )

- dup posting-title write
- "- " write - dup posting-author write bl - + dup entry-title write
+
"Read More..." write

; @@ -63,14 +36,16 @@ TUPLE: posting author title date link body ; : print-posting ( posting -- )

- - dup posting-title write-html - " - " write - dup posting-author write + + dup entry-title write-html

-

dup posting-body write-html

-

posting-date format-date write

; +

+ dup entry-description write-html +

+

+ entry-pub-date format-date write +

; : print-postings ( postings -- ) [ print-posting ] each ; @@ -83,38 +58,56 @@ TUPLE: posting author title date link body ; SYMBOL: default-blogroll SYMBOL: cached-postings -: update-cached-postings ( -- ) - default-blogroll get fetch-blogroll sort-entries - [ ] map - cached-postings set-global ; - : mini-planet-factor ( -- ) cached-postings get 4 head print-posting-summaries ; : planet-factor ( -- ) - serving-html [ - "resource:extra/webapps/planet/planet.fhtml" - run-template-file - ] with-html-stream ; + serving-html [ "planet" render-template ] with-html-stream ; \ planet-factor { } define-action -{ - { "Berlin Brown" "http://factorlang-fornovices.blogspot.com/feeds/posts/default" "http://factorlang-fornovices.blogspot.com" } - { "Chris Double" "http://www.bluishcoder.co.nz/atom.xml" "http://www.bluishcoder.co.nz/" } - { "Elie Chaftari" "http://fun-factor.blogspot.com/feeds/posts/default" "http://fun-factor.blogspot.com/" } - { "Doug Coleman" "http://code-factor.blogspot.com/feeds/posts/default" "http://code-factor.blogspot.com/" } - { "Daniel Ehrenberg" "http://useless-factor.blogspot.com/feeds/posts/default" "http://useless-factor.blogspot.com/" } - { "Kio M. Smallwood" - "http://sekenre.wordpress.com/feed/atom/" - "http://sekenre.wordpress.com/" } - { "Phil Dawes" "http://www.phildawes.net/blog/category/factor/feed/atom" "http://www.phildawes.net/blog/" } - { "Samuel Tardieu" "http://www.rfc1149.net/blog/tag/factor/feed/atom/" "http://www.rfc1149.net/blog/tag/factor/" } - { "Slava Pestov" "http://factor-language.blogspot.com/atom.xml" "http://factor-language.blogspot.com/" } -} default-blogroll set-global +: planet-feed ( -- feed ) + "[ planet-factor ]" + "http://planet.factorcode.org" + cached-postings get 30 head ; + +: feed.xml + "text/xml" serving-content + planet-feed feed>xml write-xml ; + +\ feed.xml { } define-action SYMBOL: last-update +: diagnostic write print flush ; + +: fetch-feed ( triple -- feed ) + second + dup "Fetching " diagnostic + dup download-feed feed-entries + swap "Done fetching " diagnostic ; + +: ( author entry -- entry' ) + clone + [ ": " swap entry-title 3append ] keep + [ set-entry-title ] keep ; + +: ?fetch-feed ( triple -- feed/f ) + [ fetch-feed ] [ error. drop f ] recover ; + +: fetch-blogroll ( blogroll -- entries ) + dup 0 + swap [ ?fetch-feed ] parallel-map + [ [ ] curry* map ] 2map concat ; + +: sort-entries ( entries -- entries' ) + [ [ entry-pub-date ] compare ] sort ; + +: update-cached-postings ( -- ) + default-blogroll get + fetch-blogroll sort-entries + cached-postings set-global ; + : update-thread ( -- ) millis last-update set-global [ update-cached-postings ] in-thread @@ -126,14 +119,16 @@ SYMBOL: last-update "planet" "planet-factor" "extra/webapps/planet" web-app -: merge-feeds ( feeds -- feed ) - [ feed-entries ] map concat sort-entries ; - -: planet-feed ( -- feed ) - default-blogroll get [ second download-feed ] map merge-feeds - >r "[ planet-factor ]" "http://planet.factorcode.org" r> - feed>xml ; - -: feed.xml planet-feed ; - -\ feed.xml { } define-action +{ + { "Berlin Brown" "http://factorlang-fornovices.blogspot.com/feeds/posts/default" "http://factorlang-fornovices.blogspot.com" } + { "Chris Double" "http://www.bluishcoder.co.nz/atom.xml" "http://www.bluishcoder.co.nz/" } + { "Elie Chaftari" "http://fun-factor.blogspot.com/feeds/posts/default" "http://fun-factor.blogspot.com/" } + { "Doug Coleman" "http://code-factor.blogspot.com/feeds/posts/default" "http://code-factor.blogspot.com/" } + { "Daniel Ehrenberg" "http://useless-factor.blogspot.com/feeds/posts/default" "http://useless-factor.blogspot.com/" } + { "Kio M. Smallwood" + "http://sekenre.wordpress.com/feed/atom/" + "http://sekenre.wordpress.com/" } + ! { "Phil Dawes" "http://www.phildawes.net/blog/category/factor/feed/atom" "http://www.phildawes.net/blog/" } + { "Samuel Tardieu" "http://www.rfc1149.net/blog/tag/factor/feed/atom/" "http://www.rfc1149.net/blog/tag/factor/" } + { "Slava Pestov" "http://factor-language.blogspot.com/atom.xml" "http://factor-language.blogspot.com/" } +} default-blogroll set-global From 6120f5f3876e1b6d5c9caeb544622aa5099bf133 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 00:06:34 -0500 Subject: [PATCH 201/285] Furnace improvements --- extra/furnace/furnace.factor | 65 ++++++++++--------- extra/webapps/pastebin/annotate-paste.furnace | 7 +- extra/webapps/pastebin/modes.furnace | 7 ++ extra/webapps/pastebin/new-paste.furnace | 7 ++ extra/webapps/pastebin/paste-list.furnace | 30 +++++++-- extra/webapps/pastebin/paste-summary.furnace | 14 ++-- extra/webapps/pastebin/pastebin.factor | 37 +++++------ extra/webapps/pastebin/show-paste.furnace | 18 ++++- extra/webapps/pastebin/syntax.furnace | 7 ++ extra/webapps/planet/planet.factor | 2 +- 10 files changed, 128 insertions(+), 66 deletions(-) create mode 100644 extra/webapps/pastebin/modes.furnace create mode 100644 extra/webapps/pastebin/syntax.furnace diff --git a/extra/furnace/furnace.factor b/extra/furnace/furnace.factor index f2ce0ddf18..076b506112 100644 --- a/extra/furnace/furnace.factor +++ b/extra/furnace/furnace.factor @@ -101,36 +101,10 @@ SYMBOL: request-params : service-post ( url -- ) "response" get swap service-request ; -: explode-tuple ( tuple -- ) - dup tuple-slots swap class "slot-names" word-prop - [ set ] 2each ; - -SYMBOL: model - -: call-template ( model template -- ) - [ - >r [ dup model set explode-tuple ] when* r> - ".furnace" append resource-path run-template-file - ] with-scope ; - -: render-template ( model template -- ) - template-path get swap path+ call-template ; - -: render-page* ( model body-template head-template -- ) - [ - [ render-template ] [ f rot render-template ] html-document - ] serve-html ; - -: render-titled-page* ( model body-template head-template title -- ) - [ - [ render-template ] swap [ write f rot render-template ] curry html-document - ] serve-html ; - - -: render-page ( model template title -- ) - [ - [ render-template ] simple-html-document - ] serve-html ; +: render-template ( template -- ) + template-path get swap path+ + ".furnace" append resource-path + run-template-file ; : web-app ( name default path -- ) [ @@ -141,3 +115,34 @@ SYMBOL: model [ service-post ] "post" set ! [ service-head ] "head" set ] make-responder ; + +: explode-tuple ( tuple -- ) + dup tuple-slots swap class "slot-names" word-prop + [ set ] 2each ; + +SYMBOL: model + +: with-slots ( model quot -- ) + [ + >r [ dup model set explode-tuple ] when* r> call + ] with-scope ; + +: render-component ( model template -- ) + swap [ render-template ] with-slots ; + +! Deprecated stuff + +: render-page* ( model body-template head-template -- ) + [ + [ render-component ] [ f rot render-component ] html-document + ] serve-html ; + +: render-titled-page* ( model body-template head-template title -- ) + [ + [ render-component ] swap [ write f rot render-component ] curry html-document + ] serve-html ; + +: render-page ( model template title -- ) + [ + [ render-component ] simple-html-document + ] serve-html ; diff --git a/extra/webapps/pastebin/annotate-paste.furnace b/extra/webapps/pastebin/annotate-paste.furnace index c963e2f88f..301726209b 100644 --- a/extra/webapps/pastebin/annotate-paste.furnace +++ b/extra/webapps/pastebin/annotate-paste.furnace @@ -1,4 +1,4 @@ -<% USING: io math math.parser namespaces ; %> +<% USING: io math math.parser namespaces furnace ; %>

Annotate

@@ -18,6 +18,11 @@
+ + + + + diff --git a/extra/webapps/pastebin/modes.furnace b/extra/webapps/pastebin/modes.furnace new file mode 100644 index 0000000000..cc09ae90ed --- /dev/null +++ b/extra/webapps/pastebin/modes.furnace @@ -0,0 +1,7 @@ +<% USING: xmode.catalog sequences kernel html.elements assocs io ; %> + + diff --git a/extra/webapps/pastebin/new-paste.furnace b/extra/webapps/pastebin/new-paste.furnace index 8a2544e801..98b9bae8b7 100644 --- a/extra/webapps/pastebin/new-paste.furnace +++ b/extra/webapps/pastebin/new-paste.furnace @@ -1,3 +1,5 @@ +<% USING: furnace ; %> +
File type:<% "modes" render-template %>
Contents:
@@ -12,6 +14,11 @@ + + + + + diff --git a/extra/webapps/pastebin/paste-list.furnace b/extra/webapps/pastebin/paste-list.furnace index 7a25ae2f50..1edc312f54 100644 --- a/extra/webapps/pastebin/paste-list.furnace +++ b/extra/webapps/pastebin/paste-list.furnace @@ -1,7 +1,29 @@ <% USING: namespaces furnace sequences ; %> -
File type:<% "modes" render-template %>
Channel:
-<% "new-paste-quot" get "New paste" render-link %> - -<% "pastes" get [ "paste-summary" render-template ] each %>
 Summary:Paste by:LinkDate
+ + + + + + Pastebin + + + + + +

[ "paste" bin ]

+ + + <% "new-paste-quot" get "New paste" render-link %> + + + + + + + <% "pastes" get [ "paste-summary" render-component ] each %> +
 Summary:Paste by:Date:
+ + diff --git a/extra/webapps/pastebin/paste-summary.furnace b/extra/webapps/pastebin/paste-summary.furnace index f5c156a27e..87c01b646d 100644 --- a/extra/webapps/pastebin/paste-summary.furnace +++ b/extra/webapps/pastebin/paste-summary.furnace @@ -1,9 +1,13 @@ <% USING: continuations namespaces io kernel math math.parser furnace ; %> -<% "n" get number>string write %> -<% "summary" get write %> -<% "author" get write %> -<% "n" get number>string "show-paste-quot" get curry "Show" render-link %> -<% "date" get print %> + <% "n" get number>string write %> + <% + "n" get number>string + "show-paste-quot" get curry + "summary" get + render-link + %> + <% "author" get write %> + <% "date" get print %> diff --git a/extra/webapps/pastebin/pastebin.factor b/extra/webapps/pastebin/pastebin.factor index f592f96448..382b7fbb85 100644 --- a/extra/webapps/pastebin/pastebin.factor +++ b/extra/webapps/pastebin/pastebin.factor @@ -1,5 +1,5 @@ -USING: calendar furnace furnace.validator io.files kernel namespaces -sequences store ; +USING: calendar furnace furnace.validator io.files kernel +namespaces sequences store ; IN: webapps.pastebin TUPLE: pastebin pastes ; @@ -7,23 +7,17 @@ TUPLE: pastebin pastes ; : ( -- pastebin ) V{ } clone pastebin construct-boa ; -TUPLE: paste n summary article author channel contents date annotations ; +TUPLE: paste +summary author channel mode contents date +annotations n ; -: ( summary author channel contents -- paste ) - V{ } clone - { - set-paste-summary - set-paste-author - set-paste-channel - set-paste-contents - set-paste-annotations - } paste construct ; +: ( summary author channel mode contents -- paste ) + f V{ } clone f paste construct-boa ; -TUPLE: annotation summary author contents ; +TUPLE: annotation summary author mode contents ; C: annotation - SYMBOL: store "pastebin.store" resource-path load-store store set-global @@ -34,12 +28,12 @@ SYMBOL: store pastebin get pastebin-pastes nth ; : show-paste ( n -- ) - get-paste "show-paste" "Paste" render-page ; + get-paste "show-paste" render-component ; \ show-paste { { "n" v-number } } define-action : new-paste ( -- ) - f "new-paste" "New paste" render-page ; + "new-paste" render-template ; \ new-paste { } define-action @@ -47,22 +41,19 @@ SYMBOL: store [ [ show-paste ] "show-paste-quot" set [ new-paste ] "new-paste-quot" set - pastebin get "paste-list" "Pastebin" render-page + pastebin get "paste-list" render-component ] with-scope ; \ paste-list { } define-action - - : save-pastebin-store ( -- ) store get-global save-store ; : add-paste ( paste pastebin -- ) >r now timestamp>http-string over set-paste-date r> - pastebin-pastes - [ length over set-paste-n ] keep push ; + pastebin-pastes 2dup length swap set-paste-n push ; -: submit-paste ( summary author channel contents -- ) +: submit-paste ( summary author channel mode contents -- ) \ pastebin get-global add-paste save-pastebin-store ; @@ -71,6 +62,7 @@ SYMBOL: store { "summary" v-required } { "author" v-required } { "channel" "#concatenative" v-default } + { "mode" "factor" v-default } { "contents" v-required } } define-action @@ -85,6 +77,7 @@ SYMBOL: store { "n" v-required v-number } { "summary" v-required } { "author" v-required } + { "mode" "factor" v-default } { "contents" v-required } } define-action diff --git a/extra/webapps/pastebin/show-paste.furnace b/extra/webapps/pastebin/show-paste.furnace index b3b4e99b6e..8213857687 100644 --- a/extra/webapps/pastebin/show-paste.furnace +++ b/extra/webapps/pastebin/show-paste.furnace @@ -1,15 +1,27 @@ <% USING: namespaces io furnace sequences ; %> -

Paste: <% "summary" get write %>

+ + + + + + + Paste: <% "summary" get write %> + + + +

[ <% "summary" get write %> ]

+
Paste by:<% "author" get write %>
Channel:<% "channel" get write %>
Created:<% "date" get write %>
File type:<% "mode" get write %>
<% "contents" get write %>
-<% "annotations" get [ "annotation" render-template ] each %> +<% "annotations" get [ "annotation" render-component ] each %> -<% model get "annotate-paste" render-template %> +<% model get "annotate-paste" render-component %> diff --git a/extra/webapps/pastebin/syntax.furnace b/extra/webapps/pastebin/syntax.furnace new file mode 100644 index 0000000000..cc09ae90ed --- /dev/null +++ b/extra/webapps/pastebin/syntax.furnace @@ -0,0 +1,7 @@ +<% USING: xmode.catalog sequences kernel html.elements assocs io ; %> + + diff --git a/extra/webapps/planet/planet.factor b/extra/webapps/planet/planet.factor index 92da085128..0ddd48e36e 100644 --- a/extra/webapps/planet/planet.factor +++ b/extra/webapps/planet/planet.factor @@ -121,7 +121,7 @@ SYMBOL: last-update { { "Berlin Brown" "http://factorlang-fornovices.blogspot.com/feeds/posts/default" "http://factorlang-fornovices.blogspot.com" } - { "Chris Double" "http://www.bluishcoder.co.nz/atom.xml" "http://www.bluishcoder.co.nz/" } + { "Chris Double" "http://www.blogger.com/feeds/18561009/posts/full/-/factor" "http://www.bluishcoder.co.nz/" } { "Elie Chaftari" "http://fun-factor.blogspot.com/feeds/posts/default" "http://fun-factor.blogspot.com/" } { "Doug Coleman" "http://code-factor.blogspot.com/feeds/posts/default" "http://code-factor.blogspot.com/" } { "Daniel Ehrenberg" "http://useless-factor.blogspot.com/feeds/posts/default" "http://useless-factor.blogspot.com/" } From 54b52e7b01ff0b60159271c31c71bfa2f252a9c6 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 00:06:43 -0500 Subject: [PATCH 202/285] Stacke effect fix --- extra/xmode/catalog/catalog.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/xmode/catalog/catalog.factor b/extra/xmode/catalog/catalog.factor index cde9c6b025..866bd69106 100644 --- a/extra/xmode/catalog/catalog.factor +++ b/extra/xmode/catalog/catalog.factor @@ -26,7 +26,7 @@ TAGS> "extra/xmode/modes/catalog" resource-path read-xml parse-modes-tag ; -: modes ( -- ) +: modes ( -- assoc ) \ modes get-global [ load-catalog dup \ modes set-global ] unless* ; From 0e60982aca4090fd688b93bd4c4aee1964a3d574 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 00:22:35 -0500 Subject: [PATCH 203/285] Adding syntax highlighting support to the pastebin --- extra/webapps/pastebin/annotate-paste.furnace | 2 +- extra/webapps/pastebin/annotation.furnace | 2 +- extra/webapps/pastebin/new-paste.furnace | 2 +- extra/webapps/pastebin/pastebin.factor | 14 +++++++++----- extra/webapps/pastebin/show-paste.furnace | 5 +++-- extra/webapps/pastebin/syntax.furnace | 8 ++------ 6 files changed, 17 insertions(+), 16 deletions(-) mode change 100644 => 100755 extra/webapps/pastebin/annotate-paste.furnace mode change 100644 => 100755 extra/webapps/pastebin/annotation.furnace mode change 100644 => 100755 extra/webapps/pastebin/new-paste.furnace mode change 100644 => 100755 extra/webapps/pastebin/pastebin.factor mode change 100644 => 100755 extra/webapps/pastebin/show-paste.furnace mode change 100644 => 100755 extra/webapps/pastebin/syntax.furnace diff --git a/extra/webapps/pastebin/annotate-paste.furnace b/extra/webapps/pastebin/annotate-paste.furnace old mode 100644 new mode 100755 index 301726209b..89ce12fd61 --- a/extra/webapps/pastebin/annotate-paste.furnace +++ b/extra/webapps/pastebin/annotate-paste.furnace @@ -24,7 +24,7 @@ -Contents: +Content: diff --git a/extra/webapps/pastebin/annotation.furnace b/extra/webapps/pastebin/annotation.furnace old mode 100644 new mode 100755 index ed1bdac845..d4617667ed --- a/extra/webapps/pastebin/annotation.furnace +++ b/extra/webapps/pastebin/annotation.furnace @@ -8,4 +8,4 @@ Created:<% "date" get write %> -
<% "contents" get write %>
+<% "syntax" render-template % diff --git a/extra/webapps/pastebin/new-paste.furnace b/extra/webapps/pastebin/new-paste.furnace old mode 100644 new mode 100755 index 98b9bae8b7..28453f10f7 --- a/extra/webapps/pastebin/new-paste.furnace +++ b/extra/webapps/pastebin/new-paste.furnace @@ -25,7 +25,7 @@ -Contents: +Content: diff --git a/extra/webapps/pastebin/pastebin.factor b/extra/webapps/pastebin/pastebin.factor old mode 100644 new mode 100755 index 382b7fbb85..ad2198f282 --- a/extra/webapps/pastebin/pastebin.factor +++ b/extra/webapps/pastebin/pastebin.factor @@ -1,5 +1,5 @@ USING: calendar furnace furnace.validator io.files kernel -namespaces sequences store ; +namespaces sequences store http.server.responders html ; IN: webapps.pastebin TUPLE: pastebin pastes ; @@ -28,21 +28,25 @@ SYMBOL: store pastebin get pastebin-pastes nth ; : show-paste ( n -- ) - get-paste "show-paste" render-component ; + serving-html + get-paste + [ "show-paste" render-component ] with-html-stream ; \ show-paste { { "n" v-number } } define-action : new-paste ( -- ) - "new-paste" render-template ; + serving-html + [ "new-paste" render-template ] with-html-stream ; \ new-paste { } define-action : paste-list ( -- ) + serving-html [ [ show-paste ] "show-paste-quot" set [ new-paste ] "new-paste-quot" set pastebin get "paste-list" render-component - ] with-scope ; + ] with-html-stream ; \ paste-list { } define-action @@ -68,7 +72,7 @@ SYMBOL: store \ submit-paste [ paste-list ] define-redirect -: annotate-paste ( n summary author contents -- ) +: annotate-paste ( n summary author mode contents -- ) swap get-paste paste-annotations push save-pastebin-store ; diff --git a/extra/webapps/pastebin/show-paste.furnace b/extra/webapps/pastebin/show-paste.furnace old mode 100644 new mode 100755 index 8213857687..a724410b8c --- a/extra/webapps/pastebin/show-paste.furnace +++ b/extra/webapps/pastebin/show-paste.furnace @@ -1,4 +1,4 @@ -<% USING: namespaces io furnace sequences ; %> +<% USING: namespaces io furnace sequences xmode.code2html ; %> @@ -9,6 +9,7 @@ Paste: <% "summary" get write %> + <% default-stylesheet %>

[ <% "summary" get write %> ]

@@ -20,7 +21,7 @@ File type:<% "mode" get write %> -
<% "contents" get write %>
+<% "syntax" render-template %> <% "annotations" get [ "annotation" render-component ] each %> diff --git a/extra/webapps/pastebin/syntax.furnace b/extra/webapps/pastebin/syntax.furnace old mode 100644 new mode 100755 index cc09ae90ed..246b9d04b3 --- a/extra/webapps/pastebin/syntax.furnace +++ b/extra/webapps/pastebin/syntax.furnace @@ -1,7 +1,3 @@ -<% USING: xmode.catalog sequences kernel html.elements assocs io ; %> +<% USING: xmode.code2html splitting namespaces ; %> - +
<% "contents" get string-lines "mode" get htmlize-lines %>
From 59566c20e9bc3275c1a0e2bb449ebfd77e0177bb Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 00:23:05 -0500 Subject: [PATCH 204/285] Source responder with syntax highlighting --- extra/webapps/file/file.factor | 25 +++++++++++++++++++------ extra/webapps/source/source.factor | 20 ++++++++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) mode change 100644 => 100755 extra/webapps/file/file.factor create mode 100755 extra/webapps/source/source.factor diff --git a/extra/webapps/file/file.factor b/extra/webapps/file/file.factor old mode 100644 new mode 100755 index d8fec990db..5ec52ab96b --- a/extra/webapps/file/file.factor +++ b/extra/webapps/file/file.factor @@ -1,4 +1,4 @@ -! Copyright (C) 2004, 2006 Slava Pestov. +! Copyright (C) 2004, 2007 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: calendar html io io.files kernel math math.parser http.server.responders http.server.templating namespaces parser @@ -31,15 +31,24 @@ IN: webapps.file "304 Not Modified" response now timestamp>http-string "Date" associate print-header ; +! You can override how files are served in a custom responder +SYMBOL: serve-file-hook + +[ + nip + file-response + stdio get stream-copy +] serve-file-hook set-global + : serve-static ( filename mime-type -- ) over last-modified-matches? [ 2drop not-modified-response ] [ - dupd file-response "method" get "head" = [ - drop + file-response ] [ - stdio get stream-copy + >r dup r> + serve-file-hook get call ] if ] if ; @@ -53,9 +62,13 @@ SYMBOL: page : include-page ( filename -- ) "doc-root" get swap path+ run-page ; +: serve-fhtml ( filename -- ) + serving-html + "method" get "head" = [ drop ] [ run-page ] if ; + : serve-file ( filename -- ) dup mime-type dup "application/x-factor-server-page" = - [ drop serving-html run-page ] [ serve-static ] if ; + [ drop serve-fhtml ] [ serve-static ] if ; : file. ( name dirp -- ) [ "/" append ] when @@ -107,7 +120,7 @@ SYMBOL: page global [ ! Serve up our own source code - "resources" [ + "resources" [ [ "" resource-path "doc-root" set file-responder diff --git a/extra/webapps/source/source.factor b/extra/webapps/source/source.factor new file mode 100755 index 0000000000..ddc2f15759 --- /dev/null +++ b/extra/webapps/source/source.factor @@ -0,0 +1,20 @@ +! Copyright (C) 2007 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: io.files namespaces webapps.file http.server.responders +xmode.code2html kernel ; +IN: webapps.source + +global [ + ! Serve up our own source code + "source" [ + [ + "" resource-path "doc-root" set + [ + drop + serving-html + htmlize-stream + ] serve-file-hook set + file-responder + ] with-scope + ] add-simple-responder +] bind From a969934061894c8be9f7d6da7983c1ac7be24d07 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 00:23:18 -0500 Subject: [PATCH 205/285] Various fixes --- extra/xmode/README.txt | 12 ++++---- extra/xmode/code2html/code2html.factor | 40 +++++++++++++------------- extra/xmode/loader/loader.factor | 27 ++++++++++------- extra/xmode/marker/marker-tests.factor | 18 ++++++++++++ extra/xmode/marker/marker.factor | 33 ++++++++++----------- extra/xmode/marker/state/state.factor | 1 - extra/xmode/rules/rules.factor | 26 +++++++++++++---- 7 files changed, 98 insertions(+), 59 deletions(-) mode change 100644 => 100755 extra/xmode/code2html/code2html.factor diff --git a/extra/xmode/README.txt b/extra/xmode/README.txt index bf73042030..57d9f42b22 100755 --- a/extra/xmode/README.txt +++ b/extra/xmode/README.txt @@ -32,10 +32,10 @@ to depend on: it inherits the value of the NO_WORD_SEP attribute from the previous RULES tag. - The Factor implementation does not duplicate this behavior. + The Factor implementation does not duplicate this behavior. If you + find a mode file which depends on this flaw, please fix it and submit + the changes to the jEdit project. -This is still a work in progress. If you find any behavioral differences -between the Factor implementation and the original jEdit code, please -report them as bugs. Also, if you wish to contribute a new or improved -mode file, please contact the jEdit project. Updated mode files in jEdit -will be periodically imported into the Factor source tree. +If you wish to contribute a new or improved mode file, please contact +the jEdit project. Updated mode files in jEdit will be periodically +imported into the Factor source tree. diff --git a/extra/xmode/code2html/code2html.factor b/extra/xmode/code2html/code2html.factor old mode 100644 new mode 100755 index 02bf74dc23..5dc44841d3 --- a/extra/xmode/code2html/code2html.factor +++ b/extra/xmode/code2html/code2html.factor @@ -15,8 +15,10 @@ IN: xmode.code2html : htmlize-line ( line-context line rules -- line-context' ) tokenize-line htmlize-tokens ; -: htmlize-lines ( lines rules -- ) -
 f -rot [ htmlize-line nl ] curry each drop 
; +: htmlize-lines ( lines mode -- ) +
+        f swap load-mode [ htmlize-line nl ] curry reduce drop
+    
; : default-stylesheet ( -- ) ; +: htmlize-stream ( path stream -- ) + lines swap + + + default-stylesheet + dup write + + + over empty? + [ 2drop ] + [ over first find-mode htmlize-lines ] if + + ; + : htmlize-file ( path -- ) - dup lines dup empty? [ 2drop ] [ - swap dup ".html" append [ - [ - - - dup write - default-stylesheet - - - over first - find-mode - load-mode - htmlize-lines - - - ] with-html-stream - ] with-stream - ] if ; + dup over ".html" append + [ htmlize-stream ] with-stream ; diff --git a/extra/xmode/loader/loader.factor b/extra/xmode/loader/loader.factor index c6b5cad9d1..db3d0fbf41 100755 --- a/extra/xmode/loader/loader.factor +++ b/extra/xmode/loader/loader.factor @@ -32,10 +32,13 @@ IN: xmode.loader swap [ at string>boolean ] curry map first3 ; : parse-literal-matcher ( tag -- matcher ) - dup children>string swap position-attrs ; + dup children>string + \ ignore-case? get [ ] when + swap position-attrs ; : parse-regexp-matcher ( tag -- matcher ) - dup children>string swap position-attrs ; + dup children>string + swap position-attrs ; ! SPAN's children token swap children>string rot set-at ; +: parse-keyword-tag ( tag keyword-map -- ) + >r dup name-tag string>token swap children>string r> set-at ; TAG: KEYWORDS ( rule-set tag -- key value ) - >r rule-set-keywords r> - child-tags [ parse-keyword-tag ] curry* each ; + \ ignore-case? get + swap child-tags [ over parse-keyword-tag ] each + swap set-rule-set-keywords ; TAGS> +: ? dup [ ] when ; + : (parse-rules-tag) ( tag -- rule-set ) { { "SET" string>rule-set-name set-rule-set-name } { "IGNORE_CASE" string>boolean set-rule-set-ignore-case? } { "HIGHLIGHT_DIGITS" string>boolean set-rule-set-highlight-digits? } - { "DIGIT_RE" set-rule-set-digit-re } ! XXX + { "DIGIT_RE" ? set-rule-set-digit-re } { "ESCAPE" f add-escape-rule } { "DEFAULT" string>token set-rule-set-default } { "NO_WORD_SEP" f set-rule-set-no-word-sep } @@ -153,9 +159,10 @@ TAGS> : parse-rules-tag ( tag -- rule-set ) dup (parse-rules-tag) [ - swap child-tags [ - parse-rule-tag - ] curry* each + [ + dup rule-set-ignore-case? \ ignore-case? set + swap child-tags [ parse-rule-tag ] curry* each + ] with-scope ] keep ; : merge-rule-set-props ( props rule-set -- ) diff --git a/extra/xmode/marker/marker-tests.factor b/extra/xmode/marker/marker-tests.factor index cb7f2960a4..5b0aff2050 100755 --- a/extra/xmode/marker/marker-tests.factor +++ b/extra/xmode/marker/marker-tests.factor @@ -109,3 +109,21 @@ IN: temporary ] [ f "$FOO" "shellscript" load-mode tokenize-line nip ] unit-test + +[ + { + T{ token f "AND" KEYWORD1 } + } +] [ + f "AND" "pascal" load-mode tokenize-line nip +] unit-test + +[ + { + T{ token f "Comment {" COMMENT1 } + T{ token f "XXX" COMMENT1 } + T{ token f "}" COMMENT1 } + } +] [ + f "Comment {XXX}" "rebol" load-mode tokenize-line nip +] unit-test diff --git a/extra/xmode/marker/marker.factor b/extra/xmode/marker/marker.factor index cd9eacbb88..dda5d64c9c 100755 --- a/extra/xmode/marker/marker.factor +++ b/extra/xmode/marker/marker.factor @@ -15,8 +15,8 @@ assocs combinators combinators.lib strings regexp splitting ; [ dup [ digit? ] contains? ] [ dup [ digit? ] all? [ - current-rule-set rule-set-digit-re dup - [ dupd 2drop f ] [ drop f ] if + current-rule-set rule-set-digit-re + dup [ dupd matches? ] [ drop f ] if ] unless* ] } && nip ; @@ -26,7 +26,7 @@ assocs combinators combinators.lib strings regexp splitting ; : resolve-delegate ( name -- rules ) dup string? [ - "::" split1 [ swap load-mode at ] [ rule-sets get at ] if* + "::" split1 [ swap load-mode ] [ rule-sets get ] if* at ] when ; : rule-set-keyword-maps ( ruleset -- seq ) @@ -45,13 +45,6 @@ assocs combinators combinators.lib strings regexp splitting ; dup mark-number [ ] [ mark-keyword ] ?if [ prev-token, ] when* ; -: check-terminate-char ( -- ) - current-rule-set rule-set-terminate-char [ - position get <= [ - terminated? on - ] when - ] when* ; - : current-char ( -- char ) position get line get nth ; @@ -74,11 +67,22 @@ GENERIC: text-matches? ( position text -- match-count/f ) M: f text-matches? 2drop f ; M: string text-matches? - ! XXX ignore case >r line get swap tail-slice r> [ head? ] keep length and ; -! M: regexp text-matches? ... ; +M: ignore-case text-matches? + >r line get swap tail-slice r> + ignore-case-string + 2dup shorter? [ + 2drop f + ] [ + [ length head-slice ] keep + [ [ >upper ] 2apply sequence= ] keep + length and + ] if ; + +M: regexp text-matches? + 2drop f ; ! >r line get swap tail-slice r> match-head ; : rule-start-matches? ( rule -- match-count/f ) dup rule-start tuck swap can-match-here? [ @@ -284,8 +288,6 @@ M: mark-previous-rule handle-rule-start : mark-token-loop ( -- ) position get line get length < [ - check-terminate-char - { [ check-end-delegate ] [ check-every-rule ] @@ -302,8 +304,7 @@ M: mark-previous-rule handle-rule-start : unwind-no-line-break ( -- ) context get line-context-parent [ - line-context-in-rule rule-no-line-break? - terminated? get or [ + line-context-in-rule rule-no-line-break? [ pop-context unwind-no-line-break ] when diff --git a/extra/xmode/marker/state/state.factor b/extra/xmode/marker/state/state.factor index cce7c7567a..958c23a2bc 100755 --- a/extra/xmode/marker/state/state.factor +++ b/extra/xmode/marker/state/state.factor @@ -16,7 +16,6 @@ SYMBOL: seen-whitespace-end? SYMBOL: escaped? SYMBOL: process-escape? SYMBOL: delegate-end-escaped? -SYMBOL: terminated? : current-rule ( -- rule ) context get line-context-in-rule ; diff --git a/extra/xmode/rules/rules.factor b/extra/xmode/rules/rules.factor index 7206668edb..906fba3140 100755 --- a/extra/xmode/rules/rules.factor +++ b/extra/xmode/rules/rules.factor @@ -1,7 +1,11 @@ USING: xmode.tokens xmode.keyword-map kernel -sequences vectors assocs strings memoize ; +sequences vectors assocs strings memoize regexp ; IN: xmode.rules +TUPLE: ignore-case string ; + +C: ignore-case + ! Based on org.gjt.sp.jedit.syntax.ParserRuleSet TUPLE: rule-set name @@ -20,12 +24,11 @@ no-word-sep : init-rule-set ( ruleset -- ) #! Call after constructor. - >r H{ } clone H{ } clone V{ } clone f r> + >r H{ } clone H{ } clone V{ } clone r> { set-rule-set-rules set-rule-set-props set-rule-set-imports - set-rule-set-keywords } set-slots ; : ( -- ruleset ) @@ -46,8 +49,9 @@ MEMO: standard-rule-set ( id -- ruleset ) ] when* ; : rule-set-no-word-sep* ( ruleset -- str ) - dup rule-set-keywords keyword-map-no-word-sep* - swap rule-set-no-word-sep "_" 3append ; + dup rule-set-no-word-sep + swap rule-set-keywords dup [ keyword-map-no-word-sep* ] when + "_" 3append ; ! Match restrictions TUPLE: matcher text at-line-start? at-whitespace-end? at-word-start? ; @@ -97,10 +101,20 @@ TUPLE: escape-rule ; escape-rule construct-rule [ set-rule-start ] keep ; +GENERIC: text-hash-char ( text -- ch ) + +M: f text-hash-char ; + +M: string text-hash-char first ; + +M: ignore-case text-hash-char ignore-case-string first ; + +M: regexp text-hash-char drop f ; + : rule-chars* ( rule -- string ) dup rule-chars swap rule-start matcher-text - dup string? [ first add ] [ drop ] if ; + text-hash-char [ add ] when* ; : add-rule ( rule ruleset -- ) >r dup rule-chars* >upper swap From e82ff27e987efe9d747b22ce6ebc314ce4fdfddb Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 01:02:58 -0500 Subject: [PATCH 206/285] Overhaul pastebin --- extra/webapps/pastebin/annotate-paste.furnace | 16 +++--- extra/webapps/pastebin/annotation.furnace | 2 +- extra/webapps/pastebin/footer.furnace | 3 ++ extra/webapps/pastebin/header.furnace | 23 +++++++++ extra/webapps/pastebin/modes.furnace | 4 +- extra/webapps/pastebin/new-paste.furnace | 27 ++++++---- extra/webapps/pastebin/paste-list.furnace | 50 +++++++++---------- extra/webapps/pastebin/paste-summary.furnace | 14 +++--- extra/webapps/pastebin/pastebin.factor | 29 ++++++++++- extra/webapps/pastebin/show-paste.furnace | 19 +++---- extra/webapps/pastebin/style.css | 36 +++++++++++++ extra/webapps/pastebin/syntax.furnace | 2 +- 12 files changed, 156 insertions(+), 69 deletions(-) create mode 100644 extra/webapps/pastebin/footer.furnace create mode 100644 extra/webapps/pastebin/header.furnace create mode 100644 extra/webapps/pastebin/style.css diff --git a/extra/webapps/pastebin/annotate-paste.furnace b/extra/webapps/pastebin/annotate-paste.furnace index 89ce12fd61..abb5cc3d07 100755 --- a/extra/webapps/pastebin/annotate-paste.furnace +++ b/extra/webapps/pastebin/annotate-paste.furnace @@ -9,22 +9,22 @@ string write %>" /> -Your name: - - - - -Summary: +Summary: -File type: +Your name: + + + + +File type: <% "modes" render-template %> -Content: +Content: diff --git a/extra/webapps/pastebin/annotation.furnace b/extra/webapps/pastebin/annotation.furnace index d4617667ed..420c1625f5 100755 --- a/extra/webapps/pastebin/annotation.furnace +++ b/extra/webapps/pastebin/annotation.furnace @@ -8,4 +8,4 @@ Created:<% "date" get write %> -<% "syntax" render-template % +<% "syntax" render-template %> diff --git a/extra/webapps/pastebin/footer.furnace b/extra/webapps/pastebin/footer.furnace new file mode 100644 index 0000000000..15b90110a0 --- /dev/null +++ b/extra/webapps/pastebin/footer.furnace @@ -0,0 +1,3 @@ + + + diff --git a/extra/webapps/pastebin/header.furnace b/extra/webapps/pastebin/header.furnace new file mode 100644 index 0000000000..2c8e79a18d --- /dev/null +++ b/extra/webapps/pastebin/header.furnace @@ -0,0 +1,23 @@ +<% USING: namespaces io furnace sequences xmode.code2html webapps.pastebin ; %> + + + + + + + + <% "title" get write %> + + <% default-stylesheet %> + + + + + + +

<% "title" get write %>

diff --git a/extra/webapps/pastebin/modes.furnace b/extra/webapps/pastebin/modes.furnace index cc09ae90ed..960b7d4e27 100644 --- a/extra/webapps/pastebin/modes.furnace +++ b/extra/webapps/pastebin/modes.furnace @@ -1,7 +1,7 @@ -<% USING: xmode.catalog sequences kernel html.elements assocs io ; %> +<% USING: xmode.catalog sequences kernel html.elements assocs io sorting ; %> diff --git a/extra/webapps/pastebin/new-paste.furnace b/extra/webapps/pastebin/new-paste.furnace index 28453f10f7..c647df82b0 100755 --- a/extra/webapps/pastebin/new-paste.furnace +++ b/extra/webapps/pastebin/new-paste.furnace @@ -1,34 +1,41 @@ -<% USING: furnace ; %> +<% USING: furnace namespaces ; %> + +<% + "new paste" "title" set + "header" render-template +%> - - - - - - + - + + + + + + - + - +
Your name:
Summary:Summary:
File type:Your name:
File type: <% "modes" render-template %>
Channel:Channel:
Content:Content:
+ +<% "footer" render-template %> diff --git a/extra/webapps/pastebin/paste-list.furnace b/extra/webapps/pastebin/paste-list.furnace index 1edc312f54..75f05c67e9 100644 --- a/extra/webapps/pastebin/paste-list.furnace +++ b/extra/webapps/pastebin/paste-list.furnace @@ -1,29 +1,29 @@ <% USING: namespaces furnace sequences ; %> - +<% + "Pastebin" "title" set + "header" render-template +%> - - - + + + + + +
+ + + + + + + <% "pastes" get [ "paste-summary" render-component ] each %> +
Summary:Paste by:Date:
+
+

This pastebin is written in Factor. It can be used for collaborative development over IRC. You can post code for review, and annotate other people's code. Syntax highlighting for over a hundred file types is supported. +

+

+ <% "webapps.pastebin" browse-webapp-source %>

+
- Pastebin - - - - - -

[ "paste" bin ]

- - - <% "new-paste-quot" get "New paste" render-link %> - - - - - - - <% "pastes" get [ "paste-summary" render-component ] each %> -
 Summary:Paste by:Date:
- - +<% "footer" render-template %> diff --git a/extra/webapps/pastebin/paste-summary.furnace b/extra/webapps/pastebin/paste-summary.furnace index 87c01b646d..a50f0ca140 100644 --- a/extra/webapps/pastebin/paste-summary.furnace +++ b/extra/webapps/pastebin/paste-summary.furnace @@ -1,13 +1,11 @@ -<% USING: continuations namespaces io kernel math math.parser furnace ; %> +<% USING: continuations namespaces io kernel math math.parser furnace webapps.pastebin ; %> - <% "n" get number>string write %> - <% - "n" get number>string - "show-paste-quot" get curry - "summary" get - render-link - %> + + + <% "summary" get write %> + + <% "author" get write %> <% "date" get print %> diff --git a/extra/webapps/pastebin/pastebin.factor b/extra/webapps/pastebin/pastebin.factor index ad2198f282..cd81c74828 100755 --- a/extra/webapps/pastebin/pastebin.factor +++ b/extra/webapps/pastebin/pastebin.factor @@ -1,5 +1,6 @@ USING: calendar furnace furnace.validator io.files kernel -namespaces sequences store http.server.responders html ; +namespaces sequences store http.server.responders html +math.parser rss xml.writer ; IN: webapps.pastebin TUPLE: pastebin pastes ; @@ -50,6 +51,26 @@ SYMBOL: store \ paste-list { } define-action +: paste-link ( paste -- link ) + paste-n number>string [ show-paste ] curry quot-link ; + +: paste-feed ( -- entries ) + pastebin get pastebin-pastes [ + { + paste-summary + paste-link + paste-date + } get-slots "" swap + ] map ; + +: feed.xml ( -- ) + "text/xml" serving-content + "pastebin" + "http://pastebin.factorcode.org" + paste-feed feed>xml write-xml ; + +\ feed.xml { } define-action + : save-pastebin-store ( -- ) store get-global save-store ; @@ -87,4 +108,10 @@ SYMBOL: store \ annotate-paste [ "n" show-paste ] define-redirect +: style.css ( -- ) + "text/css" serving-content + "style.css" send-resource ; + +\ style.css { } define-action + "pastebin" "paste-list" "extra/webapps/pastebin" web-app diff --git a/extra/webapps/pastebin/show-paste.furnace b/extra/webapps/pastebin/show-paste.furnace index a724410b8c..56255dcd95 100755 --- a/extra/webapps/pastebin/show-paste.furnace +++ b/extra/webapps/pastebin/show-paste.furnace @@ -1,18 +1,9 @@ <% USING: namespaces io furnace sequences xmode.code2html ; %> - - - - - - - Paste: <% "summary" get write %> - - <% default-stylesheet %> - - -

[ <% "summary" get write %> ]

+<% + "Paste: " "summary" get append "title" set + "header" render-template +%> @@ -26,3 +17,5 @@ <% "annotations" get [ "annotation" render-component ] each %> <% model get "annotate-paste" render-component %> + +<% "footer" render-template %> diff --git a/extra/webapps/pastebin/style.css b/extra/webapps/pastebin/style.css new file mode 100644 index 0000000000..dda38b90d4 --- /dev/null +++ b/extra/webapps/pastebin/style.css @@ -0,0 +1,36 @@ +body { + font:75%/1.6em "Lucida Grande", "Lucida Sans Unicode", verdana, geneva, sans-serif; + color:#888; +} + +h1.pastebin-title { + font-size:300%; +} + +a { + color:#222; + border-bottom:1px dotted #ccc; + text-decoration:none; +} + +a:hover { + border-bottom:1px solid #ccc; +} + +pre.code { + border:1px dashed #ccc; + background-color:#f5f5f5; + padding:5px; + font-size:150%; +} + +.navbar { + background-color:#eeeeee; + padding:5px; + border:1px solid #ccc; +} + +.infobox { + border: 1px solid #C1DAD7; + padding: 10px; +} diff --git a/extra/webapps/pastebin/syntax.furnace b/extra/webapps/pastebin/syntax.furnace index 246b9d04b3..17b64b920b 100755 --- a/extra/webapps/pastebin/syntax.furnace +++ b/extra/webapps/pastebin/syntax.furnace @@ -1,3 +1,3 @@ <% USING: xmode.code2html splitting namespaces ; %> -
<% "contents" get string-lines "mode" get htmlize-lines %>
+
<% "contents" get string-lines "mode" get htmlize-lines %>
From bb45b6702b9dbfaf1e58db7ebfcaf883cc2202b1 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 01:03:10 -0500 Subject: [PATCH 207/285] Planet factor tweak --- extra/webapps/planet/planet.factor | 13 +++++---- extra/webapps/planet/planet.furnace | 4 +-- extra/webapps/planet/style.css | 45 +++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 extra/webapps/planet/style.css diff --git a/extra/webapps/planet/planet.factor b/extra/webapps/planet/planet.factor index 0ddd48e36e..8abc9e5bc6 100644 --- a/extra/webapps/planet/planet.factor +++ b/extra/webapps/planet/planet.factor @@ -50,11 +50,6 @@ IN: webapps.planet : print-postings ( postings -- ) [ print-posting ] each ; -: browse-webapp-source ( vocab -- ) - vocab-link browser-link-href =href a> - "Browse source" write - ; - SYMBOL: default-blogroll SYMBOL: cached-postings @@ -71,12 +66,18 @@ SYMBOL: cached-postings "http://planet.factorcode.org" cached-postings get 30 head ; -: feed.xml +: feed.xml ( -- ) "text/xml" serving-content planet-feed feed>xml write-xml ; \ feed.xml { } define-action +: style.css ( -- ) + "text/css" serving-content + "style.css" send-resource ; + +\ style.css { } define-action + SYMBOL: last-update : diagnostic write print flush ; diff --git a/extra/webapps/planet/planet.furnace b/extra/webapps/planet/planet.furnace index bc9172a55a..949ee7c172 100644 --- a/extra/webapps/planet/planet.furnace +++ b/extra/webapps/planet/planet.furnace @@ -8,7 +8,7 @@ planet-factor - + @@ -28,7 +28,7 @@ Syndicate

- This webapp is written in Factor.
+ This webapp is written in Factor.
<% "webapps.planet" browse-webapp-source %>

Blogroll

diff --git a/extra/webapps/planet/style.css b/extra/webapps/planet/style.css new file mode 100644 index 0000000000..7a66d8d495 --- /dev/null +++ b/extra/webapps/planet/style.css @@ -0,0 +1,45 @@ +body { + font:75%/1.6em "Lucida Grande", "Lucida Sans Unicode", verdana, geneva, sans-serif; + color:#888; +} + +h1.planet-title { + font-size:300%; +} + +a { + color:#222; + border-bottom:1px dotted #ccc; + text-decoration:none; +} + +a:hover { + border-bottom:1px solid #ccc; +} + +.posting-title { + background-color:#f5f5f5; +} + +pre, code { + color:#000000; + font-size:120%; +} + +.infobox { + border-left: 1px solid #C1DAD7; +} + +.posting-date { + text-align: right; + font-size:90%; +} + +a.more { + display:block; + padding:0 0 5px 0; + color:#333; + text-decoration:none; + text-align:right; + border:none; +} From 6bc89951062cf9b3f9d42696f7817bcfa1fb56a5 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 6 Dec 2007 01:03:27 -0500 Subject: [PATCH 208/285] xmode.code2html fix --- extra/xmode/code2html/code2html.factor | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extra/xmode/code2html/code2html.factor b/extra/xmode/code2html/code2html.factor index 5dc44841d3..dfc50988a3 100755 --- a/extra/xmode/code2html/code2html.factor +++ b/extra/xmode/code2html/code2html.factor @@ -16,9 +16,7 @@ IN: xmode.code2html tokenize-line htmlize-tokens ; : htmlize-lines ( lines mode -- ) -
-        f swap load-mode [ htmlize-line nl ] curry reduce drop
-    
; + f swap load-mode [ htmlize-line nl ] curry reduce drop ; : default-stylesheet ( -- )
Paste by:<% "author" get write %>