public function analyze()
{
$this->atomIs('Ifthen')->outIs('CONDITION')->atomIs('Parenthesis');
$this->prepareQuery();
// while
$this->atomIs('While')->outIs('CONDITION')->atomIs('Parenthesis');
$this->prepareQuery();
// dowhile
$this->atomIs('Dowhile')->outIs('CONDITION')->atomIs('Parenthesis');
$this->prepareQuery();
// switch
$this->atomIs('Switch')->outIs('NAME')->atomIs('Parenthesis');
$this->prepareQuery();
// $y = (1);
$this->atomIs('Assignation')->outIs('RIGHT')->atomIs('Parenthesis');
$this->prepareQuery();
// ($y) == (1);
$this->atomIs('Comparison')->outIs(array('RIGHT', 'LEFT'))->atomIs('Parenthesis')->outIs('CODE')->atomIsNot('Assignation')->inIs('CODE');
$this->prepareQuery();
// ($a = $b) == $c : NOT A CASE
$this->atomIs('Comparison')->outIs('RIGHT')->atomIs('Parenthesis')->outIs('CODE')->atomIs('Assignation')->inIs('CODE');
$this->prepareQuery();
// f(($x))
$this->atomIs('Functioncall')->outIs('ARGUMENTS')->outIs('ARGUMENT')->atomIs('Parenthesis');
$this->prepareQuery();
// (expression);
$this->atomIs('Parenthesis')->hasIn('ELEMENT');
$this->prepareQuery();
// (literal);
$this->atomIs('Parenthesis')->outIs('CODE')->atomIs(array('Integer', 'Real', 'Boolean', 'Identifier', 'Variable', 'Magicconstant', 'Null', 'Functioncall', 'Property', 'Methodcall', 'Staticmethodcall', 'Staticconstant', 'Staticproperty'));
$this->prepareQuery();
//$d = ((($a)+$b)+$c);
$this->atomIs('Addition')->inIs('CODE')->atomIs('Parenthesis')->inIs(array('LEFT', 'RIGHT'))->atomIs('Addition');
$this->prepareQuery();
//$d = ((($a)*$b)*$c);
$this->atomIs('Multiplication')->inIs('CODE')->atomIs('Parenthesis')->inIs(array('LEFT', 'RIGHT'))->atomIs('Multiplication');
$this->prepareQuery();
}