1# We declare all of these here to type the first argument. 2 3from __future__ import absolute_import 4 5cimport cython 6from .Scanning cimport PyrexScanner 7 8ctypedef object (*p_sub_expr_func)(PyrexScanner obj) 9 10# entry points 11 12cpdef p_module(PyrexScanner s, pxd, full_module_name, ctx=*) 13cpdef p_code(PyrexScanner s, level= *, ctx=*) 14 15# internal parser states 16 17cdef p_ident(PyrexScanner s, message =*) 18cdef p_ident_list(PyrexScanner s) 19 20cdef tuple p_binop_operator(PyrexScanner s) 21cdef p_binop_expr(PyrexScanner s, ops, p_sub_expr_func p_sub_expr) 22cdef p_lambdef(PyrexScanner s, bint allow_conditional=*) 23cdef p_lambdef_nocond(PyrexScanner s) 24cdef p_test(PyrexScanner s) 25cdef p_test_nocond(PyrexScanner s) 26cdef p_or_test(PyrexScanner s) 27cdef p_rassoc_binop_expr(PyrexScanner s, ops, p_sub_expr_func p_subexpr) 28cdef p_and_test(PyrexScanner s) 29cdef p_not_test(PyrexScanner s) 30cdef p_comparison(PyrexScanner s) 31cdef p_test_or_starred_expr(PyrexScanner s) 32cdef p_starred_expr(PyrexScanner s) 33cdef p_cascaded_cmp(PyrexScanner s) 34cdef p_cmp_op(PyrexScanner s) 35cdef p_bit_expr(PyrexScanner s) 36cdef p_xor_expr(PyrexScanner s) 37cdef p_and_expr(PyrexScanner s) 38cdef p_shift_expr(PyrexScanner s) 39cdef p_arith_expr(PyrexScanner s) 40cdef p_term(PyrexScanner s) 41cdef p_factor(PyrexScanner s) 42cdef _p_factor(PyrexScanner s) 43cdef p_typecast(PyrexScanner s) 44cdef p_sizeof(PyrexScanner s) 45cdef p_yield_expression(PyrexScanner s) 46cdef p_yield_statement(PyrexScanner s) 47cdef p_async_statement(PyrexScanner s, ctx, decorators) 48cdef p_power(PyrexScanner s) 49cdef p_new_expr(PyrexScanner s) 50cdef p_trailer(PyrexScanner s, node1) 51cdef p_call_parse_args(PyrexScanner s, bint allow_genexp = *) 52cdef p_call_build_packed_args(pos, positional_args, keyword_args) 53cdef p_call(PyrexScanner s, function) 54cdef p_index(PyrexScanner s, base) 55cdef tuple p_subscript_list(PyrexScanner s) 56cdef p_subscript(PyrexScanner s) 57cdef p_slice_element(PyrexScanner s, follow_set) 58cdef expect_ellipsis(PyrexScanner s) 59cdef make_slice_nodes(pos, subscripts) 60cpdef make_slice_node(pos, start, stop = *, step = *) 61cdef p_atom(PyrexScanner s) 62@cython.locals(value=unicode) 63cdef p_int_literal(PyrexScanner s) 64cdef p_name(PyrexScanner s, name) 65cdef wrap_compile_time_constant(pos, value) 66cdef p_cat_string_literal(PyrexScanner s) 67cdef p_opt_string_literal(PyrexScanner s, required_type=*) 68cdef bint check_for_non_ascii_characters(unicode string) 69@cython.locals(systr=unicode, is_python3_source=bint, is_raw=bint) 70cdef p_string_literal(PyrexScanner s, kind_override=*) 71cdef _append_escape_sequence(kind, builder, unicode escape_sequence, PyrexScanner s) 72cdef tuple _f_string_error_pos(pos, string, Py_ssize_t i) 73@cython.locals(i=Py_ssize_t, size=Py_ssize_t, c=Py_UCS4, next_start=Py_ssize_t) 74cdef list p_f_string(PyrexScanner s, unicode_value, pos, bint is_raw) 75@cython.locals(i=Py_ssize_t, size=Py_ssize_t, c=Py_UCS4, quote_char=Py_UCS4, NO_CHAR=Py_UCS4) 76cdef tuple p_f_string_expr(PyrexScanner s, unicode_value, pos, Py_ssize_t starting_index, bint is_raw) 77cdef p_list_maker(PyrexScanner s) 78cdef p_comp_iter(PyrexScanner s, body) 79cdef p_comp_for(PyrexScanner s, body) 80cdef p_comp_if(PyrexScanner s, body) 81cdef p_dict_or_set_maker(PyrexScanner s) 82cdef p_backquote_expr(PyrexScanner s) 83cdef p_simple_expr_list(PyrexScanner s, expr=*) 84cdef p_test_or_starred_expr_list(PyrexScanner s, expr=*) 85cdef p_testlist(PyrexScanner s) 86cdef p_testlist_star_expr(PyrexScanner s) 87cdef p_testlist_comp(PyrexScanner s) 88cdef p_genexp(PyrexScanner s, expr) 89 90#------------------------------------------------------- 91# 92# Statements 93# 94#------------------------------------------------------- 95 96cdef p_global_statement(PyrexScanner s) 97cdef p_nonlocal_statement(PyrexScanner s) 98cdef p_expression_or_assignment(PyrexScanner s) 99cdef p_print_statement(PyrexScanner s) 100cdef p_exec_statement(PyrexScanner s) 101cdef p_del_statement(PyrexScanner s) 102cdef p_pass_statement(PyrexScanner s, bint with_newline = *) 103cdef p_break_statement(PyrexScanner s) 104cdef p_continue_statement(PyrexScanner s) 105cdef p_return_statement(PyrexScanner s) 106cdef p_raise_statement(PyrexScanner s) 107cdef p_import_statement(PyrexScanner s) 108cdef p_from_import_statement(PyrexScanner s, bint first_statement = *) 109cdef p_imported_name(PyrexScanner s, bint is_cimport) 110cdef p_dotted_name(PyrexScanner s, bint as_allowed) 111cdef p_as_name(PyrexScanner s) 112cdef p_assert_statement(PyrexScanner s) 113cdef p_if_statement(PyrexScanner s) 114cdef p_if_clause(PyrexScanner s) 115cdef p_else_clause(PyrexScanner s) 116cdef p_while_statement(PyrexScanner s) 117cdef p_for_statement(PyrexScanner s, bint is_async=*) 118cdef dict p_for_bounds(PyrexScanner s, bint allow_testlist=*, bint is_async=*) 119cdef p_for_from_relation(PyrexScanner s) 120cdef p_for_from_step(PyrexScanner s) 121cdef p_target(PyrexScanner s, terminator) 122cdef p_for_target(PyrexScanner s) 123cdef p_for_iterator(PyrexScanner s, bint allow_testlist=*, bint is_async=*) 124cdef p_try_statement(PyrexScanner s) 125cdef p_except_clause(PyrexScanner s) 126cdef p_include_statement(PyrexScanner s, ctx) 127cdef p_with_statement(PyrexScanner s) 128cdef p_with_items(PyrexScanner s, bint is_async=*) 129cdef p_with_template(PyrexScanner s) 130cdef p_simple_statement(PyrexScanner s, bint first_statement = *) 131cdef p_simple_statement_list(PyrexScanner s, ctx, bint first_statement = *) 132cdef p_compile_time_expr(PyrexScanner s) 133cdef p_DEF_statement(PyrexScanner s) 134cdef p_IF_statement(PyrexScanner s, ctx) 135cdef p_statement(PyrexScanner s, ctx, bint first_statement = *) 136cdef p_statement_list(PyrexScanner s, ctx, bint first_statement = *) 137cdef p_suite(PyrexScanner s, ctx = *) 138cdef tuple p_suite_with_docstring(PyrexScanner s, ctx, bint with_doc_only=*) 139cdef tuple _extract_docstring(node) 140cdef p_positional_and_keyword_args(PyrexScanner s, end_sy_set, templates = *) 141 142cpdef p_c_base_type(PyrexScanner s, bint self_flag = *, bint nonempty = *, templates = *) 143cdef p_calling_convention(PyrexScanner s) 144cdef p_c_complex_base_type(PyrexScanner s, templates = *) 145cdef p_c_simple_base_type(PyrexScanner s, bint self_flag, bint nonempty, templates = *) 146cdef p_buffer_or_template(PyrexScanner s, base_type_node, templates) 147cdef p_bracketed_base_type(PyrexScanner s, base_type_node, nonempty, empty) 148cdef is_memoryviewslice_access(PyrexScanner s) 149cdef p_memoryviewslice_access(PyrexScanner s, base_type_node) 150cdef bint looking_at_name(PyrexScanner s) except -2 151cdef object looking_at_expr(PyrexScanner s)# except -2 152cdef bint looking_at_base_type(PyrexScanner s) except -2 153cdef bint looking_at_dotted_name(PyrexScanner s) except -2 154cdef bint looking_at_call(PyrexScanner s) except -2 155cdef p_sign_and_longness(PyrexScanner s) 156cdef p_opt_cname(PyrexScanner s) 157cpdef p_c_declarator(PyrexScanner s, ctx = *, bint empty = *, bint is_type = *, bint cmethod_flag = *, 158 bint assignable = *, bint nonempty = *, 159 bint calling_convention_allowed = *) 160cdef p_c_array_declarator(PyrexScanner s, base) 161cdef p_c_func_declarator(PyrexScanner s, pos, ctx, base, bint cmethod_flag) 162cdef p_c_simple_declarator(PyrexScanner s, ctx, bint empty, bint is_type, bint cmethod_flag, 163 bint assignable, bint nonempty) 164cdef p_nogil(PyrexScanner s) 165cdef p_with_gil(PyrexScanner s) 166cdef p_exception_value_clause(PyrexScanner s) 167cpdef p_c_arg_list(PyrexScanner s, ctx = *, bint in_pyfunc = *, bint cmethod_flag = *, 168 bint nonempty_declarators = *, bint kw_only = *, bint annotated = *) 169cdef p_optional_ellipsis(PyrexScanner s) 170cdef p_c_arg_decl(PyrexScanner s, ctx, in_pyfunc, bint cmethod_flag = *, bint nonempty = *, bint kw_only = *, bint annotated = *) 171cdef p_api(PyrexScanner s) 172cdef p_cdef_statement(PyrexScanner s, ctx) 173cdef p_cdef_block(PyrexScanner s, ctx) 174cdef p_cdef_extern_block(PyrexScanner s, pos, ctx) 175cdef p_c_enum_definition(PyrexScanner s, pos, ctx) 176cdef p_c_enum_line(PyrexScanner s, ctx, list items) 177cdef p_c_enum_item(PyrexScanner s, ctx, list items) 178cdef p_c_struct_or_union_definition(PyrexScanner s, pos, ctx) 179cdef p_fused_definition(PyrexScanner s, pos, ctx) 180cdef p_struct_enum(PyrexScanner s, pos, ctx) 181cdef p_visibility(PyrexScanner s, prev_visibility) 182cdef p_c_modifiers(PyrexScanner s) 183cdef p_c_func_or_var_declaration(PyrexScanner s, pos, ctx) 184cdef p_ctypedef_statement(PyrexScanner s, ctx) 185cdef p_decorators(PyrexScanner s) 186cdef _reject_cdef_modifier_in_py(PyrexScanner s, name) 187cdef p_def_statement(PyrexScanner s, list decorators=*, bint is_async_def=*) 188cdef p_varargslist(PyrexScanner s, terminator=*, bint annotated = *) 189cdef p_py_arg_decl(PyrexScanner s, bint annotated = *) 190cdef p_class_statement(PyrexScanner s, decorators) 191cdef p_c_class_definition(PyrexScanner s, pos, ctx) 192cdef tuple p_c_class_options(PyrexScanner s) 193cdef p_property_decl(PyrexScanner s) 194cdef p_doc_string(PyrexScanner s) 195cdef p_ignorable_statement(PyrexScanner s) 196cdef dict p_compiler_directive_comments(PyrexScanner s) 197cdef p_template_definition(PyrexScanner s) 198cdef p_cpp_class_definition(PyrexScanner s, pos, ctx) 199cdef p_cpp_class_attribute(PyrexScanner s, ctx) 200