public static boolean accept(AbstractSyntaxNode node, TokenReader reader)
    {
        boolean result = false;
        
        if (reader.accept(Token.DATA_INTEGER))
        {
            final Token numberToken = reader.lookahead(-1);
            final int number = Integer.parseInt(numberToken.getMatched());
            
            final Number number2 = new Number(number);
            node.addChild(number2);
            
            result = true;
        }
        else if (reader.accept(Token.DATA_HEX))
        {
            final Token hexToken = reader.lookahead(-1);
            final String hexString = hexToken.getMatched();
            int number;
            if (hexString.endsWith("0x"))
            {
                number = new Integer(0);
            }
            else
            {
                number = Integer.parseInt(hexString.split("0x")[1], 16);
            }
            
            final Number number2 = new Number(number);
            node.addChild(number2);
            
            result = true;
        }
        else if (reader.accept(Token.DATA_CHAR))
        {
            final Token charToken = reader.lookahead(-1);
            final int number = charToken.getMatched().charAt(1);
            
            final Number number2 = new Number(number);
            node.addChild(number2);
            
            result = true;
        }
        else if (Boolean.accept(node, reader))
        {
            result = true;
        }
        
        return result;
    }