sh-dis/test_parser.py
Zack Buhman b6c629baad initial SH4 emulator implementation in C
This currently only implements the SH2 instructions.
2024-04-21 20:54:32 +08:00

40 lines
830 B
Python

from lexer import Lexer
from parser import Parser
from generator import generate
sources = [
"op1 ← FloatValue64(DR2n);",
"UTLB[MMUCR.URC].ASID ← PTEH.ASID;",
"IF (n_field = m_field)"
"{"
"m_address ← m_address + 4;"
"n_address ← n_address + 4;"
"}",
"""
IF (op1 ≥ 0)
op2 ← op2 << shift_amount;
ELSE IF (shift_amount ≠ 0)
op2 ← op2 >> (32 - shift_amount);
"""
]
def all_tokens(lexer):
while True:
try:
token = lexer.next_token()
except IndexError:
break
yield token
for source in sources:
lexer = Lexer(source)
tokens = list(all_tokens(lexer))
parser = Parser(tokens)
from pprint import pprint
root = parser.statement()
s = "".join(generate(root))
print(s, end='')
print()