]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/eval/eval.factor
basis: use lint.vocabs tool to trim using lists
[factor.git] / basis / eval / eval.factor
index 65f13261a97c54b5b68e0e922a6a5dd70ecc9efb..a4efaa366f6a3782d6c89a815b64175e2780c3f6 100644 (file)
@@ -1,12 +1,12 @@
 ! Copyright (C) 2008, 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: splitting parser parser.notes compiler.units kernel
-namespaces debugger io.streams.string fry combinators
-effects.parser continuations ;
+USING: combinators combinators.smart compiler.units
+continuations debugger effects.parser io.streams.string
+kernel namespaces parser parser.notes prettyprint splitting ;
 IN: eval
 
 : parse-string ( str -- quot )
-    [ string-lines parse-lines ] with-compilation-unit ;
+    [ split-lines parse-lines ] with-compilation-unit ;
 
 : (eval) ( str effect -- )
     [ parse-string ] dip call-effect ; inline
@@ -14,14 +14,28 @@ IN: eval
 : eval ( str effect -- )
     [ (eval) ] with-file-vocabs ; inline
 
-SYNTAX: eval( \ eval parse-call( ;
+SYNTAX: eval( \ eval parse-call-paren ;
 
 : (eval>string) ( str -- output )
     [
-        "quiet" on
-        parser-notes off
-        '[ _ (( -- )) (eval) ] [ print-error ] recover
+        parser-quiet? on
+        '[ _ ( -- ) (eval) ] [ print-error ] recover
     ] with-string-writer ;
 
 : eval>string ( str -- output )
-    [ (eval>string) ] with-file-vocabs ;
\ No newline at end of file
+    [ (eval>string) ] with-file-vocabs ;
+
+: (eval-with-stack) ( str -- )
+    parse-string [ output>array datastack. ] call( quot -- ) ;
+
+: eval-with-stack ( str -- )
+    [ (eval-with-stack) ] with-file-vocabs ;
+
+: (eval-with-stack>string) ( str -- output )
+    [
+        parser-quiet? on
+        [ (eval-with-stack) ] [ nip print-error ] recover
+    ] with-string-writer ;
+
+: eval-with-stack>string ( str -- output )
+    [ (eval-with-stack>string) ] with-file-vocabs ;