| 
var menuinput : string
 var reply : string (1)
 var filename : string
 var inputstring : string := ""
 var tofile : boolean := false
 
 put "Brainfuck Generator - Output String"
 put "By: Degensquared"
 put "Press any key to continue."
 getch(reply)
 cls
 put "Enter the string that you would like to be converted to bf code:"
 get inputstring : *
 put "output to file? (y/n)"
 get menuinput
 if menuinput = "y" then
 tofile := true
 put "What is the filename of the output file? (out.txt is default)"
 get filename
 end if
 put "Press any key to begin parsing"
 getch (reply)
 cls
 
 
 var input : array 1 .. length (inputstring) of int
 var output : string := "++++++++++[>+++>+++++++>++++++++++>+<<<<-]"
 var pointerloc : int := 0
 var cells : array 1 .. 3 of int := init (30, 70, 100)
 var curcell : int := 0
 var stream : int
 var outputarray : flexible array 1 .. 0 of string
 
 if tofile then
 open : stream, filename, put
 end if
 
 % Fill the input array with the ascii values for each of
 for i : 1 .. upper (input)
 input (i) := ord (inputstring (i))
 end for
 
 %Fixes the compiler throwing an exception for strings > 255 char
 %If output string gets to large, it transfers the string to an array so it can be output later.
 proc checklength
 if length (output) >= 254 then
 new outputarray, upper (outputarray) + 1
 outputarray (upper (outputarray)) := output
 output := ""
 end if
 end checklength
 
 %For each letter in input
 for i : 1 .. upper (input)
 curcell := 0
 %Check if it should use the first cell
 if input (i) < 57 then
 curcell := 1
 % Checks current pointer location, and moves it to cell 1 if it isn't already
 if pointerloc > 1 then
 for j : 1 .. pointerloc - 1
 output += "<"
 checklength
 pointerloc -= 1
 end for
 else
 output += ">"
 checklength
 pointerloc += 1
 end if
 %Checks wether or not to use third cell
 elsif input (i) > 90 then
 curcell := 3
 % Moves pointer to 3rd location if it isn't already there
 if pointerloc < 3 then
 for j : 1 .. abs (3 - pointerloc)
 output += ">"
 checklength
 pointerloc += 1
 end for
 end if
 else
 curcell := 2
 if pointerloc < 2 then
 for j : 1 .. abs (2 - pointerloc)
 output += ">"
 checklength
 pointerloc += 1
 end for
 elsif pointerloc > 2 then
 output += "<"
 checklength
 pointerloc -= 1
 end if
 end if
 %Increments or Decrements the cell to match input value
 if input (i) > cells (curcell) then
 for j : 1 .. abs (input (i) - cells (curcell))
 output += "+"
 checklength
 cells (curcell) += 1
 end for
 elsif input (i) < cells (curcell) then
 for j : 1 .. cells (curcell) - input (i)
 output += "-"
 checklength
 cells (curcell) -= 1
 end for
 end if
 % Output character
 output += "."
 end for
 
 % Output Code.
 put "Brain Fuck code to output '", inputstring, "':"
 for i : 1 .. upper (outputarray)
 put outputarray (i) ..
 end for
 put output ..
 
 if tofile then
 put ""
 put ""
 put "Written to ", filename
 for i : 1 .. upper (outputarray)
 put : stream, outputarray (i) ..
 end for
 put : stream, output
 close : stream
 end if
 
 |