Example #1
0
    lexpr()
    {
        KurumiToken current = get_current_token();

        switch (current.type)
        {
        case TokenType.Identifier:
            KurumiKeyword keyword = current.is_keyword();
            if (keyword == KurumiKeyword.UNKNOWN)
            {
                KurumiToken n = get_current_token(1);
                if (n == null)
                {
                    return;
                }
                OperatorType type = n.to_operator_type();
                if (type == OperatorType.COLON)
                {
                    KurumiNumber number = goto_storage.get(current.data);
                    number.number = expression.size();
                    next();
                    next();
                }
                else if (type == OperatorType.LBRACKET)
                {
                    function_call(current, 0);
                }
                else
                {
                    rexpr();
                }
            }
            else
            {
                keyword_expression(keyword);
            }
            break;

        case TokenType.Operator:
            next();
            return;

        default:
            throw new Exception("Identifier or Keyword is expected in the left-sided expression.");
        }
    }
Example #2
0
    rexpr()
    {
        KurumiToken current = get_current_token();

        while (current != null)
        {
            OperatorType type = current.to_operator_type();
            bool         v1   = current.type == TokenType.Operator && (type == OperatorType.ENDLINE || type == OperatorType.COLON);
            bool         v2   = current.is_keyword() == KurumiKeyword.END;
            if (v1 || v2)
            {
                break;
            }
            int assigment_count = 0;
            assign_expr(ref assigment_count);
            current = get_current_token();
        }
    }
Example #3
0
    call_args()
    {
        int count = 0;

        next();
        KurumiToken  token = get_current_token();
        OperatorType t     = token.to_operator_type();

        while (token != null && t != OperatorType.RBRACKET && t != OperatorType.ENDLINE)
        {
            count += 1;
            equals_expr();
            token = get_current_token();
            t     = token.to_operator_type();
            if (t == OperatorType.COMMA)
            {
                next();
            }
        }
        next();
        return(count);
    }