package org.develnext.jphp.core.syntax.generators;
import org.develnext.jphp.core.syntax.SyntaxAnalyzer;
import org.develnext.jphp.core.tokenizer.TokenMeta;
import org.develnext.jphp.core.tokenizer.token.Token;
import org.develnext.jphp.core.tokenizer.token.expr.value.FulledNameToken;
import org.develnext.jphp.core.tokenizer.token.expr.value.NameToken;
import java.util.Arrays;
import java.util.ListIterator;
public class NameGenerator extends Generator<FulledNameToken> {
public NameGenerator(SyntaxAnalyzer analyzer) {
super(analyzer);
}
protected void checkFullName(FulledNameToken name){
for(NameToken one : name.getNames())
if (one.getName().isEmpty())
unexpectedToken(one);
}
@Override
public FulledNameToken getToken(Token current, ListIterator<Token> iterator) {
if (current instanceof NameToken){
if (current instanceof FulledNameToken){
checkFullName((FulledNameToken)current);
return (FulledNameToken)current;
} else
return new FulledNameToken(TokenMeta.of(current), Arrays.asList((NameToken)current));
}
return null;
}
@Override
public boolean isAutomatic() {
return false;
}
}