Skip to content

Commit 2ad7f35

Browse files
committed
manual test with sample asm file
1 parent 2087fb0 commit 2ad7f35

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
venv/
2-
__pycache__/
2+
__pycache__/

src/__main__.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
# type: ignore
2-
from .parser import parse_and_translate_instruction
2+
from .parser import Parser
33

44

55
def main():
6-
user_input = input("Enter the full instruction: ")
7-
binary_instruction = parse_and_translate_instruction(user_input)
6+
# user_input = input("Enter the full instruction: ")
7+
# binary_instruction = parse_and_translate_instruction(user_input)
88

9-
print(binary_instruction)
9+
# print(binary_instruction)
10+
parser = Parser("/home/ash/code/python-hack-assembler/test.asm")
11+
parser.assemble()
1012

1113

1214
if __name__ == "__main__":

src/parser.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,16 @@ def assemble(self):
2424
try:
2525
with open(self.file, "r") as file:
2626
for line in file:
27-
self.read_line(line)
27+
translatedLine = parse_line(line)
28+
29+
if translatedLine is not None:
30+
self.lineNum += 1
31+
print(translatedLine)
2832

2933
except FileNotFoundError:
3034
print(f"File {self.file} not found.")
3135
return None
3236

33-
def read_line(self, line):
34-
print(line)
35-
3637

3738
def parse_line(line: str) -> None | str:
3839
line = line.strip()
@@ -41,8 +42,12 @@ def parse_line(line: str) -> None | str:
4142
if line == "":
4243
return None
4344

45+
# Skip comment lines
46+
if line.startswith("//"):
47+
return None
48+
4449
# Handle inline comments
45-
if line.split("//")[1]:
50+
if len(line.split("//")) > 1:
4651
line = line[0].strip()
4752

4853
if line.startswith("("):
@@ -58,7 +63,7 @@ def parse_line(line: str) -> None | str:
5863
maybe_variable = line.split("@")[1]
5964
if not maybe_variable.isdigit():
6065
# Stubbed: Add to the symbol table here
61-
return
66+
return None
6267

6368
return parse_and_translate_instruction(line)
6469

test.asm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
D=1
2+
D=D+1
3+
4+

0 commit comments

Comments
 (0)