use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class Tokenizer method fetchAll.
public List<Token> fetchAll() {
List<Token> result = new ArrayList<Token>();
Token token;
while ((token = nextToken()) != null) result.add(token);
return result;
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class ClassGenerator method processImplements.
protected void processImplements(ClassStmtToken result, ListIterator<Token> iterator) {
checkUnexpectedEnd(iterator);
Token token = iterator.next();
if (token instanceof ImplementsStmtToken) {
if (result.isTrait())
unexpectedToken(token);
if (result.isInterface())
unexpectedToken(token, "extends");
_processImplements(token, result, iterator);
/*
ImplementsStmtToken implement = new ImplementsStmtToken(token.getMeta());
Token prev = null;
List<FulledNameToken> names = new ArrayList<FulledNameToken>();
do {
token = nextToken(iterator);
if (token instanceof NameToken){
names.add(analyzer.getRealName((NameToken)token));
} else if (token instanceof CommaToken){
if (!(prev instanceof NameToken))
unexpectedToken(token);
} else if (isOpenedBrace(token, BraceExprToken.Kind.BLOCK)){
iterator.previous();
break;
} else
unexpectedToken(token);
prev = token;
} while (true);
implement.setNames(names);
result.setImplement(implement);*/
} else
iterator.previous();
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class ClassGenerator method processDefine.
@SuppressWarnings("unchecked")
protected ClassStmtToken processDefine(Token current, ListIterator<Token> iterator) {
ClassStmtToken result = null;
if (isTokenClass(current, FinalStmtToken.class, AbstractStmtToken.class)) {
Token next = nextToken(iterator);
if (next instanceof ClassStmtToken) {
result = (ClassStmtToken) next;
result.setInterface(false);
result.setAbstract(current instanceof AbstractStmtToken);
result.setFinal(current instanceof FinalStmtToken);
// return result;
} else if (next instanceof InterfaceStmtToken || next instanceof TraitStmtToken) {
unexpectedToken(current);
} else if (next instanceof AbstractStmtToken || next instanceof FinalStmtToken) {
unexpectedToken(next);
} else {
iterator.previous();
}
}
if (current instanceof ClassStmtToken)
result = (ClassStmtToken) current;
else if (current instanceof InterfaceStmtToken) {
result = new ClassStmtToken(current.getMeta());
result.setInterface(true);
} else if (current instanceof TraitStmtToken) {
result = new ClassStmtToken(current.getMeta());
result.setClassType(ClassEntity.Type.TRAIT);
}
if (result != null) {
iterator.previous();
if (result.isFinal() || result.isAbstract())
iterator.previous();
if (iterator.hasPrevious()) {
Token tk = iterator.previous();
if (tk instanceof CommentToken) {
result.setDocComment((CommentToken) tk);
}
iterator.next();
}
if (result.isFinal() || result.isAbstract())
iterator.next();
iterator.next();
}
return result;
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class ClassGenerator method processArguments.
private void processArguments(ClassStmtToken result, ListIterator<Token> iterator) {
Token next = nextToken(iterator);
if (isOpenedBrace(next, SIMPLE)) {
ExprStmtToken param;
List<ExprStmtToken> parameters = new ArrayList<ExprStmtToken>();
do {
param = analyzer.generator(SimpleExprGenerator.class).getToken(nextToken(iterator), iterator, true, SIMPLE);
if (param != null)
parameters.add(param);
} while (param != null);
nextToken(iterator);
result.setParameters(parameters);
} else {
result.setParameters(new ArrayList<ExprStmtToken>());
iterator.previous();
}
}
use of org.develnext.jphp.core.tokenizer.token.Token in project jphp by jphp-compiler.
the class SimpleExprGenerator method processEmpty.
protected EmptyExprToken processEmpty(Token current, ListIterator<Token> iterator) {
ExprStmtToken value = analyzer.generator(ExprGenerator.class).getInBraces(SIMPLE, iterator);
if (value == null)
unexpectedToken(iterator.previous());
assert value != null;
Token last = value.getLast();
if (last instanceof DynamicAccessExprToken) {
last = new DynamicAccessEmptyExprToken((DynamicAccessExprToken) last);
value.getTokens().set(value.getTokens().size() - 1, last);
} else if (last instanceof VariableExprToken || last instanceof GetVarExprToken) {
// nop
} else if (last instanceof StaticAccessExprToken && ((StaticAccessExprToken) last).isGetStaticField()) {
last = new StaticAccessIssetExprToken((StaticAccessExprToken) last);
value.getTokens().set(value.getTokens().size() - 1, last);
} else if (last instanceof ArrayGetExprToken) {
ArrayGetEmptyExprToken el = new ArrayGetEmptyExprToken(last.getMeta());
el.setParameters(((ArrayGetExprToken) last).getParameters());
value.getTokens().set(value.getTokens().size() - 1, el);
} else {
// is only in < php 5.5 as unexcpected.
// unexpectedToken(last);
}
EmptyExprToken result = (EmptyExprToken) current;
value.updateAsmExpr(analyzer.getEnvironment(), analyzer.getContext());
result.setValue(value);
return result;
}
Aggregations