diff --git a/docs/syntax.md b/docs/syntax.md index 51ab6e7..eaa654a 100644 --- a/docs/syntax.md +++ b/docs/syntax.md @@ -1,3 +1,9 @@ -## create var = Value +## create var *bytes = Value -Creates the variable "var" and initialises its value. \ No newline at end of file +Creates the variable "var" with a set number of bytes allocated to it, and initialises its value. + +Example: `create var *5 = "Hello"` + +## print var + +Prints the value of `var` to the console, where `var` is a variable. \ No newline at end of file diff --git a/readme.md b/readme.md index aaf8bbd..36dc0ee 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,17 @@ ## Welcome to BrainAssembly! -BrainAssembly is a language that compiles to Brainfuck. Similar to Assembly languages, it has simple syntax, and is designed to make Brainfuck easier to write code for. Enjoy! \ No newline at end of file +BrainAssembly is a language that compiles to Brainfuck. Similar to Assembly languages, it has simple syntax, and is designed to make Brainfuck easier to write code for. Enjoy! + +To run: + +- First clone this repository and install python. +``` +git clone https://chookspace.com/DiamondNether90/BrainAssembly +``` + +- Next, run the following command to compile a .basm file to Brainfuck: +``` +python3 src/main.py path/to/file.basm path/to/file.bf +``` + +This will create or replace the contents of path/to/file.bf with the compiled BrainAssembly code. \ No newline at end of file diff --git a/src/main.py b/src/main.py index c530bdf..c20c05f 100644 --- a/src/main.py +++ b/src/main.py @@ -2,6 +2,7 @@ import string from sys import argv file = open(argv[1]).readlines(); bfcode = "" +variables = [] def removeChar(str, char): ans = "" for i in str: @@ -47,9 +48,23 @@ for i in file: if (j < len(a)): bfcode += "+" * ord(a[j]) + ">" bfcode += "<[[<<]<<]<<<<<<<<<" - print(type) - else: - print("what the sigma") + + variables.append(i.split(" ")[1].split("*")[0]) + + elif (i.split(" ")[0] == "print"): + a = i.split(" ", 1)[1] + if a[len(a)-1] == "\n": + a = removeEnd(a, 1) + if (a in variables): + bfcode += ">>>>>>>>>>>>" + for i in range(variables.index(a)): + bfcode += "[>>]>>" + bfcode += "[>.>]<<[[<<]<<]<<<<<<<<++++++++++.[-]" + else: + raise NameError(f"Could not find variable {a}") + + elif ((i != "\n") & (i != "")): + raise ValueError(f"Invalid Command") with open(argv[2], "w") as file: file.write(bfcode) \ No newline at end of file diff --git a/tests/main.basm b/tests/main.basm index 50056d5..5de0898 100644 --- a/tests/main.basm +++ b/tests/main.basm @@ -1,3 +1,7 @@ -create str *5 = "Hello, world!" -create str *5 = "World, hello!" -create str *6 = "Sigma!" \ No newline at end of file +create hello *5 = "Hello, world!" +create world *5 = "World, hello!" +create sigma *6 = "Sigma!" + +print hello +print world +print sigma \ No newline at end of file diff --git a/tests/main.bf b/tests/main.bf index e69de29..a1756c5 100644 --- a/tests/main.bf +++ b/tests/main.bf @@ -0,0 +1 @@ +>>>>>>>>>>>>[[>>]>>]+++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++><[[<<]<<]<<<<<<<<<>>>>>>>>>>>>[[>>]>>]+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++><[[<<]<<]<<<<<<<<<>>>>>>>>>>>>[[>>]>>]+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++>+++++++++++++++++++++++++++++++++><[[<<]<<]<<<<<<<<<>>>>>>>>>>>>[>.>]<<[[<<]<<]<<<<<<<<++++++++++.[-]>>>>>>>>>>>>[>>]>>[>.>]<<[[<<]<<]<<<<<<<<++++++++++.[-]>>>>>>>>>>>>[>>]>>[>>]>>[>.>]<<[[<<]<<]<<<<<<<<++++++++++.[-] \ No newline at end of file