bf v0.9.4 QUICK REFERENCE VOCABULARY Language keychars ----------------- ! exclamation mark ( a v - ) - store a into v (no chars between v and !) : colon ( v - a ) - leave v content on TOS (no chars between v and :) @ at ( [f] | v - x*a ) - execute function [f] on TOS or in variable v ? query ( f [f] - x*a ) - if-then; execute [f] if f ( f [f1] [f2] - x*a ) - if-then-else; execute [f1] if f, or else [f2] # sharp ( [f1] [f2] - x*a ) - while cycle; while [f1] execute [f2] d ( n2 n1 [f] - x*a ) - do loop cycle; execute [f] n2 - n1 times ( n2 n1 [f1] [f2] - x*a ) - do +loop; [f1] must leave a signed integer : colon ( - i ) - if used inside a loop, leave current loop index on TOS h halt cycle; must be used into [f2] of # and d, (see while and do-loop) % percent ( a - a a ) - dup ; semi-colon ( a - ) - drop $ dollar ( a1 a2 - a2 a1 ) - swap _ underscore ( a3 a2 a1 - a2 a1 a3 ) - rot r ( x*a i - y*a ) - roll, rotate ith element p ( x*a i - x*a a ) - pick, copy ith element : colon - show stack (it must be preceeded by any non-alphabetic char) e ( x*a - ) - empty stack } right curly bracket ( - i ) - leave current stack depth g ( i1 - i2 | ) - leave random number between 0 and i1, or set seed if i1 = 0 * star ( n1 n2 - n1*n2 ) - (integer) multiplication + plus ( n1 n2 - n1+n2 ) - (integer) addition - dash ( n1 n2 - n1-n2 ) - (integer) subtraction / slash ( n1 n2 - n1/n2 ) - (integer) division m ( n1 n2 - i ) - modulo (integer remainder of n1/n2) ^ caret ( n1 n2 - n3 ) - leave n1 to the power of n2 ! exclamation mark ( n1 n2 - n3 ) - leave n1 to the root of n2 \ backslash ( n - -n ) - negate TOS = equal ( a1 a2 - f ) - True if a1 = a2 > greater than ( a1 a2 - f ) - True if a1 > a2 & ampersand ( i1 i2 - f ) - logical and | bar ( i1 i2 - f ) - logical or ~ tilde ( f1 - f2 ) - logical not s ( n - d ) - sin (n in radians) c ( n - d ) - cos (n in radians) t ( n - d ) - arctan (n in radians) l letter l ( n1 n2 - n3 ) - leave logarithm in base n2 of n1 a ( i1 i2 - i3 ) - bitwise and o ( i1 i2 - i3 ) - bitwise or n ( i1 - i2 ) - bitwise not (1s complement) x ( i1 i2 - i3 ) - bitwise xor v ( i - d | d - i ) - convert an integer to a float and vice versa ( "s" - [f] | [f] - "s" ) - convert a string to a function and vice versa , comma ( "s" - n ) - convert string on TOS to number (integer or float) ( n - "s" ) - convert number on TOS (integer or float) to string i ( a - ) - print TOS on standard output j ( a i - ) - print a in a field of i chars on standard output (space padded) k ( n i - ) - if i >= 0, print n with i decimal digits (zero padded) ( d i - ) - if i < 0, possibily, print d with |i| digits (exponential form) . dot - emit a Carriage Return < lesser than ( - "s" ) - read from standard input leaving string "s" ( left paren ( "f" - x*a ) - include file "f" and execute it ( "f" i - "s" ) - if i > 0 leave ith line of file "f" as "s" ( "f" i - [f] ) - if i < 0 leave ith line of file "f" as [f] ( "f" 0 - i ) - leave number of lines of text file "f" ) right paren ( "f" "s" - ) - append string "s" to file "f" ( "f" 0 - ) - empty file "f" (set it to zero length) f ( - "f" ) - leave current buffer file name b ( "f" - ) - set buffer file name to "f" y ( "f" - ) - yield stack content, in bf format, to file "f" ] right square bracket - toggle appending input lines to buffer file ` grave ( - c ) - leave on TOS ASCII code of next char ' tick ( c - ) - print char whose ASCII code is on TOS u ( "s" - c ) - unveil first ASCII code of string "s", leaving it on TOS ( "s1" i1 i2 - "s2" ) - leave substring "s2" of "s1", from i1 > 0 to i2 ( "s" i1 - i2 ) - if i1 < 0, leave length of string "s" ( "s1" "s2" 0 - "s1+s2" ) - leave union of strings "s1" and "s2" ~ tilde ( - yyyy mm dd ) - followed by d leave date values on stack ( - hh mm ss ) - followed by t leave time values on stack ( a - ) ( R: - a ) - followed by > move TOS to return stack ( - a ) ( R: a - ) - followed by < move top of return stack to TOS ( - a ) ( R: a - a ) - followed by : copy top of return stack to TOS " quote ( - "s" ) start a string until first " or EOL; \ escapes " [ left square bracket ( - [f] ) start a function until last ] or EOL { left curly bracket - start skipping text (comments) until first } or EOL w ( a - i ) leave token of a (0 = int; 1 = float; 4 = string; 5 = function) Debugging commands ------------------ debug toggle on/off debugging see ( - ) show instructions linked to most recent voc print a list of all defined words where print value of all non null variables System flag commands ------------------ clearonerror ( - ) toggle on/off stack clearing on error errorshow ( - ) toggle on/off error showing exitwarn ( - ) toggle on/off exit warninf on stack not empty quiet ( - ) toggle on/off quiet mode System commands --------------- bye the same as 0q (also exit, halt, quit) cd ( "s" - ) change to directory "s" def ( - ) - link to the following it until EOL; is then stored into vocabulary edit ( "f" - ) edit file "f" with an editor (set in bf.h) help help on system commands ls list current directory (also dir) now print current date & time in C format precision ( i1 - ) | ( 0 - i2 ) set/get max precision for floats pwd print working directory q ( n - ) quit with error code n (0 means success) ref show a quick language summary by screens (also words) reset reset all variables, erase all defined words and clear stack savedef ( "f" - ) save an image of defined words on file "f" savesys ( "f" - ) execute savedef + savevar on file "f" savevar ( "f" - ) save an image of variables on file "f" sh ( - ) execute shell command starting from next char to EOL show ( "f" - ) show content of file "f" using a pager (also view) status show some information about the running bf session undef ( - ) - removes from the vocabulary version ( - "s" ) - leave a string with the version number