protected function replaceStringVars($string, $first, $curBlock='')
	{
		$pos = 0;
		if ($this->debug) echo 'STRING VAR REPLACEMENT : '.$string.'<br>';
		// replace vars
		while (($pos = strpos($string, '$', $pos)) !== false) {
			$prev = substr($string, $pos-1, 1);
			if ($prev === '\\') {
				$pos++;
				continue;
			}

			$var = $this->parse($string, $pos, null, false, ($curBlock === 'modifier' ? 'modifier' : ($prev === '`' ? 'delimited_string':'string')));
			$len = $var[0];
			$var = $this->parse(str_replace('\\'.$first, $first, $string), $pos, null, false, ($curBlock === 'modifier' ? 'modifier' : ($prev === '`' ? 'delimited_string':'string')));

			if ($prev === '`' && substr($string, $pos+$len, 1) === '`') {
				$string = substr_replace($string, $first.'.'.$var[1].'.'.$first, $pos-1, $len+2);
			} else {
				$string = substr_replace($string, $first.'.'.$var[1].'.'.$first, $pos, $len);
			}
			$pos += strlen($var[1]) + 2;
			if ($this->debug) echo 'STRING VAR REPLACEMENT DONE : '.$string.'<br>';
		}

		// handle modifiers
		// TODO Obsolete?
		$string = preg_replace_callback('#("|\')\.(.+?)\.\1((?:\|(?:@?[a-z0-9_]+(?:(?::("|\').+?\4|:[^`]*))*))+)#i', array($this, 'replaceModifiers'), $string);

		// replace escaped dollar operators by unescaped ones if required
		if ($first==="'") {
			$string = str_replace('\\$', '$', $string);
		}

		return $string;
	}