Baz
Baz is a joke programming language created by User:OriginalOldMan. Variables can only have 3 values in Baz: true, false, or baz.
Variables
Variables are assigned like so:
variablename = value
The following code would set the variable x
equal to baz
:
x = baz
Commands
There are only a few commands in baz.
Command | Description | Example |
---|---|---|
show <variable>
|
Prints the value of a variable to the screen. | show x prints the value of x to the screen.
|
get <variable>
|
Gets input from the user and stores it in a variable.
Will only accept true, false or baz as valid input. |
get x gets input from the user and stores it in x.
|
if <variable>
|
Works the same way as if statements in most languages.
If the variable is equal to baz, then there is a 50% chance that the code inside of the if statement will run. |
if x
|
if! <variable>
|
The if! statement is the same as the if
statement, except it executes when the variable is equal to false (or sometimes baz...). |
if! x
|
goto <line>
|
Jumps to a specific line in the program. | show true
|
end
|
Ends the program. |
Error Reporting
Errors are reported like so:
YOU ARE WRONG!@<linenumber>
An error at line 1 would look like this:
YOU ARE WRONG!@1
Programs
Cat Program
get x show x
Truth-machine
Note: Instead of 0 and 1, we use false and true.
get x if x show true goto 3 endif show false end
Randomly print true and false
if baz show true goto 1 endif show false goto 1
Quine
It is not possible to create a quine normally. However, one can create a quine-by-error.
YOU ARE WRONG!@1
Interpreter in Ruby
print Dir.pwd print " $ " $vars = {} $c = 0 $vars ["baz"] = "baz" $vars ["true"] = "true" $vars ["false"] = "false" file = File.open(gets.delete("\n"),"r") $program = file.read $program = $program.split("\n") def tokenize(line) tokens = [] if line.match(/.+=.+/) line = line.delete(" ") line = line.split("=") tokens[1] = line[0] tokens[0] = "setvar" tokens[2] = line[1] else tokens = line.split(" ") end return tokens end def exe(line) if line[0] == "setvar" if $vars[line[2]] == "true" or $vars[line[2]] == "false" or $vars[line[2]] == "baz" $vars[line[1]] = $vars[line[2]] else e = $c+1 abort "YOU ARE WRONG!@#{e}" end elsif line[0] == "show" if line.count == 2 puts $vars[line[1]] else e = $c+1 abort "YOU ARE WRONG!@#{e}" end elsif line[0] == "get" if line.count == 2 tvar = gets.delete("\n") if tvar == "true" or tvar == "false" or tvar == "baz" $vars[line[1]] = tvar else e = $c+1 abort "YOU ARE WRONG!@#{e}" end end elsif line[0] == "if" if line.count == 2 x = $vars[line[1]] == "baz" and rand(2) == 1 if $vars[line[1]] == "false" or x l = $c b = 0 while b == 0 if $program[l] == "endif" b=1 $c = l end l+=1 end end else e = $c+1 abort "YOU ARE WRONG!@#{e}" end elsif line[0] == "if!" if line.count == 2 x = $vars[line[1]] == "baz" and rand(2) == 1 if $vars[line[1]] == "true" or x l = $c b = 0 while b == 0 if $program[l] == "endif" b=1 $c = l end l+=1 end end else e = $c+1 abort "YOU ARE WRONG!@#{e}" end elsif line[0] == "goto" if line.count == 2 $c = line[1].to_i - 2 else e = $c+1 abort("YOU ARE WRONG!@#{e}") end elsif line[0] == "end" abort elsif line[0] == "endif" else e = $c + 1 abort "YOU ARE WRONG!@#{e}" end end def run(program) while $c < program.count exe(tokenize(program[$c])) $c+=1 end end run($program)