Ybc

From Esolang
Jump to: navigation, search

Programming Language YBC by Bobbyfisher101

NOTES:

This language is a simple language that uses a single memory-pointer register and an array of integers as variables (referenced as ram[index] ).


Command Command Explanation
Oh scrap, you're here today! begin code execution here
Oh scrap! stop code execution
What is ram, anyway? prompt user to input ram[register]
What is string, anyway? prompt user to input a string
No obense, but $String$ println String
No obense... println String from ram starting at ram[register]
No obense, but... println ram[register]
What is register, anyway? store the next line (a number) to the register
What is value, anyway? store the next line (a number) to ram[register]
Bin! register++
Cho! register--
Scrap! ram[3] = ram[1] + ram[2]
Scrap! Scrap! ram[3] = ram[1] - ram[2]
Scrap! Scrap! Scrap! ram[3] = ram[1] * ram[2]
Scrap! Scrap! Scrap! Scrap! ram[3] = ram[1] / ram[2]
YoonBinCho! Goto Yoon! with register number of O's
What is equal, anyway? skip next line if ram[1] != ram[2]
What is greater, anyway? skip next line if ram[1] < ram[2]
What is less, anyway? skip next line if ram[1] > ram[2]
What is not equal, anyway? skip next line if ram[1] == ram[2]
Oh! ram[1] = ram[register]
Oh, hello! ram[2] = ram[register]
Oh, hello there! ram[register] = ram[3]


SAMPLE PROGRAMS:


HELLOWORLD:

Oh scrap, you're here today!
No obense, but $HELLO WORLD!$
Oh scrap!


CAT PROGRAM:

Oh scrap, you're here today!
Yoon!
What is register, anyway?
0
What is string, anyway?
No obense...
What is register, anyway?
2
YoonBinCho!


SIMPLE HIGH/LOW NUMBER GUESSING GAME (ANSWER IS 67)

Oh scrap, you're here today!
What is register, anyway?
2
What is value, anyway?
67
Yoon!
What is register, anyway?
1 
No obense, but $ENTER GUESS:$
What is ram, anyway?
What is register, anyway?
5
What is equal, anyway?
YoonBinCho!
What is register, anyway?
4
What is greater, anyway?
YoonBinCho!
What is register, anyway?
3
What is less, anyway?
YoonBinCho!
Yooon!
No obense, but $TOO LOW!$
What is register, anyway?
2
YoonBinCho!
Yoooon!
No obense, but $TOO HIGH!$
What is register, anyway?
2
YoonBinCho!
Yooooon!
No obense, but $YOU WIN!$
Oh scrap!


Java interpreter:


import java.util.Scanner; public class YoonCode { public static int[] ram = new int[100]; public static int lineNumber = 0; public static int registerM = 0; public static boolean quit = false; public static Scanner input = new Scanner(System.in); public static String[] code = new String[100]; public static String errorMessage = ""; public static final boolean manual = true; //for entering in code through terminal public static void main(String[] args){ setCode(); findStart(); while(!quit){ lineNumber++; checkM(); execute(); if(lineNumber > 98){errorMessage = "NO_END_COMMAND"; error(); quit = true;} } } public static void setCode() { for (int i = 0; i < 100; i++) {code[i] = "";} if(manual){ //for entering in code through terminal, after done: type XXX int i = 0; String enters = "NO"; while(!enters.equals("XXX")){ enters = input.nextLine(); if(!enters.equals("XXX")){code[i] = enters;} i++; } System.out.println("\n\n\n\n\n"); return; } //TYPE CODE HERE } public static void checkM(){ if(registerM < 0 || registerM > ram.length){ errorMessage = "M_OUT_OF_BOUNDS: " + registerM; error(); registerM = 0; } } public static void findStart(){ lineNumber = findIndex("Oh scrap, you're here today!"); if (lineNumber == -1){errorMessage = "NO_START_DEFINED"; error(); quit = true;} } public static void execute(){ String s = code[lineNumber]; if(s.equals("Oh scrap!")){quit = true;} if(s.equals("What is ram, anyway?")){ram[registerM] = input.nextInt();} if(s.equals("What is string, anyway?")){ String enter = input.nextLine(); enter = enter.replaceAll("\\s+",""); for(int i = 0; i < enter.length(); i++){ ram[registerM + i] = (int)enter.charAt(i); } ram[registerM + enter.length()] = 0; } if(s.equals("No obense, but...")){System.out.println(ram[registerM]);} if(s.equals("No obense...")){ for(int i = 0; ram[registerM + i] != 0; i++){ System.out.print((char)ram[registerM + i]); } System.out.println(); } if(s.equals("What is register, anyway?")){ lineNumber++; try{registerM = Integer.parseInt(code[lineNumber]);} catch(Exception e){} } if(s.equals("What is value, anyway?")){ lineNumber++; try{ram[registerM] = Integer.parseInt(code[lineNumber]);} catch(Exception e){} } if(s.equals("Bin!")){registerM++;} if(s.equals("Cho!")){registerM--;} if(s.equals("Scrap!")){ram[3] = ram[1] + ram[2];} if(s.equals("Scrap! Scrap!")){ram[3] = ram[1] - ram[2];} if(s.equals("Scrap! Scrap! Scrap!")){ram[3] = ram[1] * ram[2];} if(s.equals("Scrap! Scrap! Scrap! Scrap!")){ if(ram[2]!=0){ ram[3] = ram[1] / ram[2];} if(ram[2] == 0){errorMessage = "DIVIDE_BY_ZERO!"; error();} } if(s.equals("YoonBinCho!")){ String find = "Y"; for(int i = 0 ; i < registerM; i++){ find = find + "o"; } find = find + "n!"; lineNumber = findIndex(find); if(lineNumber < 0){errorMessage = "NO_GOTO_LABEL";error();} } if(s.equals("What is equal, anyway?")){ if(ram[1] != ram[2]) {lineNumber++;} } if(s.equals("What is greater, anyway?")){ if(ram[1] < ram[2]) {lineNumber++;} } if(s.equals("What is less, anyway?")){ if(ram[1] > ram[2]) {lineNumber++;} } if(s.equals("What is not equal, anyway?")){ if(ram[1] == ram[2]) {lineNumber++;} } if(s.equals("Oh!")){ram[1] = ram[registerM];} if(s.equals("Oh, hello!")){ram[2] = ram[registerM];} if(s.equals("Oh, hello there!")){ram[registerM] = ram[3];} if(s.contains("$")){ int i1 = s.indexOf("$"); s = s.substring(i1 + 1); s = s.substring(0,s.length()-1); System.out.println(s); } } public static void error(){ System.out.println("\n*** No obense, but you suck at coding...***"); System.out.println("Line number: " + lineNumber); System.out.println("Error: " + errorMessage); System.out.println("*** No obense, but you suck at coding...***"); } public static int findIndex(String target){ for(int i = 0; i < code.length; i++){ if(code[i].equals(target)){return i;} } return -1; } }