def get_node_name(self, nid, typ="parse", error_fn=lambda item: None): ''' Node name from node id. ''' name = None if nid is FIN: return "FIN" elif is_keyword(nid): if typ == "parse": return "kwd:" + flip(self.parse_nfa.keywords).get( nid, str(nid)) else: return "kwd:" + flip(self.lex_nfa.keywords).get(nid, str(nid)) elif is_token(nid): if typ == "parse": name = self.parse_token.tok_name.get(nid) else: name = self.lex_token.tok_name.get(nid) elif is_symbol(nid): if typ == "parse": name = self.parse_symbol.sym_name.get(nid) else: name = self.lex_symbol.sym_name.get(nid) if name: return name else: error_fn(nid) return "?(nid = %s)" % nid
def get_node_name(self, nid, typ = "parse", error_fn = lambda item: None): ''' Node name from node id. ''' name = None if nid is FIN: return "FIN" elif is_keyword(nid): if typ == "parse": return "kwd:"+flip(self.parse_nfa.keywords).get(nid, str(nid)) else: return "kwd:"+flip(self.lex_nfa.keywords).get(nid, str(nid)) elif is_token(nid): if typ == "parse": name = self.parse_token.tok_name.get(nid) else: name = self.lex_token.tok_name.get(nid) elif is_symbol(nid): if typ == "parse": name = self.parse_symbol.sym_name.get(nid) else: name = self.lex_symbol.sym_name.get(nid) if name: return name else: error_fn(nid) return "?(nid = %s)"%nid
def __init__(self, langlet, constants): self.langlet = langlet self.constants = constants self.keywords = flip(langlet.keywords) self.token_map = flip(langlet.parse_token.token_map) self.names = langlet.parse_symbol.sym_name self.names.update(langlet.parse_token.tok_name) super(NFA2GrammarLangletObjTranslator, self).__init__(langlet)
def _load_parse_tables(self): if self.package is None: raise RuntimeError("Cannot load parse-tables. Langlet package could not be found") # load token/symbols if not self.parse_nfa: # load nfas nfas = loader.load_parse_tables(self.package) self.lex_nfa = nfas["lex_nfa"] self.parse_nfa = nfas["parse_nfa"] self.keywords = flip(self.parse_nfa.keywords)
def _load_parse_tables(self): if self.package is None: raise RuntimeError( "Cannot load parse-tables. Langlet package could not be found") # load token/symbols if not self.parse_nfa: # load nfas nfas = loader.load_parse_tables(self.package) self.lex_nfa = nfas["lex_nfa"] self.parse_nfa = nfas["parse_nfa"] self.keywords = flip(self.parse_nfa.keywords)