Not logged in
d844f9fff0 2011-05-31 charlesch: ( Support functions: basic input, output, and data pointer support )
d844f9fff0 2011-05-31 charlesch: :wait
d844f9fff0 2011-05-31 charlesch:   #0 #0 out,
d844f9fff0 2011-05-31 charlesch:   wait,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :bye
d844f9fff0 2011-05-31 charlesch:   #-9 #5 out,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :dp 32768 m,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :bf_>
d844f9fff0 2011-05-31 charlesch:   dp # @,
d844f9fff0 2011-05-31 charlesch:   1+,
d844f9fff0 2011-05-31 charlesch:   dp # !,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :bf_<
d844f9fff0 2011-05-31 charlesch:   dp # @,
d844f9fff0 2011-05-31 charlesch:   1-,
d844f9fff0 2011-05-31 charlesch:   dp # !,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :bf_+
d844f9fff0 2011-05-31 charlesch:   dp # @, @,
d844f9fff0 2011-05-31 charlesch:   1+,
d844f9fff0 2011-05-31 charlesch:   dp # @, !,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :bf_-
d844f9fff0 2011-05-31 charlesch:   dp # @, @,
d844f9fff0 2011-05-31 charlesch:   1-,
d844f9fff0 2011-05-31 charlesch:   dp # @, !,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :bf_.
d844f9fff0 2011-05-31 charlesch:   dp # @, @,
d844f9fff0 2011-05-31 charlesch:   #1 #2 out,
d844f9fff0 2011-05-31 charlesch:   call wait
d844f9fff0 2011-05-31 charlesch:   #0 #3 out,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: :bf_,
d844f9fff0 2011-05-31 charlesch:   #1 #1 out,
d844f9fff0 2011-05-31 charlesch:   call wait
d844f9fff0 2011-05-31 charlesch:   #1 in,
d844f9fff0 2011-05-31 charlesch:   ret,
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: ( Actual BrainF*** compiler )
d844f9fff0 2011-05-31 charlesch: variable ip
d844f9fff0 2011-05-31 charlesch: variable lp
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: : getLabel
d844f9fff0 2011-05-31 charlesch:   @lp toString "L" ^strings'prepend ;
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: : run
d844f9fff0 2011-05-31 charlesch:   t-here putn space @ip @ putc cr
d844f9fff0 2011-05-31 charlesch:   @ip @ ip ++
d844f9fff0 2011-05-31 charlesch:   [ '> = ] [ drop bf_> m, ] when
d844f9fff0 2011-05-31 charlesch:   [ '< = ] [ drop bf_< m, ] when
d844f9fff0 2011-05-31 charlesch:   [ '+ = ] [ drop bf_+ m, ] when
d844f9fff0 2011-05-31 charlesch:   [ '- = ] [ drop bf_- m, ] when
d844f9fff0 2011-05-31 charlesch:   [ '. = ] [ drop bf_. m, ] when
d844f9fff0 2011-05-31 charlesch:   [ ', = ] [ drop bf_, m, ] when
d844f9fff0 2011-05-31 charlesch:   [ '[ = ] [ drop getLabel header t-here @last !d->xt lp ++ ] when
d844f9fff0 2011-05-31 charlesch:   [ '] = ] [ drop dp # @, @, lit, 0 m, !jump, lp -- getLabel find drop @d->xt m, ] when
d844f9fff0 2011-05-31 charlesch:   drop ;
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: : do
d844f9fff0 2011-05-31 charlesch:   [ run @ip @ ] while ;
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: : bf: ( "- )
d844f9fff0 2011-05-31 charlesch:   '~ accept tib keepString !ip do ;
d844f9fff0 2011-05-31 charlesch: 
d844f9fff0 2011-05-31 charlesch: ( Start Compilation of BrainF*** code after this )
d844f9fff0 2011-05-31 charlesch: :main