protected function replaceDynamicExpression($matches) {
		//run program
		$program = new DynamicSQLProgram($matches[2]);
		$value = $program->executeWith($this->buildEnvironment($this->config), $this->args);
	
		//cast return type to the specified type (if any)
		if (!empty($matches[1]))
			return $this->castParameter($value, $matches[1]);
	
		//return unsafe string
		return $this->toString($value);
	}