From 01d244c829ff32d0077c33f2ba4dfe562a96f98b Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 9 Apr 2015 10:43:54 -0700 Subject: [PATCH] brainfuck: enable use from command-line. --- extra/brainfuck/brainfuck.factor | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/extra/brainfuck/brainfuck.factor b/extra/brainfuck/brainfuck.factor index 8574565a73..ab1c83cbcd 100644 --- a/extra/brainfuck/brainfuck.factor +++ b/extra/brainfuck/brainfuck.factor @@ -1,8 +1,9 @@ ! Copyright (C) 2009 John Benediktsson ! See http://factorcode.org/license.txt for BSD license -USING: accessors ascii assocs fry io io.streams.string kernel -macros math peg.ebnf prettyprint sequences strings ; +USING: accessors assocs command-line fry io io.encodings.binary +io.files io.streams.string kernel macros math namespaces +peg.ebnf prettyprint sequences ; IN: brainfuck @@ -70,8 +71,23 @@ code = (loop|ops|unknown)* => [[ compose-all ]] PRIVATE> MACRO: run-brainfuck ( code -- ) - [ blank? not ] filter parse-brainfuck - '[ @ drop flush ] ; + parse-brainfuck '[ @ drop flush ] ; : get-brainfuck ( code -- result ) [ run-brainfuck ] with-string-writer ; inline + + ] dip parse-brainfuck call( x -- x ) drop flush ; + +PRIVATE> + +: brainfuck-main ( -- ) + command-line get [ + contents (run-brainfuck) + ] [ + [ binary file-contents (run-brainfuck) ] each + ] if-empty ; + +MAIN: brainfuck-main