# File kwartz.rb, line 3063
        def parse_item
            case token()
            when :name
                name = token_str()
                scan()
                if token() != '('             # variable
                    expr = ExprNode.new(:variable, name, nil)
                else                          # function
                    scan()
                    if token() == ')'
                        arg_expr = nil
                    else
                        arg_expr = parse_expression()
                        while token() == ',' do
                            scan()
                            arg2_expr = parse_expression()
                            arg_expr = ExprNode.new(',', arg_expr, arg2_expr)
                        end
                    end
                    _syntaxerr("function '#{name}(' is not closed.") unless token() == ')'
                    scan()
                    expr = ExprNode.new(:function, name, arg_expr)
                end
            when '('
                scan()
                expr = parse_expression()
                _syntaxerr("')' expected.") unless token() == ')'
                scan()
            else
                Kwartz::assert()
            end
            return expr
        end