summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2026-01-15 16:33:09 +0100
committeruvok2026-01-15 16:33:09 +0100
commit844dc43709d5411ebd4c786f83e42e1e7bb61f76 (patch)
tree45ff4502de831e954762ce24c9cfa103348461d9
parent1561eff8780dc15dc5ea46d7225cc49a46f709ca (diff)
Encapsulate parser, only access functions
-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)