Search in sources :

Example 66 with Token

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;
}
Also used : ArrayList(java.util.ArrayList) ValueExprToken(org.develnext.jphp.core.tokenizer.token.expr.ValueExprToken) StringStartDocToken(org.develnext.jphp.core.tokenizer.token.StringStartDocToken) CommentToken(org.develnext.jphp.core.tokenizer.token.CommentToken) Token(org.develnext.jphp.core.tokenizer.token.Token) EchoRawToken(org.develnext.jphp.core.tokenizer.token.stmt.EchoRawToken) OpenEchoTagToken(org.develnext.jphp.core.tokenizer.token.OpenEchoTagToken) BreakToken(org.develnext.jphp.core.tokenizer.token.BreakToken) StringExprToken(org.develnext.jphp.core.tokenizer.token.expr.value.StringExprToken)

Example 67 with Token

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();
}
Also used : ValueExprToken(org.develnext.jphp.core.tokenizer.token.expr.ValueExprToken) Token(org.develnext.jphp.core.tokenizer.token.Token) ValueIfElseToken(org.develnext.jphp.core.tokenizer.token.expr.operator.ValueIfElseToken) AssignExprToken(org.develnext.jphp.core.tokenizer.token.expr.operator.AssignExprToken) CommentToken(org.develnext.jphp.core.tokenizer.token.CommentToken) BraceExprToken(org.develnext.jphp.core.tokenizer.token.expr.BraceExprToken) CommaToken(org.develnext.jphp.core.tokenizer.token.expr.CommaToken) SemicolonToken(org.develnext.jphp.core.tokenizer.token.SemicolonToken)

Example 68 with Token

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;
}
Also used : CommentToken(org.develnext.jphp.core.tokenizer.token.CommentToken) ValueExprToken(org.develnext.jphp.core.tokenizer.token.expr.ValueExprToken) Token(org.develnext.jphp.core.tokenizer.token.Token) ValueIfElseToken(org.develnext.jphp.core.tokenizer.token.expr.operator.ValueIfElseToken) AssignExprToken(org.develnext.jphp.core.tokenizer.token.expr.operator.AssignExprToken) CommentToken(org.develnext.jphp.core.tokenizer.token.CommentToken) BraceExprToken(org.develnext.jphp.core.tokenizer.token.expr.BraceExprToken) CommaToken(org.develnext.jphp.core.tokenizer.token.expr.CommaToken) SemicolonToken(org.develnext.jphp.core.tokenizer.token.SemicolonToken)

Example 69 with Token

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();
    }
}
Also used : ValueExprToken(org.develnext.jphp.core.tokenizer.token.expr.ValueExprToken) Token(org.develnext.jphp.core.tokenizer.token.Token) ValueIfElseToken(org.develnext.jphp.core.tokenizer.token.expr.operator.ValueIfElseToken) AssignExprToken(org.develnext.jphp.core.tokenizer.token.expr.operator.AssignExprToken) CommentToken(org.develnext.jphp.core.tokenizer.token.CommentToken) BraceExprToken(org.develnext.jphp.core.tokenizer.token.expr.BraceExprToken) CommaToken(org.develnext.jphp.core.tokenizer.token.expr.CommaToken) SemicolonToken(org.develnext.jphp.core.tokenizer.token.SemicolonToken)

Example 70 with Token

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;
}
Also used : MacroToken(org.develnext.jphp.core.tokenizer.token.expr.value.macro.MacroToken) SemicolonToken(org.develnext.jphp.core.tokenizer.token.SemicolonToken) Token(org.develnext.jphp.core.tokenizer.token.Token) CastExprToken(org.develnext.jphp.core.tokenizer.token.expr.operator.cast.CastExprToken) BreakToken(org.develnext.jphp.core.tokenizer.token.BreakToken) ColonToken(org.develnext.jphp.core.tokenizer.token.ColonToken) UnsetCastExprToken(org.develnext.jphp.core.tokenizer.token.expr.operator.cast.UnsetCastExprToken)

Aggregations

Token (org.develnext.jphp.core.tokenizer.token.Token)93 SemicolonToken (org.develnext.jphp.core.tokenizer.token.SemicolonToken)47 BraceExprToken (org.develnext.jphp.core.tokenizer.token.expr.BraceExprToken)39 CommentToken (org.develnext.jphp.core.tokenizer.token.CommentToken)37 ValueExprToken (org.develnext.jphp.core.tokenizer.token.expr.ValueExprToken)27 CommaToken (org.develnext.jphp.core.tokenizer.token.expr.CommaToken)26 BreakToken (org.develnext.jphp.core.tokenizer.token.BreakToken)25 AssignExprToken (org.develnext.jphp.core.tokenizer.token.expr.operator.AssignExprToken)25 Test (org.junit.Test)24 ColonToken (org.develnext.jphp.core.tokenizer.token.ColonToken)22 NameToken (org.develnext.jphp.core.tokenizer.token.expr.value.NameToken)21 ValueIfElseToken (org.develnext.jphp.core.tokenizer.token.expr.operator.ValueIfElseToken)19 CastExprToken (org.develnext.jphp.core.tokenizer.token.expr.operator.cast.CastExprToken)16 UnsetCastExprToken (org.develnext.jphp.core.tokenizer.token.expr.operator.cast.UnsetCastExprToken)16 MacroToken (org.develnext.jphp.core.tokenizer.token.expr.value.macro.MacroToken)16 StringExprToken (org.develnext.jphp.core.tokenizer.token.expr.value.StringExprToken)14 VariableExprToken (org.develnext.jphp.core.tokenizer.token.expr.value.VariableExprToken)14 Tokenizer (org.develnext.jphp.core.tokenizer.Tokenizer)13 MinusExprToken (org.develnext.jphp.core.tokenizer.token.expr.operator.MinusExprToken)12 ExprStmtToken (org.develnext.jphp.core.tokenizer.token.stmt.ExprStmtToken)12