# -*- coding: utf-8 -*- # vim: set ts=4: # # Name: FitxUtil # # Copyright: Copyright (c) 2008 Loya Liu # # $Id$ # # Author: loya.liu@gmail.com (Loya Liu) # __author__ = "loya.liu@gmail.com (Loya Liu)" import codecs from FunInputClient import Word class SymbolTable: def __init__(self,path): f=codecs.open(path,'r','utf-8') lines=f.readlines() f.close() self._syms={} for x in lines: xs=x.strip() if len(xs)==0 or xs[0]=='#':continue xsl=xs.split('=') if len(xsl)>1: key=xsl[0].strip() value=xsl[1] vl=value.split(',') vl=[self._parse_word(v.strip()) for v in vl] if key in self._syms: self._syms[key]=self._syms[key]+vl else: self._syms[key]=vl def _parse_word(self,fd): if not fd or len(fd)<2:return Word(fd,fd,0,0,0,0) #if fd[0:2]=='X_':return fd if fd[0:2]=='0x':return Word(unichr(int(fd,16)),fd,0,0,0,0) return Word(fd,fd,0,0,0,0) def get_sym_section(self): return self._syms.keys() def get_symbol_list(self,sect): if sect in self._syms:return self._syms[sect] else:return None def main(): s=SymbolTable('special_table') for x in s.get_sym_section(): wl=s.get_symbol_list(x) ts=x for w in wl:ts=ts+","+w._string print ts if __name__ == "__main__": main()