Execute Brain****/Java: Difference between revisions

m
Cleaned up comments and description a bit.
m (Added a bit more description.)
m (Cleaned up comments and description a bit.)
Line 2:
In this implementation of [[Brainf***]], the code is read in all at once and checked for uneven brackets (unequal amounts of [ and ] commands). If that error occurs, the code will obviously not be run.
 
Under the hood, the program memory is an ArrayList of Integers which expands only to the right. So, if the pointer moves past zero to the left, the program will exit and a "Pointer out of range" error message will be displayed. Due to the BufferedReader input class, return characters ([http://www.asciitable.com ASCII] 10 and 13) are ignored on input (the , command)., Return charactersbut are not ignored on output (the . command). More detailed information can be found in the comments scattered about the code.
 
import java.io.BufferedReader;
Line 25:
* The main program. Holds the input loop and error-handling.
*
* @param args 0: Source file others: ignored
*/
public static void main(String[] args){
Line 38:
StringBuilder code= new StringBuilder();
//countscount for loop syntax errors
int bCnt= 0;
Line 77:
case '.':
System.out.print((char)memory.get(pointer).intValue());
//no errors possible here
break;
case ',':
input(memory, input);
//no errors possible here
break;
case '[':
Line 97 ⟶ 95:
case '>':
pointer++;
//gets rid of NullPointerExceptions
while(pointer + 1 > memory.size()) memory.add(0);
break;
case '<':
if(pointer == 0){
//can't do it
System.err.println("Pointer out of range (negative).");
return;
Line 117:
public static void jumpBack(StringBuilder code){
//initial count for the bracket we're on
//read back with pointer
//count brackets until the corresponding [
int bracketCnt= 1;
//count brackets until the corresponding [
while(codeIndex >= 0 && bracketCnt != 0){
codeIndex--;
Line 131:
public static void jumpForward(StringBuilder code){
//initial count for the bracket we're on
//read back with code pointer
//count brackets until the corresponding ]
int bracketCnt= 1;
//count brackets until the corresponding ]
while(codeIndex < code.length() && bracketCnt != 0){
codeIndex++;
Anonymous user