コード例 #1
0
ファイル: grammar.py プロジェクト: jepler/yapps
 def ClauseD(self, rule,tokens, _parent=None):
     _context = self.Context(_parent, self._scanner, 'ClauseD', [rule,tokens])
     _token = self._peek('STR', 'ID', 'LP', 'LB', 'STMT', context=_context)
     if _token == 'STR':
         STR = self._scan('STR', context=_context)
         t = (STR, eval(STR,{},{}))
         if t not in tokens: tokens.insert( 0, t )
         return parsetree.Terminal(rule, STR)
     elif _token == 'ID':
         ID = self._scan('ID', context=_context)
         OptParam = self.OptParam(_context)
         return resolve_name(rule,tokens, ID, OptParam)
     elif _token == 'LP':
         LP = self._scan('LP', context=_context)
         ClauseA = self.ClauseA(rule,tokens, _context)
         RP = self._scan('RP', context=_context)
         return ClauseA
     elif _token == 'LB':
         LB = self._scan('LB', context=_context)
         ClauseA = self.ClauseA(rule,tokens, _context)
         RB = self._scan('RB', context=_context)
         return parsetree.Option(rule, ClauseA)
     else: # == 'STMT'
         STMT = self._scan('STMT', context=_context)
         return parsetree.Eval(rule, STMT[2:-2])
コード例 #2
0
ファイル: grammar.py プロジェクト: pjogrady/yapps
 def ClauseC(self, rule, tokens, _parent=None):
     _context = self.Context(_parent, self._scanner, 'ClauseC',
                             [rule, tokens])
     ClauseD = self.ClauseD(rule, tokens, _context)
     _token = self._peek('PLUS',
                         'STAR',
                         'QUEST',
                         'STR',
                         'ID',
                         'LP',
                         'LB',
                         'STMT',
                         'OR',
                         'RP',
                         'RB',
                         '"rule"',
                         'EOF',
                         context=_context)
     if _token == 'PLUS':
         PLUS = self._scan('PLUS', context=_context)
         return parsetree.Plus(rule, ClauseD)
     elif _token == 'STAR':
         STAR = self._scan('STAR', context=_context)
         return parsetree.Star(rule, ClauseD)
     elif _token == 'QUEST':
         QUEST = self._scan('QUEST', context=_context)
         return parsetree.Option(rule, ClauseD)
     else:
         return ClauseD
コード例 #3
0
ファイル: yapps_grammar.py プロジェクト: c0ns0le/zenoss-4
 def ClauseD(self, rule, tokens, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'ClauseD',
                             [rule, tokens])
     _token = self._peek()
     if _token == 'STR':
         STR = self._scan('STR')
         t = (STR, eval(STR, {}, {}))
         if t not in tokens: tokens.insert(0, t)
         return parsetree.Terminal(rule, STR)
     elif _token == 'ID':
         ID = self._scan('ID')
         OptParam = self.OptParam(_context)
         return resolve_name(rule, tokens, ID, OptParam)
     elif _token == 'LP':
         LP = self._scan('LP')
         ClauseA = self.ClauseA(rule, tokens, _context)
         RP = self._scan('RP')
         return ClauseA
     elif _token == 'LB':
         LB = self._scan('LB')
         ClauseA = self.ClauseA(rule, tokens, _context)
         RB = self._scan('RB')
         return parsetree.Option(rule, ClauseA)
     elif _token == 'STMT':
         STMT = self._scan('STMT')
         return parsetree.Eval(rule, STMT[2:-2])
     else:
         raise yappsrt.SyntaxError(_token[0], 'Could not match ClauseD')
コード例 #4
0
 def ClauseC(self, rule, tokens, _parent=None):
     _context = self.Context(_parent, self._scanner, 'ClauseC', [rule, tokens])
     ClauseD = self.ClauseD(rule, tokens, _context)
     _token = self._peek(self._RB_STAR_LP_rule_RP_STMT_OR_QU_, context=_context)
     if _token == self._PLUS:
         PLUS = self._scan('PLUS', context=_context)
         return parsetree.Plus(rule, ClauseD)
     elif _token == self._STAR:
         STAR = self._scan('STAR', context=_context)
         return parsetree.Star(rule, ClauseD)
     elif _token == self._QUEST:
         QUEST = self._scan('QUEST', context=_context)
         return parsetree.Option(rule, ClauseD)
     else:  # in self._LB_LP_rule_RB_STMT_ID_STR_RP__
         return ClauseD
コード例 #5
0
ファイル: yapps_grammar.py プロジェクト: c0ns0le/zenoss-4
 def ClauseC(self, rule, tokens, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'ClauseC',
                             [rule, tokens])
     ClauseD = self.ClauseD(rule, tokens, _context)
     _token = self._peek()
     if _token == 'PLUS':
         PLUS = self._scan('PLUS')
         return parsetree.Plus(rule, ClauseD)
     elif _token == 'STAR':
         STAR = self._scan('STAR')
         return parsetree.Star(rule, ClauseD)
     elif _token == 'QUEST':
         QUEST = self._scan('QUEST')
         return parsetree.Option(rule, ClauseD)
     elif _token not in [
             '"ignore"', '"token"', '"option"', '":"', '"parser"', 'ATTR',
             'COLON'
     ]:
         return ClauseD
     else:
         raise yappsrt.SyntaxError(_token[0], 'Could not match ClauseC')