package org.develnext.jphp.core.syntax.generators;
import org.develnext.jphp.core.common.Separator;
import org.develnext.jphp.core.syntax.SyntaxAnalyzer;
import org.develnext.jphp.core.syntax.generators.manually.SimpleExprGenerator;
import org.develnext.jphp.core.tokenizer.token.Token;
import org.develnext.jphp.core.tokenizer.token.stmt.ExprStmtToken;
import org.develnext.jphp.core.tokenizer.token.stmt.ThrowStmtToken;
import java.util.ListIterator;
public class ThrowGenerator extends Generator<ThrowStmtToken> {
public ThrowGenerator(SyntaxAnalyzer analyzer) {
super(analyzer);
}
@Override
public ThrowStmtToken getToken(Token current, ListIterator<Token> iterator) {
if (current instanceof ThrowStmtToken){
ThrowStmtToken result = (ThrowStmtToken)current;
ExprStmtToken exception = analyzer.generator(SimpleExprGenerator.class).getToken(
nextToken(iterator), iterator, Separator.SEMICOLON, null
);
if (exception == null)
unexpectedToken(iterator.previous());
result.setException(exception);
return result;
}
return null;
}
}