public function analyze()
{
$functions = array('\\preg_replace', '\\mb_eregi');
// delimiters
$delimiters = '=~/|`%#\\$\\*!,@\\\\{\\\\(\\\\[';
$makeDelimiters = ' sideEffect{
if (delimiter == "{") { delimiter = "\\\\{"; delimiterFinal = "\\\\}"; }
else if (delimiter == "(") { delimiter = "\\\\("; delimiterFinal = "\\\\)"; }
else if (delimiter == "[") { delimiter = "\\\\["; delimiterFinal = "\\\\]"; }
else if (delimiter == "*") { delimiter = "\\\\*"; delimiterFinal = "\\\\*"; }
else { delimiterFinal = delimiter; }
}';
// preg_match with a string
$this->atomFunctionIs($functions)->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->tokenIs('T_CONSTANT_ENCAPSED_STRING')->raw(' sideEffect{ delimiter = it.get().value("noDelimiter")[0]; }')->raw($makeDelimiters)->regexIs('noDelimiter', '^(" + delimiter + ").*(" + delimiterFinal + ")(.*e.*)\\$')->back('first');
$this->prepareQuery();
// With an interpolated string "a $x b"
$this->atomFunctionIs($functions)->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('String')->outWithRank('CONCAT', 0)->raw('sideEffect{delimiter = it.get().value("noDelimiter")[0]; }')->inIs('CONCAT')->raw($makeDelimiters)->regexIs('fullcode', '^.(" + delimiter + ").*(" + delimiterFinal + ")(.*e.*).\\$')->back('first');
$this->prepareQuery();
// with a concatenation
$this->atomFunctionIs($functions)->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('Concatenation')->outWithRank('CONCAT', 0)->raw('sideEffect{delimiter = it.get().value("noDelimiter")[0]; }')->inIs('CONCAT')->raw($makeDelimiters)->regexIs('fullcode', '^.(" + delimiter + ").*(" + delimiterFinal + ")(.*e.*).\\$')->back('first');
$this->prepareQuery();
// Actual letters used for Options in PHP imsxeuADSUXJ (others may yield an error) case is important
}