effects.parser: throw a proper no-word error if effect references an unknown class word
							parent
							
								
									050d042449
								
							
						
					
					
						commit
						f0aa694c7e
					
				| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
! Copyright (C) 2007, 2010 Slava Pestov.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: parser kernel sequences words effects combinators assocs
 | 
			
		||||
definitions quotations namespaces memoize accessors fry
 | 
			
		||||
compiler.units ;
 | 
			
		||||
USING: parser effects.parser kernel sequences words effects
 | 
			
		||||
combinators assocs definitions quotations namespaces memoize
 | 
			
		||||
accessors fry compiler.units ;
 | 
			
		||||
IN: macros
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
! Copyright (C) 2007, 2009 Slava Pestov, Daniel Ehrenberg.
 | 
			
		||||
! Copyright (C) 2007, 2010 Slava Pestov, Daniel Ehrenberg.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: kernel hashtables sequences sequences.private arrays
 | 
			
		||||
words namespaces make parser math assocs effects definitions
 | 
			
		||||
quotations summary accessors fry ;
 | 
			
		||||
words namespaces make parser effects.parser math assocs effects
 | 
			
		||||
definitions quotations summary accessors fry ;
 | 
			
		||||
IN: memoize
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,9 @@
 | 
			
		|||
! Copyright (C) 2007, 2008 Chris Double.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: kernel sequences strings fry namespaces make math assocs
 | 
			
		||||
io vectors arrays math.parser math.order combinators
 | 
			
		||||
classes sets unicode.categories compiler.units parser words
 | 
			
		||||
quotations memoize accessors locals splitting
 | 
			
		||||
io vectors arrays math.parser math.order combinators classes
 | 
			
		||||
sets unicode.categories compiler.units parser effects.parser
 | 
			
		||||
words quotations memoize accessors locals splitting
 | 
			
		||||
combinators.short-circuit generalizations ;
 | 
			
		||||
IN: peg
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
! Copyright (C) 2004, 2006 Chris Double, Matthew Willis.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: accessors arrays effects fry generalizations kernel math
 | 
			
		||||
namespaces parser sequences words ;
 | 
			
		||||
namespaces parser effects.parser sequences words ;
 | 
			
		||||
IN: promises
 | 
			
		||||
 | 
			
		||||
TUPLE: promise quot forced? value ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
USING: accessors arrays classes classes.tuple combinators
 | 
			
		||||
combinators.short-circuit definitions effects fry hints
 | 
			
		||||
math kernel kernel.private namespaces parser quotations
 | 
			
		||||
sequences slots words locals 
 | 
			
		||||
sequences slots words locals effects.parser
 | 
			
		||||
locals.parser macros stack-checker.dependencies ;
 | 
			
		||||
FROM: classes.tuple.private => tuple-layout ;
 | 
			
		||||
IN: typed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
! Copyright (C) 2008, 2009 Slava Pestov.
 | 
			
		||||
! Copyright (C) 2008, 2010 Slava Pestov.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: lexer sets sequences kernel splitting effects
 | 
			
		||||
combinators arrays vocabs.parser classes ;
 | 
			
		||||
combinators arrays vocabs.parser classes parser ;
 | 
			
		||||
IN: effects.parser
 | 
			
		||||
 | 
			
		||||
DEFER: parse-effect
 | 
			
		||||
| 
						 | 
				
			
			@ -14,9 +14,8 @@ ERROR: bad-effect ;
 | 
			
		|||
            ":" ?tail [
 | 
			
		||||
                scan {
 | 
			
		||||
                    { [ dup "(" = ] [ drop ")" parse-effect ] }
 | 
			
		||||
                    { [ dup search class? ] [ search ] }
 | 
			
		||||
                    { [ dup f = ] [ ")" unexpected-eof ] }
 | 
			
		||||
                    [ bad-effect ]
 | 
			
		||||
                    [ parse-word dup class? [ bad-effect ] unless ]
 | 
			
		||||
                } cond 2array
 | 
			
		||||
            ] when
 | 
			
		||||
        ] if
 | 
			
		||||
| 
						 | 
				
			
			@ -36,3 +35,8 @@ ERROR: stack-effect-omits-dashes tokens ;
 | 
			
		|||
 | 
			
		||||
: parse-call( ( accum word -- accum )
 | 
			
		||||
    [ ")" parse-effect ] dip 2array append! ;
 | 
			
		||||
 | 
			
		||||
: (:) ( -- word def effect )
 | 
			
		||||
    CREATE-WORD
 | 
			
		||||
    complete-effect
 | 
			
		||||
    parse-definition swap ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ sequences strings vectors words words.symbol quotations io
 | 
			
		|||
combinators sorting splitting math.parser effects continuations
 | 
			
		||||
io.files vocabs io.encodings.utf8 source-files classes
 | 
			
		||||
hashtables compiler.units accessors sets lexer vocabs.parser
 | 
			
		||||
effects.parser slots parser.notes ;
 | 
			
		||||
 slots parser.notes ;
 | 
			
		||||
IN: parser
 | 
			
		||||
 | 
			
		||||
: location ( -- loc )
 | 
			
		||||
| 
						 | 
				
			
			@ -102,11 +102,6 @@ M: f parse-quotation \ ] parse-until >quotation ;
 | 
			
		|||
: parse-definition ( -- quot )
 | 
			
		||||
    \ ; parse-until >quotation ;
 | 
			
		||||
 | 
			
		||||
: (:) ( -- word def effect )
 | 
			
		||||
    CREATE-WORD
 | 
			
		||||
    complete-effect
 | 
			
		||||
    parse-definition swap ;
 | 
			
		||||
 | 
			
		||||
ERROR: bad-number ;
 | 
			
		||||
 | 
			
		||||
: scan-base ( base -- n )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue