Exakat\Analyzer\Structures\UnknownPregOption::analyze PHP Method

analyze() public method

public analyze ( )
    public function analyze()
    {
        // Options list : eimsuxADJSUX (we use all letters, as unknown options are ignored or yield an error)
        $options = '[a-zA-Z]*[^eimsuxADJSUX][a-zA-Z]*';
        // function list
        $functions = array('\\preg_match', '\\preg_match_all', '\\preg_replace', '\\preg_replace_callback', '\\preg_filter', '\\preg_split', '\\preg_quote', '\\preg_grep');
        $prepareDelimiters = ' sideEffect{ 
         if (delimiter == "{") { delimiter = "\\\\{"; delimiterFinal = "\\\\}"; } 
    else 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").substring(0, 1); }')->raw($prepareDelimiters)->regexIs('noDelimiter', '^(" + delimiter + ").*(?<!\\\\\\\\)(" + delimiterFinal + ")(' . $options . ')\\$')->back('first');
        $this->prepareQuery();
        // With an interpolated string "a $x b"
        $this->atomFunctionIs($functions)->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->tokenIs('T_QUOTE')->hasOut('CONCAT')->outWithRank('CONCAT', 0)->atomIs('String')->raw('sideEffect{ delimiter = it.get().value("noDelimiter").substring(0, 1); }')->inIs('CONCAT')->raw($prepareDelimiters)->regexIs('fullcode', '^.(" + delimiter + ").*(?<!\\\\\\\\)(" + delimiterFinal + ")(' . $options . ').\\$')->back('first');
        $this->prepareQuery();
        // with a concatenation
        $this->atomFunctionIs($functions)->outIs('ARGUMENTS')->outWithRank('ARGUMENT', 0)->atomIs('Concatenation')->outWithRank('CONCAT', 0)->atomIs('String')->raw('sideEffect{ delimiter = it.get().value("noDelimiter").substring(0, 1); }')->inIs('CONCAT')->raw($prepareDelimiters)->regexIs('fullcode', '^.(" + delimiter + ").*(?<!\\\\\\\\)(" + delimiterFinal + ")(' . $options . ').\\$')->back('first');
        $this->prepareQuery();
    }
UnknownPregOption