protected function buildGetNextTokenMethod(Syntax $syntax) { $method = new MethodGenerator('getNextToken', ['data'], MethodGenerator::FLAG_PROTECTED); $method->setBody($methodBody = new Container()); foreach ($syntax->getTerminals() as $terminal) { $statement = $terminal->getGenerator(new VariableStatement('data')); $methodBody->addLine($statement); } $methodBody->addLine('throw new \\Exception("Syntax error. Cannot parse \'" . substr($data, 0, 100) . "\'");'); $this->class->addMethodFromGenerator($method); }