\ BrainFuck to 4tH Converter - Copyright 2004,2009 J.L. Bezemer
\ You can redistribute this file and/or modify it under
\ the terms of the GNU General Public License
78 constant rmargin
include lib/print.4th
include lib/row.4th
create BFop
char > , ," char+"
char < , ," char-"
char + , ," dup c@ 1+ over c!"
char - , ," dup c@ 1- over c!"
char . , ," dup c@ emit"
char , , ," char> over c!"
char [ , ," begin dup c@ while"
char ] , ," repeat"
NULL ,
: Preprocess
." ( This file was generated by BF24tH - Copyright 2004 J.L. Bezemer)" cr
cr
." 10 constant EOL \ end of line character" cr
." 30000 constant #BFMemory" cr
." #BFMemory string BFmemory \ BF memory" cr
cr
." : char> ( t m -- t m c)" cr
." >r dup tib = \ save pointer, if start buffer" cr
." if refill else true then \ then refill the buffer" cr
." if \ if read is successful" cr
." dup c@ dup 0= \ get character, if end of string" cr
." if EOL + nip tib swap \ return LF and signal end of buffer" cr
." else swap char+ swap \ else increment pointer" cr
." then" cr
." else 0 \ else return NULL" cr
." then r> swap \ restore pointer and swap char" cr
." ;" cr
nl
s" : BF" print
;
: PostProcess bl show [char] ; show cr cr ." tib BFMemory BF" cr ;
: Usage abort" Usage: bf24th bf-source 4th-source" ;
: Read-file pad 1 accept ;
: Process
pad c@ BFop 2 num-key row
if nip cell+ @c count print else drop drop then
;
include lib/convert.4th
|