private boolean _ParseRightpart(Rule rule){
        ArrayList<String> right_part = rule.GetRightPart();
        for(String symbol : right_part)
        {
            if(m_grammar.IsTerminal(symbol)){
                if(symbol.equals(Grammar.epsilon))
                    return true;
                
                if(symbol.equals(m_token.value)){
                    m_token = m_tokenizer.getNextToken();
                    m_num_of_token++;
                    while(m_token.type.equals(Tokenizer.TokType.SPACE))
                    {    m_token = m_tokenizer.getNextToken();
                        m_num_of_token++;
                    }
                    m_token.value = m_token.value.trim();
                    _replaceToken();
                    m_possible_lexems.clear();
                }
                else
                {
                    ArrayList<String> terminals = new ArrayList<String>();
                    terminals.add(symbol);
                    m_possible_lexems.add(terminals);
                    return false;
                }
            }
            else{
                if(!_ParseNonTerminal(symbol))
                    return false;
            }
        }
        return true;
    }