summaryrefslogtreecommitdiff
path: root/nandgame
diff options
context:
space:
mode:
Diffstat (limited to 'nandgame')
-rwxr-xr-xnandgame/assembler/py_nand_ass/parser.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/nandgame/assembler/py_nand_ass/parser.py b/nandgame/assembler/py_nand_ass/parser.py
index 7cc4930..432b40b 100755
--- a/nandgame/assembler/py_nand_ass/parser.py
+++ b/nandgame/assembler/py_nand_ass/parser.py
@@ -174,11 +174,20 @@ def p_error(p: LexToken | None) -> LexToken|None:
return
while True:
- tok: LexToken = parser.token()
+ tok: LexToken = __parser.token()
if not tok or tok.type == 'NL':
break
- parser.errok()
+ __parser.errok()
return tok
-parser: yacc.LRParser = yacc.yacc()
+__parser: yacc.LRParser = yacc.yacc()
+
+def parse_text(text: str) -> list[pt.AsmLine]:
+ return __parser.parse(text, tracking=True)
+
+def parse_file(filename: str) -> list[pt.AsmLine]:
+ with open(filename, "rb") as infile:
+ file_content_bin = infile.read()
+ file_content_txt = file_content_bin.decode("ascii")
+ return parse_text(file_content_txt)