All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jfirer.jsql.analyse.token.parser.impl.LiteralsParser Maven / Gradle / Ivy

package com.jfirer.jsql.analyse.token.parser.impl;

import com.jfirer.jsql.analyse.exception.IllegalFormatException;
import com.jfirer.jsql.analyse.token.KeyWord;
import com.jfirer.jsql.analyse.token.Token;
import com.jfirer.jsql.analyse.token.parser.TokenParser;
import com.jfirer.jfireel.expression.util.CharType;

import java.util.Deque;

public class LiteralsParser extends TokenParser
{

    @Override
    public int parse(String sql, int offset, Deque tokens)
    {
        char c = getChar(offset, sql);
        if ( CharType.isAlphabet(c) == false )
        {
            return next.parse(sql, offset, tokens);
        }
        int index = offset;
        offset++;
        int dotCount = 0;
        while (CharType.isAlphabet(c = getChar(offset, sql))//
                || CharType.isDigital(c) || c == '_'//
                || (c == '.' && 0 == dotCount++))
        {
            offset++;
        }
        if ( dotCount > 1 )
        {
            throw new IllegalFormatException("非法格式的引用", sql.substring(index, offset));
        }
        String literals = sql.substring(index, offset);
        if ( KeyWord.isKeyWord(literals) )
        {
            tokens.push(new Token(KeyWord.getKeyWord(literals)));
        }
        else
        {
            tokens.push(new Token(literals));
        }
        return offset;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy