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