コード例 #1
0
ファイル: myparser.py プロジェクト: EvelynHf/basil
 def __init__ (self):
     global my_grammar
     self.handlers = trampoline.pgen_grammar_to_handlers(my_grammar, {})
     self.handlers['start'] = self.parse_start
     self.handlers['qsuite'] = self.parse_qsuite
     qsuite_index = [dfa[0] for dfa in my_grammar[0]
                     if dfa[1] == 'qsuite'][0]
     self.handlers[qsuite_index] = self.parse_qsuite
コード例 #2
0
ファイル: myparser2.py プロジェクト: EvelynHf/basil
 def __init__(self, start_symbol=None):
     self.handlers = trampoline.pgen_grammar_to_handlers(
         self.my_grammar, {})
     nonterminal_override_names = 'mysuite', 'myexpr0', 'myexpr1'
     nonterminal_overrides = ((dfa[1], dfa[0])
                              for dfa in self.my_grammar[0]
                              if dfa[1] in nonterminal_override_names)
     for nonterminal_name, nonterminal_index in nonterminal_overrides:
         handler = getattr(self, 'parse_%s' % nonterminal_name)
         self.handlers[nonterminal_name] = handler
         self.handlers[nonterminal_index] = handler
     self.start_symbol = (start_symbol if start_symbol is not None
                          else 'file_input')
     self.handlers['start'] = self.parse_start
コード例 #3
0
ファイル: test_trampoline.py プロジェクト: EvelynHf/basil
 def setUp (self):
     # Parse the MyFront grammar, create a set of automata for it (like
     # pgen does), and then convert the automata to generators for the
     # treepoline.
     grammar_st = PgenParser.parseFile(basil.lang.python.__path__[0] +
                                       "/python26/Grammar")
     grammar_obj = PyPgen.buildParser(grammar_st)
     grammar_obj.setStart(grammar_obj.stringToSymbolMap()['file_input'])
     self.parser1 = grammar_obj
     gram_tup0 = grammar_obj.toTuple()
     gram_tup1 = DFAParser.addAccelerators(gram_tup0)
     handlers = trampoline.pgen_grammar_to_handlers(gram_tup1, {})
     # Override the start special nonterminal to just do what it is
     # supposed to:
     def parse_start (instream, outtree):
         yield 'file_input'
     handlers['start'] = parse_start
     self.handlers = handlers