| 
									
										
										
										
											2010-03-26 03:42:07 -04:00
										 |  |  | ! Copyright (C) 2004, 2010 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2013-03-05 13:34:47 -05:00
										 |  |  | USING: accessors arrays byte-arrays byte-vectors | 
					
						
							| 
									
										
										
										
											2015-08-12 16:26:18 -04:00
										 |  |  | classes.algebra.private classes.builtin classes.error | 
					
						
							|  |  |  | classes.intersection classes.maybe classes.mixin classes.parser | 
					
						
							|  |  |  | classes.predicate classes.singleton classes.tuple classes.tuple.parser | 
					
						
							| 
									
										
										
										
											2014-06-06 13:54:57 -04:00
										 |  |  | classes.union combinators compiler.units definitions effects | 
					
						
							| 
									
										
										
										
											2013-03-05 13:34:47 -05:00
										 |  |  | effects.parser generic generic.hook generic.math generic.parser | 
					
						
							|  |  |  | generic.standard hash-sets hashtables io.pathnames kernel lexer | 
					
						
							|  |  |  | math namespaces parser quotations sbufs sequences slots | 
					
						
							| 
									
										
										
										
											2015-07-26 01:59:56 -04:00
										 |  |  | source-files splitting strings strings.parser | 
					
						
							|  |  |  | strings.parser.private vectors vocabs vocabs.parser words | 
					
						
							|  |  |  | words.alias words.constant words.symbol ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | IN: bootstrap.syntax | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! These words are defined as a top-level form, instead of with | 
					
						
							|  |  |  | ! defining parsing words, because during stage1 bootstrap, the | 
					
						
							|  |  |  | ! "syntax" vocabulary is copied from the host. When stage1 | 
					
						
							|  |  |  | ! bootstrap completes, the host's syntax vocabulary is deleted | 
					
						
							|  |  |  | ! from the target, then this top-level form creates the | 
					
						
							|  |  |  | ! target's "syntax" vocabulary as one of the first things done | 
					
						
							|  |  |  | ! in stage2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : define-delimiter ( name -- )
 | 
					
						
							| 
									
										
										
										
											2011-11-06 18:57:24 -05:00
										 |  |  |     "syntax" lookup-word t "delimiter" set-word-prop ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-29 21:45:16 -04:00
										 |  |  | ! Keep track of words defined by SYNTAX: as opposed to words | 
					
						
							|  |  |  | ! merely generated by define-syntax. | 
					
						
							|  |  |  | : mark-top-level-syntax ( word -- word )
 | 
					
						
							|  |  |  |     dup t "syntax" set-word-prop ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  | : define-core-syntax ( name quot -- )
 | 
					
						
							| 
									
										
										
										
											2015-06-29 21:45:16 -04:00
										 |  |  |     [ | 
					
						
							| 
									
										
										
										
											2015-08-13 19:13:05 -04:00
										 |  |  |         dup "syntax" lookup-word [ ] [ no-word-error ] ?if
 | 
					
						
							| 
									
										
										
										
											2015-06-29 21:45:16 -04:00
										 |  |  |         mark-top-level-syntax | 
					
						
							|  |  |  |     ] dip
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     define-syntax ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | [ | 
					
						
							|  |  |  |     { "]" "}" ";" ">>" } [ define-delimiter ] each
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  |     "PRIMITIVE:" [ | 
					
						
							| 
									
										
										
										
											2015-06-25 21:02:03 -04:00
										 |  |  |         current-vocab name>> | 
					
						
							|  |  |  |         scan-word scan-effect ensure-primitive | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "CS{" [ | 
					
						
							|  |  |  |         "Call stack literals are not supported" throw
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |     "IN:" [ scan-token set-current-vocab ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-14 23:31:29 -04:00
										 |  |  |     "<PRIVATE" [ begin-private ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-14 23:31:29 -04:00
										 |  |  |     "PRIVATE>" [ end-private ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |     "USE:" [ scan-token use-vocab ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |     "UNUSE:" [ scan-token unuse-vocab ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-05-16 01:29:21 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-01 01:06:47 -05:00
										 |  |  |     "USING:" [ ";" [ use-vocab ] each-token ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |     "QUALIFIED:" [ scan-token dup add-qualified ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |     "QUALIFIED-WITH:" [ scan-token scan-token add-qualified ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "FROM:" [ | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |         scan-token "=>" expect ";" parse-tokens add-words-from | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "EXCLUDE:" [ | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |         scan-token "=>" expect ";" parse-tokens add-words-excluding | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "RENAME:" [ | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |         scan-token scan-token "=>" expect scan-token add-renamed-word | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 14:38:27 -04:00
										 |  |  |     "NAN:" [ 16 scan-base <fp-nan> suffix! ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-09-12 16:06:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 14:38:27 -04:00
										 |  |  |     "f" [ f suffix! ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-15 20:32:14 -05:00
										 |  |  |     "CHAR:" [ | 
					
						
							| 
									
										
										
										
											2016-03-31 00:21:40 -04:00
										 |  |  |         lexer get parse-raw [ "token" throw-unexpected-eof ] unless* { | 
					
						
							| 
									
										
										
										
											2008-02-15 20:32:14 -05:00
										 |  |  |             { [ dup length 1 = ] [ first ] } | 
					
						
							| 
									
										
										
										
											2008-11-23 01:25:01 -05:00
										 |  |  |             { [ "\\" ?head ] [ next-escape >string "" assert= ] } | 
					
						
							| 
									
										
										
										
											2009-03-17 03:19:50 -04:00
										 |  |  |             [ name>char-hook get call( name -- char ) ] | 
					
						
							| 
									
										
										
										
											2009-10-28 14:38:27 -04:00
										 |  |  |         } cond suffix!
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-02-15 20:32:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-04 17:54:06 -04:00
										 |  |  |     "\"" [ parse-string suffix! ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "SBUF\"" [ | 
					
						
							| 
									
										
										
										
											2016-04-04 17:54:06 -04:00
										 |  |  |         lexer get skip-blank parse-string >sbuf suffix!
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "P\"" [ | 
					
						
							| 
									
										
										
										
											2016-04-04 17:54:06 -04:00
										 |  |  |         lexer get skip-blank parse-string <pathname> suffix!
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 14:38:27 -04:00
										 |  |  |     "[" [ parse-quotation suffix! ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     "{" [ \ } [ >array ] parse-literal ] define-core-syntax | 
					
						
							|  |  |  |     "V{" [ \ } [ >vector ] parse-literal ] define-core-syntax | 
					
						
							|  |  |  |     "B{" [ \ } [ >byte-array ] parse-literal ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     "BV{" [ \ } [ >byte-vector ] parse-literal ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2012-08-24 18:00:33 -04:00
										 |  |  |     "H{" [ \ } [ parse-hashtable ] parse-literal ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-10-28 14:38:27 -04:00
										 |  |  |     "T{" [ parse-tuple-literal suffix! ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     "W{" [ \ } [ first <wrapper> ] parse-literal ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2011-10-19 14:35:25 -04:00
										 |  |  |     "HS{" [ \ } [ >hash-set ] parse-literal ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 14:38:27 -04:00
										 |  |  |     "POSTPONE:" [ scan-word suffix! ] define-core-syntax | 
					
						
							|  |  |  |     "\\" [ scan-word <wrapper> suffix! ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2011-10-03 18:49:49 -04:00
										 |  |  |     "M\\" [ scan-word scan-word lookup-method <wrapper> suffix! ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2013-03-23 19:05:14 -04:00
										 |  |  |     "inline" [ last-word make-inline ] define-core-syntax | 
					
						
							|  |  |  |     "recursive" [ last-word make-recursive ] define-core-syntax | 
					
						
							|  |  |  |     "foldable" [ last-word make-foldable ] define-core-syntax | 
					
						
							|  |  |  |     "flushable" [ last-word make-flushable ] define-core-syntax | 
					
						
							|  |  |  |     "delimiter" [ last-word t "delimiter" set-word-prop ] define-core-syntax | 
					
						
							|  |  |  |     "deprecated" [ last-word make-deprecated ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "SYNTAX:" [ | 
					
						
							| 
									
										
										
										
											2015-06-29 21:45:16 -04:00
										 |  |  |         scan-new-word | 
					
						
							|  |  |  |         mark-top-level-syntax | 
					
						
							|  |  |  |         parse-definition define-syntax | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-10 15:04:34 -04:00
										 |  |  |     "BUILTIN:" [ | 
					
						
							|  |  |  |         scan-word-name | 
					
						
							|  |  |  |         current-vocab lookup-word | 
					
						
							|  |  |  |         (parse-tuple-definition) 2drop check-builtin | 
					
						
							|  |  |  |     ] define-core-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  |     "SYMBOL:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-word define-symbol | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  |     "SYMBOLS:" [ | 
					
						
							| 
									
										
										
										
											2015-06-08 15:38:38 -04:00
										 |  |  |         ";" [ create-word-in [ reset-generic ] [ define-symbol ] bi ] each-token | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "SINGLETONS:" [ | 
					
						
							| 
									
										
										
										
											2010-03-01 01:06:47 -05:00
										 |  |  |         ";" [ create-class-in define-singleton-class ] each-token | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-03-22 19:00:26 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "DEFER:" [ | 
					
						
							| 
									
										
										
										
											2015-06-08 15:38:38 -04:00
										 |  |  |         scan-token current-vocab create-word | 
					
						
							| 
									
										
										
										
											2013-03-23 19:05:14 -04:00
										 |  |  |         [ fake-definition ] [ set-last-word ] [ undefined-def define ] tri
 | 
					
						
							| 
									
										
										
										
											2009-03-22 19:00:26 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2014-06-03 21:04:51 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  |     "ALIAS:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-word scan-word define-alias | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "CONSTANT:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-word scan-object define-constant | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-12-17 19:10:01 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  |     ":" [ | 
					
						
							| 
									
										
										
										
											2009-03-21 04:17:35 -04:00
										 |  |  |         (:) define-declared | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "GENERIC:" [ | 
					
						
							| 
									
										
										
										
											2009-03-22 19:00:26 -04:00
										 |  |  |         [ simple-combination ] (GENERIC:) | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "GENERIC#" [ | 
					
						
							| 
									
										
										
										
											2011-10-01 19:42:37 -04:00
										 |  |  |         [ scan-number <standard-combination> ] (GENERIC:) | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "MATH:" [ | 
					
						
							| 
									
										
										
										
											2009-03-22 19:00:26 -04:00
										 |  |  |         [ math-combination ] (GENERIC:) | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "HOOK:" [ | 
					
						
							| 
									
										
										
										
											2009-03-22 19:00:26 -04:00
										 |  |  |         [ scan-word <hook-combination> ] (GENERIC:) | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "M:" [ | 
					
						
							| 
									
										
										
										
											2008-03-16 03:43:00 -04:00
										 |  |  |         (M:) define | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "UNION:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-class parse-definition define-union-class | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-10 19:09:05 -04:00
										 |  |  |     "INTERSECTION:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-class parse-definition define-intersection-class | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-05-10 19:09:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  |     "MIXIN:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-class define-mixin-class | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-04 21:10:49 -05:00
										 |  |  |     "INSTANCE:" [ | 
					
						
							| 
									
										
										
										
											2008-11-23 03:44:56 -05:00
										 |  |  |         location [ | 
					
						
							|  |  |  |             scan-word scan-word 2dup add-mixin-instance | 
					
						
							|  |  |  |             <mixin-instance> | 
					
						
							|  |  |  |         ] dip remember-definition | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "PREDICATE:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-class | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |         "<" expect | 
					
						
							| 
									
										
										
										
											2011-11-22 02:00:52 -05:00
										 |  |  |         scan-class | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  |         parse-definition define-predicate-class | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-02 14:11:55 -04:00
										 |  |  |     "SINGLETON:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-class define-singleton-class | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-04-02 14:11:55 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  |     "TUPLE:" [ | 
					
						
							| 
									
										
										
										
											2008-03-26 18:07:50 -04:00
										 |  |  |         parse-tuple-definition define-tuple-class | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-17 08:19:57 -05:00
										 |  |  |     "final" [ | 
					
						
							| 
									
										
										
										
											2013-03-23 19:05:14 -04:00
										 |  |  |         last-word make-final | 
					
						
							| 
									
										
										
										
											2010-02-17 08:19:57 -05:00
										 |  |  |     ] define-core-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  |     "SLOT:" [ | 
					
						
							| 
									
										
										
										
											2010-07-06 16:20:08 -04:00
										 |  |  |         scan-token define-protocol-slot | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  |     "C:" [ | 
					
						
							| 
									
										
										
										
											2011-09-27 16:20:07 -04:00
										 |  |  |         scan-new-word scan-word define-boa-word | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-19 20:15:43 -04:00
										 |  |  |     "ERROR:" [ | 
					
						
							| 
									
										
										
										
											2008-03-26 18:07:50 -04:00
										 |  |  |         parse-tuple-definition | 
					
						
							|  |  |  |         pick save-location | 
					
						
							|  |  |  |         define-error-class | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-03-19 20:15:43 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-09 16:57:59 -05:00
										 |  |  |     "FORGET:" [ | 
					
						
							| 
									
										
										
										
											2008-03-27 20:52:53 -04:00
										 |  |  |         scan-object forget | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 19:00:26 -04:00
										 |  |  |     "(" [ | 
					
						
							| 
									
										
										
										
											2011-10-18 16:18:42 -04:00
										 |  |  |         ")" parse-effect suffix!
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-06-08 16:32:55 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-17 23:58:09 -04:00
										 |  |  |     "MAIN:" [ | 
					
						
							|  |  |  |         scan-word | 
					
						
							| 
									
										
										
										
											2014-06-06 13:54:57 -04:00
										 |  |  |         dup ( -- ) check-stack-effect | 
					
						
							| 
									
										
										
										
											2011-08-17 23:58:09 -04:00
										 |  |  |         [ current-vocab main<< ] | 
					
						
							| 
									
										
										
										
											2015-07-24 01:00:48 -04:00
										 |  |  |         [ current-source-file get [ main<< ] [ drop ] if* ] bi
 | 
					
						
							| 
									
										
										
										
											2011-08-17 23:58:09 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-15 22:35:03 -05:00
										 |  |  |     "<<" [ | 
					
						
							| 
									
										
										
										
											2008-05-28 20:34:18 -04:00
										 |  |  |         [ | 
					
						
							|  |  |  |             \ >> parse-until >quotation | 
					
						
							| 
									
										
										
										
											2009-03-17 03:19:50 -04:00
										 |  |  |         ] with-nested-compilation-unit call( -- ) | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2008-04-02 22:27:49 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "call-next-method" [ | 
					
						
							| 
									
										
										
										
											2008-11-22 20:57:25 -05:00
										 |  |  |         current-method get [ | 
					
						
							| 
									
										
										
										
											2009-10-28 14:38:27 -04:00
										 |  |  |             literalize suffix!
 | 
					
						
							|  |  |  |             \ (call-next-method) suffix!
 | 
					
						
							| 
									
										
										
										
											2008-04-26 19:55:26 -04:00
										 |  |  |         ] [ | 
					
						
							| 
									
										
										
										
											2015-08-13 19:13:05 -04:00
										 |  |  |             not-in-a-method-error | 
					
						
							| 
									
										
										
										
											2008-11-22 20:57:25 -05:00
										 |  |  |         ] if*
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2011-11-22 02:00:52 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-03 22:17:41 -04:00
										 |  |  |     "maybe{" [ | 
					
						
							|  |  |  |         \ } [ <anonymous-union> <maybe> ] parse-literal | 
					
						
							|  |  |  |     ] define-core-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     "not{" [ | 
					
						
							|  |  |  |         \ } [ <anonymous-union> <anonymous-complement> ] parse-literal | 
					
						
							| 
									
										
										
										
											2011-11-22 02:00:52 -05:00
										 |  |  |     ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2011-11-22 21:49:18 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "intersection{" [ | 
					
						
							|  |  |  |          \ } [ <anonymous-intersection> ] parse-literal | 
					
						
							|  |  |  |     ] define-core-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     "union{" [ | 
					
						
							|  |  |  |         \ } [ <anonymous-union> ] parse-literal | 
					
						
							|  |  |  |     ] define-core-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-06 18:57:24 -05:00
										 |  |  |     "initial:" "syntax" lookup-word define-symbol | 
					
						
							| 
									
										
										
										
											2009-06-11 20:48:14 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-06 18:57:24 -05:00
										 |  |  |     "read-only" "syntax" lookup-word define-symbol | 
					
						
							| 
									
										
										
										
											2009-03-16 21:11:36 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-27 12:53:10 -04:00
										 |  |  |     "call(" [ \ call-effect parse-call-paren ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2009-03-16 21:11:36 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-27 12:53:10 -04:00
										 |  |  |     "execute(" [ \ execute-effect parse-call-paren ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2010-04-06 16:34:26 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     "<<<<<<<" [ version-control-merge-conflict ] define-core-syntax | 
					
						
							|  |  |  |     "=======" [ version-control-merge-conflict ] define-core-syntax | 
					
						
							|  |  |  |     ">>>>>>>" [ version-control-merge-conflict ] define-core-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     "<<<<<<" [ version-control-merge-conflict ] define-core-syntax | 
					
						
							|  |  |  |     "======" [ version-control-merge-conflict ] define-core-syntax | 
					
						
							|  |  |  |     ">>>>>>" [ version-control-merge-conflict ] define-core-syntax | 
					
						
							| 
									
										
										
										
											2007-12-21 21:18:24 -05:00
										 |  |  | ] with-compilation-unit |