diff options
| -rwxr-xr-x | nandgame/assembler/py_nand_ass/parser.py | 15 |
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) |
