Edit individual bytes of data

This commit is contained in:
2025-10-11 16:59:05 +11:00
parent ea8d651171
commit 74494711f6
3 changed files with 29 additions and 24 deletions

View File

@@ -17,7 +17,11 @@ Example: `print var`
Changes the value of an already created value.
Example: `set var = "World"`
Examples:
```
set var = "World"
set var[0] = "w"
```
## input var *bytes = type *ibytes

View File

@@ -1,9 +1,9 @@
from email.charset import UNKNOWN8BIT
import os
import string
import math as m
from sys import argv
file = open(argv[1]).readlines();
bfcode = ""
bfcode: str = ""
variables = []
varbytes = []
braces = []
@@ -21,26 +21,20 @@ def find_file(filename, root_dir):
return os.path.join(dirpath, filename)
return None
def removeChar(str, char):
def removeChar(str: str, char: str) -> str:
ans = ""
for i in str:
if (i != char):
ans += i
return ans
def removeEnd(string, num):
def removeEnd(string: str) -> str:
ans = ""
for i in range(len(string)-1):
ans += string[i]
return ans
def ord2(char):
if (len(char) == 1):
return ord(char)
elif (len(char == 0)):
return(0)
def sign(num):
def sign(num: float) -> int:
if num < 0:
return -1
elif num == 0:
@@ -64,7 +58,7 @@ for i in file:
# Create command
elif (i.split(" ")[0] == "create"):
if (i[len(i)-1] == "\n"):
i = removeEnd(i, 1)
i = removeEnd(i)
bfcode += ">>>>>>>>>>>>[[>>]>>]"
bytes = int(removeChar(i.split("*", 1)[1].split("=", 1)[0], " "))
@@ -88,7 +82,7 @@ for i in file:
if (type == "string"):
a = a.split("\"", 1)[1]
a = removeEnd(a, 1)
a = removeEnd(a)
for j in range(bytes):
bfcode += "+++>"
if (j < len(a)):
@@ -143,7 +137,7 @@ for i in file:
elif (i.split(" ")[0] == "print"):
a = i.split(" ", 1)[1]
if a[len(a)-1] == "\n":
a = removeEnd(a, 1)
a = removeEnd(a)
if (a in variables):
bfcode += ">>>>>>>>>>>>"
for j in range(variables.index(a)):
@@ -194,7 +188,7 @@ for i in file:
elif (i.split(" ")[0] == "set"):
a = i.split(" ")[1]
if a[len(a)-1] == "\n":
a = removeEnd(a, 1)
a = removeEnd(a)
if (a in variables):
bfcode += ">>>>>>>>>>>>"
for j in range(variables.index(a)):
@@ -207,10 +201,10 @@ for i in file:
val = i.split("=", 1)[1].split(" ", 1)[1]
type = None
if (val[len(val)-1] == "\n"):
val = removeEnd(val, 1)
val = removeEnd(val)
if (val[0] == "\"") & (val[len(val)-1] == "\""):
val = val.split("\"", 1)[1]
val = removeEnd(val, 1)
val = removeEnd(val)
type = "string"
elif (val == "true") | (val == "false"):
type = "bool"
@@ -247,6 +241,15 @@ for i in file:
else:
raise TypeError("Could not find variable type")
bfcode += "<<[[<<]<<]<<<<<<<<"
elif "=" in i:
if a.split("[")[0] in variables:
var = a.split("[")[0]
idx = int(a.split("[")[1].split("]")[0])
bfcode += ">>>>>>>>>>>>" + "[>>]>>" * variables.index(var) + ">>" * idx + ">"
bfcode += "[-]" + "+" * ord(i.split("=", 1)[1].split("\"")[1])
bfcode += "<[[<<]<<]<<<<<<<<"
else:
raise NameError(f"Could not find variable {a.split("[")[0]}")
else:
raise NameError(f"Could not find variable {a}")

View File

@@ -1,6 +1,4 @@
create var *1 = "H"
create in *1 = "A"
if var[0] == in[0] {
}
create var *5 = "Hello"
create var2 *5 = "World"
set var[1] = "E"
set var2[2] = "R"