def RelativePathExpr(self): StepExpr = self.StepExpr() steps = [StepExpr] while self._peek("r'\\/'", "r'\\/\\/'", "'\\|'", 'MUL_COMP', 'ADD_COMP', 'REL_COMP', 'EQ_COMP', "r'and'", "r'or'", 'END', "r'\\]'", "r'\\)'", "r'\\,'") in ["r'\\/'", "r'\\/\\/'"]: _token_ = self._peek("r'\\/'", "r'\\/\\/'") if _token_ == "r'\\/'": self._scan("r'\\/'") else:# == "r'\\/\\/'" self._scan("r'\\/\\/'") steps.append(X.AxisStep('descendant-or-self')) StepExpr = self.StepExpr() steps.append(StepExpr) return X.PathExpr(steps)
def RelativePathPattern(self): StepPattern = self.StepPattern() steps = [StepPattern] while self._peek("r'\\/'", "r'\\/\\/'", "'\\|'", 'END') in ["r'\\/'", "r'\\/\\/'"]: _token_ = self._peek("r'\\/'", "r'\\/\\/'") if _token_ == "r'\\/'": self._scan("r'\\/'") else: # == "r'\\/\\/'" self._scan("r'\\/\\/'") steps.append(X.AxisStep('descendant-or-self')) StepPattern = self.StepPattern() steps.append(StepPattern) return X.PathExpr(steps)