1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: combinators combinators.smart compiler.units
4 continuations debugger effects.parser io io.streams.string
5 kernel namespaces parser parser.notes prettyprint sequences
9 : parse-string ( str -- quot )
10 [ split-lines parse-lines ] with-compilation-unit ;
12 : (eval) ( str effect -- )
13 [ parse-string ] dip call-effect ; inline
15 : eval ( str effect -- )
16 [ (eval) ] with-file-vocabs ; inline
18 SYNTAX: eval( \ eval parse-call-paren ;
20 : (eval>string) ( str -- output )
23 '[ _ ( -- ) (eval) ] [ print-error ] recover
24 ] with-string-writer ;
26 : eval>string ( str -- output )
27 [ (eval>string) ] with-file-vocabs ;
29 : (eval-with-stack) ( str -- )
30 parse-string [ output>array datastack. ] call( quot -- ) ;
32 : eval-with-stack ( str -- )
33 [ (eval-with-stack) ] with-file-vocabs ;
35 : (eval-with-stack>string) ( str -- output )
38 [ (eval-with-stack) ] [ nip print-error ] recover
39 ] with-string-writer ;
41 : eval-with-stack>string ( str -- output )
42 [ (eval-with-stack>string) ] with-file-vocabs ;