Search in sources :

Example 6 with Statement

use of org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.Statement in project scout.rt by eclipse.

the class SqlParser method parseSingleStatement.

/**
 * return {@link SingleStatement} or {@link BracketExpr}
 */
private IToken parseSingleStatement(List<IToken> list, ParseContext ctx) {
    ParseStep lock = ctx.checkAndAdd("SingleStatement", list);
    if (lock == null) {
        return null;
    }
    try {
        // brackets
        ArrayList<IToken> backup = new ArrayList<IToken>(list);
        BracketExpr be = parseBracketExpr(list, ctx);
        if (be != null) {
            BracketExpr tmp = be;
            while (tmp != null) {
                // open, token, close
                IToken ch = tmp.getChildren().get(1);
                if (ch instanceof BracketExpr) {
                    tmp = (BracketExpr) ch;
                } else if (ch instanceof Statement) {
                    return be;
                } else if (ch instanceof SingleStatement) {
                    return be;
                } else {
                    tmp = null;
                }
            }
            // restore
            list.clear();
            list.addAll(backup);
            return null;
        }
        // 
        // Part+
        Part p;
        SingleStatement ss = new SingleStatement();
        if ((p = parsePart(list, ctx, true)) != null) {
            // ok
            ss.addChild(p);
        } else {
            return null;
        }
        while ((p = parsePart(list, ctx, false)) != null) {
            ss.addChild(p);
        }
        if (ss.getChildren().size() == 0) {
            return null;
        }
        return ss;
    } finally {
        ctx.remove(lock);
    }
}
Also used : IToken(org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.IToken) Statement(org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.Statement) SingleStatement(org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.SingleStatement) Part(org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.Part) ArrayList(java.util.ArrayList) SingleStatement(org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.SingleStatement) BracketExpr(org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.BracketExpr)

Aggregations

SingleStatement (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.SingleStatement)6 Statement (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.Statement)6 IToken (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.IToken)5 BracketExpr (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.BracketExpr)3 UnionToken (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.UnionToken)2 Unparsed (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.Unparsed)2 ArrayList (java.util.ArrayList)1 CloseBracketToken (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.CloseBracketToken)1 ListExpr (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.ListExpr)1 OpenBracketToken (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.OpenBracketToken)1 Part (org.eclipse.scout.rt.server.jdbc.parsers.sql.SqlParserToken.Part)1