def AttributeValueTemplate(self): LITERALTEXT = self._scan('LITERALTEXT') args = [X.LiteralExpr(LITERALTEXT)] while self._peek("r'\\{'", 'LITERALTEXT', 'END') != 'END': if self._peek("r'\\{'", 'LITERALTEXT') == "r'\\{'": self._scan("r'\\{'") Expr = self.Expr() args.append(Expr) self._scan("r'\\}'") LITERALTEXT = self._scan('LITERALTEXT') args.append(X.LiteralExpr(LITERALTEXT)) END = self._scan('END') return X.Function('concat', args)
def PrimaryExpr(self): _token_ = self._peek("r'\\('", "r'\\$'", "r'\\.'", 'FUNCNAME', 'NUMBER', 'DQUOTE', 'SQUOTE') if _token_ not in ["r'\\('", "r'\\$'", "r'\\.'", 'FUNCNAME']: Literal = self.Literal() return X.LiteralExpr(Literal) elif _token_ == "r'\\$'": VariableReference = self.VariableReference() return VariableReference elif _token_ == "r'\\('": self._scan("r'\\('") Expr = self.Expr() self._scan("r'\\)'") return Expr elif _token_ == "r'\\.'": ContextItemExpr = self.ContextItemExpr() return ContextItemExpr else:# == 'FUNCNAME' FunctionCall = self.FunctionCall() return FunctionCall