ii-vision/transcoder/symbol_table.py

39 lines
907 B
Python
Raw Normal View History

2019-03-21 16:42:47 +00:00
"""Parses the cc65 .dbg output to extract symbol addresses."""
from typing import Dict, TextIO
class SymbolTable:
"""Parse cc65 debug file to extract symbol table."""
def __init__(self, debugfile: str = None):
self.debugfile = debugfile # type: str
def parse(self, iostream: TextIO = None) -> Dict:
"""
:param iostream:
:return:
"""
syms = {}
if not iostream:
iostream = open(self.debugfile, "r")
with iostream as f:
for line in f.read().split("\n"):
if not line.startswith("sym"):
continue
sym = {}
data = line.split()[1].split(",")
for kv in data:
k, v = kv.split("=")
sym[k] = v
name = sym["name"]
syms[name] = sym
return syms