Skip to content

Commit 7ab36b1

Browse files
committed
If-else syntax added
1 parent 9b508c1 commit 7ab36b1

File tree

4 files changed

+57
-89
lines changed

4 files changed

+57
-89
lines changed

NumberScript/__main__.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,6 @@
2222
4 <- Compare
2323
% <- comment
2424
^ <- Math-Operation-Start
25-
example:
26-
%comment
27-
0 3a5 2a
28-
29-
output:
30-
5
31-
32-
example 2:
33-
%Math-Operation-Start
34-
0 ^1+1 1
35-
36-
output:
37-
2
38-
39-
example 3:
40-
%If-Else
41-
0
42-
3a:1
43-
4a=1
44-
1
45-
46-
Output:
47-
True
4825
"""
4926

5027
space = ""
@@ -57,6 +34,7 @@
5734
if args.file:
5835
with open(args.file, "r") as file:
5936
code = file.read()
37+
code = code.replace("\n", " ")
6038
Interpreter.interpret(code)
6139
else:
6240
print(f"""
@@ -74,4 +52,4 @@
7452
elif code == "help":
7553
print(help)
7654
else:
77-
Interpreter.interpret(code)
55+
Interpreter.interpret(Interpreter, code)

NumberScript/interpreter.py

Lines changed: 44 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,43 @@
1+
def Checker(re_code: str, variables: dict) -> bool:
2+
if "=" in re_code:
3+
code = re_code.split("=")
4+
if code[0] in variables:
5+
code[0] = variables[code[0]]
6+
if code [1] in variables:
7+
code[1] = variables[code[1]]
8+
return code[0] == code[1]
9+
10+
elif "!" in re_code:
11+
code = re_code.split("!")
12+
if code[0] in variables:
13+
code[0] = variables[code[0]]
14+
if code [1] in variables:
15+
code[1] = variables[code[1]]
16+
return code[0] != code[1]
17+
18+
elif "<" in re_code:
19+
code = re_code.split("<")
20+
if code[0] in variables:
21+
code[0] = variables[code[0]]
22+
if code [1] in variables:
23+
code[1] = variables[code[1]]
24+
return code[0] < code[1]
25+
26+
elif ">" in re_code:
27+
code = re_code.split(">")
28+
if code[0] in variables:
29+
code[0] = variables[code[0]]
30+
if code [1] in variables:
31+
code[1] = variables[code[1]]
32+
return code[0] > code[1]
33+
34+
135
class Interpreter():
236
def __init__(self):
337
pass
438

5-
def interpret(code: str) -> str:
39+
def interpret(self, code: str) -> str:
640
code = code.split(" ")
7-
if "\n" in code:
8-
codes = ""
9-
for i in range(len(code)):
10-
codes += code[i]
11-
code = codes.split("\n")
1241

1342
variables = {}
1443
for j in range(0, len(code)):
@@ -100,61 +129,15 @@ def interpret(code: str) -> str:
100129

101130
if code[j].startswith("4"):
102131
re_code = code[j].replace("4", "", 1)
103-
if "=" in re_code[0]:
104-
req_code = re_code[0].split("=")
105-
if req_code[0] in variables.keys():
106-
val1 = variables[req_code[0]]
107-
else:
108-
val1 = req_code[0]
109-
110-
if req_code[1] in variables.keys():
111-
val2 = variables[req_code[1]]
112-
else:
113-
val2 = req_code[1]
114-
115-
return val1 == val2
116-
117-
elif "!" in re_code[0]:
118-
req_code = re_code[0].split("!")
119-
if req_code[0] in variables.keys():
120-
val1 = variables[req_code[0]]
121-
else:
122-
val1 = req_code[0]
123-
124-
if req_code[1] in variables.keys():
125-
val2 = variables[req_code[1]]
126-
else:
127-
val2 = req_code[1]
128-
129-
return val1!=val2
130-
131-
elif ">" in re_code[0]:
132-
req_code = re_code[0].split(">")
133-
if req_code[0] in variables.keys():
134-
val1 = int(variables[req_code[0]])
135-
else:
136-
val1 = int(req_code[0])
137-
138-
if req_code[1] in variables.keys():
139-
val2 = int(variables[req_code[1]])
140-
else:
141-
val2 = int(req_code[1])
142-
143-
return val1 > val2
144-
145-
elif "<" in re_code[0]:
146-
req_code = re_code[0].split("<")
147-
if req_code[0] in variables.keys():
148-
val1 = int(variables[req_code[0]])
149-
else:
150-
val1 = int(req_code[0])
151-
152-
if req_code[1] in variables.keys():
153-
val2 = int(variables[req_code[1]])
154-
else:
155-
val2 = int(req_code[1])
156-
157-
return val1 < val2
132+
print(Checker(re_code, variables))
133+
134+
if code[j].startswith("?"):
135+
re_code = code[j].replace("?", "", 1)
136+
statements = re_code.split(":")
137+
if Checker(statements[0], variables):
138+
self.interpret(Interpreter, statements[1])
139+
else:
140+
self.interpret(Interpreter, statements[2])
158141

159142
if code[j] in variables.keys():
160143
print(variables[code[j]])

examples/example.ns

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
0 %Starts %The %Program
2-
3a:Hello %Sets %The %Variable %a %to %Hello
3-
2a %Displays %a
4-
1 %Ends %The %program
1+
0
2+
3a:Hello
3+
2a
4+
1

grammar.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
4 <- Compare
66
% <- comment
77
^ <- Math-Operation-Start
8+
? : <- If Else
89
example:
910
%comment
1011
0 3a5 2a
@@ -27,3 +28,9 @@ example 3:
2728

2829
Output:
2930
True
31+
32+
example 4:
33+
0
34+
3a:1
35+
3b:1
36+
?a=b(2hello):2bye

0 commit comments

Comments
 (0)