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])
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
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')
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
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')