コード例 #1
0
ファイル: parser.py プロジェクト: Malory9/schepy
 def read_grammar(self, filename):
     """
     语法读入
     """
     grammar = self.grammar
     grammar.clear()
     self.terminators, self.non_terminators = [], []
     g_in, g_out = defaultdict(int), defaultdict(int)
     for l_hand, r_hand in bnf_reader(filename):
         symbol = l_hand[1:-1]
         __exp__ = [r[1:-1] for r in r_hand.split()]
         for exp in __exp__:
             g_in[exp] += 1
         g_out[symbol] += 1
         grammar[symbol].append(__exp__)
     for k, v in g_in.iteritems():
         if not g_out[k]:
             self.terminators.append(k)
     self.non_terminators.extend([k for k, v in g_out.iteritems() if v])
コード例 #2
0
 def read_lex(self, filename):
     self.lexs = bnf_reader(filename)
コード例 #3
0
ファイル: lex.py プロジェクト: ChacesXia/schepy
 def read_lex(self, filename):
     self.lexs = bnf_reader(filename)