diff options
| author | uvok | 2026-01-15 16:33:09 +0100 |
|---|---|---|
| committer | uvok | 2026-01-15 16:33:09 +0100 |
| commit | 844dc43709d5411ebd4c786f83e42e1e7bb61f76 (patch) | |
| tree | 45ff4502de831e954762ce24c9cfa103348461d9 /nandgame/assembler/py_nand_ass/parser.py | |
| parent | 1561eff8780dc15dc5ea46d7225cc49a46f709ca (diff) | |
Encapsulate parser, only access functions
Diffstat (limited to 'nandgame/assembler/py_nand_ass/parser.py')
| -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) |
