Line | Count | Source (jump to first uncovered line) |
1 | | |
2 | | /* |
3 | | * Copyright (C) Igor Sysoev |
4 | | * Copyright (C) NGINX, Inc. |
5 | | */ |
6 | | |
7 | | #ifndef _NJS_LEXER_H_INCLUDED_ |
8 | | #define _NJS_LEXER_H_INCLUDED_ |
9 | | |
10 | | |
11 | | typedef enum { |
12 | | NJS_TOKEN_ERROR = -1, |
13 | | NJS_TOKEN_ILLEGAL = 0, |
14 | | |
15 | | NJS_TOKEN_END, |
16 | | NJS_TOKEN_SPACE, |
17 | | NJS_TOKEN_LINE_END, |
18 | | |
19 | | NJS_TOKEN_DOUBLE_QUOTE, |
20 | | NJS_TOKEN_SINGLE_QUOTE, |
21 | | |
22 | | NJS_TOKEN_OPEN_PARENTHESIS, |
23 | | NJS_TOKEN_CLOSE_PARENTHESIS, |
24 | | NJS_TOKEN_OPEN_BRACKET, |
25 | | NJS_TOKEN_CLOSE_BRACKET, |
26 | | NJS_TOKEN_OPEN_BRACE, |
27 | | NJS_TOKEN_CLOSE_BRACE, |
28 | | |
29 | | NJS_TOKEN_COMMA, |
30 | | NJS_TOKEN_DOT, |
31 | | NJS_TOKEN_ELLIPSIS, |
32 | | NJS_TOKEN_SEMICOLON, |
33 | | |
34 | | NJS_TOKEN_COLON, |
35 | | NJS_TOKEN_CONDITIONAL, |
36 | | |
37 | | NJS_TOKEN_COMMENT, |
38 | | |
39 | | NJS_TOKEN_ASSIGNMENT, |
40 | | NJS_TOKEN_ARROW, |
41 | | NJS_TOKEN_ADDITION_ASSIGNMENT, |
42 | | NJS_TOKEN_SUBTRACTION_ASSIGNMENT, |
43 | | NJS_TOKEN_MULTIPLICATION_ASSIGNMENT, |
44 | | NJS_TOKEN_EXPONENTIATION_ASSIGNMENT, |
45 | | NJS_TOKEN_DIVISION_ASSIGNMENT, |
46 | | NJS_TOKEN_REMAINDER_ASSIGNMENT, |
47 | | NJS_TOKEN_LEFT_SHIFT_ASSIGNMENT, |
48 | | NJS_TOKEN_RIGHT_SHIFT_ASSIGNMENT, |
49 | | NJS_TOKEN_UNSIGNED_RIGHT_SHIFT_ASSIGNMENT, |
50 | | NJS_TOKEN_BITWISE_OR_ASSIGNMENT, |
51 | | NJS_TOKEN_BITWISE_XOR_ASSIGNMENT, |
52 | | NJS_TOKEN_BITWISE_AND_ASSIGNMENT, |
53 | | |
54 | | NJS_TOKEN_INCREMENT, |
55 | | NJS_TOKEN_DECREMENT, |
56 | | NJS_TOKEN_POST_INCREMENT, |
57 | | NJS_TOKEN_POST_DECREMENT, |
58 | | |
59 | 4.62M | #define NJS_TOKEN_LAST_ASSIGNMENT NJS_TOKEN_POST_DECREMENT |
60 | | |
61 | | NJS_TOKEN_EQUAL, |
62 | | NJS_TOKEN_STRICT_EQUAL, |
63 | | NJS_TOKEN_NOT_EQUAL, |
64 | | NJS_TOKEN_STRICT_NOT_EQUAL, |
65 | | |
66 | | NJS_TOKEN_ADDITION, |
67 | | NJS_TOKEN_UNARY_PLUS, |
68 | | |
69 | | NJS_TOKEN_SUBTRACTION, |
70 | | NJS_TOKEN_UNARY_NEGATION, |
71 | | |
72 | | NJS_TOKEN_MULTIPLICATION, |
73 | | |
74 | | NJS_TOKEN_EXPONENTIATION, |
75 | | |
76 | | NJS_TOKEN_DIVISION, |
77 | | |
78 | | NJS_TOKEN_REMAINDER, |
79 | | |
80 | | NJS_TOKEN_LESS, |
81 | | NJS_TOKEN_LESS_OR_EQUAL, |
82 | | NJS_TOKEN_LEFT_SHIFT, |
83 | | |
84 | | NJS_TOKEN_GREATER, |
85 | | NJS_TOKEN_GREATER_OR_EQUAL, |
86 | | NJS_TOKEN_RIGHT_SHIFT, |
87 | | NJS_TOKEN_UNSIGNED_RIGHT_SHIFT, |
88 | | |
89 | | NJS_TOKEN_BITWISE_OR, |
90 | | NJS_TOKEN_LOGICAL_OR, |
91 | | |
92 | | NJS_TOKEN_BITWISE_XOR, |
93 | | |
94 | | NJS_TOKEN_BITWISE_AND, |
95 | | NJS_TOKEN_LOGICAL_AND, |
96 | | |
97 | | NJS_TOKEN_BITWISE_NOT, |
98 | | NJS_TOKEN_LOGICAL_NOT, |
99 | | |
100 | | NJS_TOKEN_COALESCE, |
101 | | |
102 | | NJS_TOKEN_IN, |
103 | | NJS_TOKEN_OF, |
104 | | NJS_TOKEN_INSTANCEOF, |
105 | | NJS_TOKEN_TYPEOF, |
106 | | NJS_TOKEN_VOID, |
107 | | NJS_TOKEN_NEW, |
108 | | NJS_TOKEN_DELETE, |
109 | | NJS_TOKEN_YIELD, |
110 | | |
111 | | NJS_TOKEN_DIGIT, |
112 | | NJS_TOKEN_LETTER, |
113 | | |
114 | | #define NJS_TOKEN_FIRST_CONST NJS_TOKEN_NULL |
115 | | |
116 | | NJS_TOKEN_NULL, |
117 | | NJS_TOKEN_NUMBER, |
118 | | NJS_TOKEN_TRUE, |
119 | | NJS_TOKEN_UNDEFINED, |
120 | | NJS_TOKEN_FALSE, |
121 | | NJS_TOKEN_STRING, |
122 | | |
123 | | #define NJS_TOKEN_LAST_CONST NJS_TOKEN_STRING |
124 | | |
125 | | NJS_TOKEN_ESCAPE_STRING, |
126 | | NJS_TOKEN_UNTERMINATED_STRING, |
127 | | NJS_TOKEN_NAME, |
128 | | |
129 | | NJS_TOKEN_OBJECT, |
130 | | NJS_TOKEN_OBJECT_VALUE, |
131 | | NJS_TOKEN_PROPERTY, |
132 | | NJS_TOKEN_PROPERTY_INIT, |
133 | | NJS_TOKEN_PROPERTY_DELETE, |
134 | | NJS_TOKEN_PROPERTY_GETTER, |
135 | | NJS_TOKEN_PROPERTY_SETTER, |
136 | | NJS_TOKEN_PROTO_INIT, |
137 | | |
138 | | NJS_TOKEN_ARRAY, |
139 | | |
140 | | NJS_TOKEN_GRAVE, |
141 | | NJS_TOKEN_TEMPLATE_LITERAL, |
142 | | |
143 | | NJS_TOKEN_FUNCTION, |
144 | | NJS_TOKEN_FUNCTION_DECLARATION, |
145 | | NJS_TOKEN_FUNCTION_EXPRESSION, |
146 | | NJS_TOKEN_FUNCTION_CALL, |
147 | | NJS_TOKEN_METHOD_CALL, |
148 | | NJS_TOKEN_ARGUMENT, |
149 | | NJS_TOKEN_RETURN, |
150 | | |
151 | | NJS_TOKEN_ASYNC_FUNCTION, |
152 | | NJS_TOKEN_ASYNC_FUNCTION_DECLARATION, |
153 | | NJS_TOKEN_ASYNC_FUNCTION_EXPRESSION, |
154 | | |
155 | | NJS_TOKEN_REGEXP, |
156 | | |
157 | | NJS_TOKEN_EXTERNAL, |
158 | | |
159 | | NJS_TOKEN_STATEMENT, |
160 | | NJS_TOKEN_BLOCK, |
161 | | NJS_TOKEN_VAR, |
162 | | NJS_TOKEN_IF, |
163 | | NJS_TOKEN_ELSE, |
164 | | NJS_TOKEN_BRANCHING, |
165 | | NJS_TOKEN_WHILE, |
166 | | NJS_TOKEN_DO, |
167 | | NJS_TOKEN_FOR, |
168 | | NJS_TOKEN_FOR_IN, |
169 | | NJS_TOKEN_BREAK, |
170 | | NJS_TOKEN_CONTINUE, |
171 | | NJS_TOKEN_SWITCH, |
172 | | NJS_TOKEN_CASE, |
173 | | NJS_TOKEN_DEFAULT, |
174 | | NJS_TOKEN_WITH, |
175 | | NJS_TOKEN_TRY, |
176 | | NJS_TOKEN_CATCH, |
177 | | NJS_TOKEN_FINALLY, |
178 | | NJS_TOKEN_THROW, |
179 | | |
180 | | NJS_TOKEN_THIS, |
181 | | NJS_TOKEN_ARGUMENTS, |
182 | | NJS_TOKEN_EVAL, |
183 | | |
184 | | NJS_TOKEN_IMPORT, |
185 | | NJS_TOKEN_EXPORT, |
186 | | |
187 | | NJS_TOKEN_TARGET, |
188 | | |
189 | | NJS_TOKEN_FROM, |
190 | | |
191 | | NJS_TOKEN_META, |
192 | | |
193 | | NJS_TOKEN_AWAIT, |
194 | | NJS_TOKEN_ASYNC, |
195 | | NJS_TOKEN_CLASS, |
196 | | NJS_TOKEN_CONST, |
197 | | NJS_TOKEN_DEBUGGER, |
198 | | NJS_TOKEN_ENUM, |
199 | | NJS_TOKEN_EXTENDS, |
200 | | NJS_TOKEN_IMPLEMENTS, |
201 | | NJS_TOKEN_INTERFACE, |
202 | | NJS_TOKEN_LET, |
203 | | NJS_TOKEN_PACKAGE, |
204 | | NJS_TOKEN_PRIVATE, |
205 | | NJS_TOKEN_PROTECTED, |
206 | | NJS_TOKEN_PUBLIC, |
207 | | NJS_TOKEN_STATIC, |
208 | | NJS_TOKEN_SUPER, |
209 | | |
210 | | NJS_TOKEN_RESERVED, |
211 | | } njs_token_type_t; |
212 | | |
213 | | |
214 | | typedef enum { |
215 | | NJS_KEYWORD_TYPE_UNDEF = 0, |
216 | | NJS_KEYWORD_TYPE_RESERVED = 1, |
217 | | NJS_KEYWORD_TYPE_KEYWORD = 2 |
218 | | } njs_keyword_type_t; |
219 | | |
220 | | |
221 | | typedef struct { |
222 | | njs_token_type_t type; |
223 | | njs_bool_t reserved; |
224 | | } njs_keyword_t; |
225 | | |
226 | | |
227 | | typedef struct { |
228 | | const char *key; |
229 | | const njs_keyword_t *value; |
230 | | |
231 | | size_t length; |
232 | | size_t next; |
233 | | } njs_lexer_keyword_entry_t; |
234 | | |
235 | | |
236 | | typedef struct { |
237 | | njs_token_type_t type:16; |
238 | | njs_keyword_type_t keyword_type; |
239 | | uint32_t line; |
240 | | uint32_t atom_id; |
241 | | njs_str_t text; |
242 | | double number; |
243 | | njs_queue_link_t link; |
244 | | } njs_lexer_token_t; |
245 | | |
246 | | |
247 | | typedef struct { |
248 | | njs_lexer_token_t *token; |
249 | | njs_queue_t preread; /* of njs_lexer_token_t */ |
250 | | |
251 | | u_char *prev_start; |
252 | | njs_token_type_t prev_type:16; |
253 | | njs_token_type_t last_type:16; |
254 | | |
255 | | uint32_t line; |
256 | | njs_str_t file; |
257 | | |
258 | | njs_vm_t *vm; |
259 | | |
260 | | u_char *start; |
261 | | u_char *end; |
262 | | |
263 | | #define NJS_INITIAL_IN_STACK_SIZE 128 |
264 | | uint8_t *in_stack; |
265 | | njs_int_t in_stack_ptr; |
266 | | njs_int_t in_stack_size; |
267 | | } njs_lexer_t; |
268 | | |
269 | | |
270 | | njs_int_t njs_lexer_init(njs_vm_t *vm, njs_lexer_t *lexer, njs_str_t *file, |
271 | | u_char *start, u_char *end); |
272 | | |
273 | | njs_lexer_token_t *njs_lexer_token(njs_lexer_t *lexer, |
274 | | njs_bool_t with_end_line); |
275 | | njs_lexer_token_t *njs_lexer_peek_token(njs_lexer_t *lexer, |
276 | | njs_lexer_token_t *current, njs_bool_t with_end_line); |
277 | | void njs_lexer_consume_token(njs_lexer_t *lexer, unsigned length); |
278 | | njs_int_t njs_lexer_make_token(njs_lexer_t *lexer, njs_lexer_token_t *token); |
279 | | njs_int_t njs_lexer_in_stack_init(njs_lexer_t *lexer); |
280 | | njs_int_t njs_lexer_in_stack_push(njs_lexer_t *lexer); |
281 | | void njs_lexer_in_stack_pop(njs_lexer_t *lexer); |
282 | | void njs_lexer_in_fail_set(njs_lexer_t *lexer, njs_int_t flag); |
283 | | njs_int_t njs_lexer_in_fail_get(njs_lexer_t *lexer); |
284 | | |
285 | | |
286 | | const njs_lexer_keyword_entry_t *njs_lexer_keyword(const u_char *key, |
287 | | size_t length); |
288 | | njs_int_t njs_lexer_keywords(njs_arr_t *array); |
289 | | |
290 | | |
291 | | njs_inline njs_bool_t |
292 | | njs_lexer_token_is_keyword(njs_lexer_token_t *token) |
293 | 1.81M | { |
294 | 1.81M | return token->keyword_type & NJS_KEYWORD_TYPE_KEYWORD; |
295 | 1.81M | } Unexecuted instantiation: njs_arr.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_rbtree.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_mp.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_sprintf.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_value.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_atom.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_vm.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_vmcode.c:njs_lexer_token_is_keyword njs_parser.c:njs_lexer_token_is_keyword Line | Count | Source | 293 | 1.81M | { | 294 | 1.81M | return token->keyword_type & NJS_KEYWORD_TYPE_KEYWORD; | 295 | 1.81M | } |
Unexecuted instantiation: njs_variable.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_scope.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_generator.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_disassembler.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_module.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_extern.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_number.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_symbol.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_string.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_object.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_object_prop.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_array.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_json.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_function.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_regexp.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_date.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_error.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_array_buffer.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_typed_array.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_promise.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_iterator.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_async.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_builtin.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_regex.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_buffer.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_modules.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_dtoa.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_dtoa_fixed.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_strtod.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_djb_hash.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_utf8.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_utf16.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_flathsh.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_trace.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_malloc.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_utils.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_chb.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_lexer.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_boolean.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_math.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_encoding.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_diyfp.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_str.c:njs_lexer_token_is_keyword Unexecuted instantiation: njs_random.c:njs_lexer_token_is_keyword |
296 | | |
297 | | |
298 | | njs_inline njs_bool_t |
299 | | njs_lexer_token_is_reserved(njs_lexer_token_t *token) |
300 | 1.81M | { |
301 | 1.81M | return token->keyword_type & NJS_KEYWORD_TYPE_RESERVED; |
302 | 1.81M | } Unexecuted instantiation: njs_arr.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_rbtree.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_mp.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_sprintf.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_value.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_atom.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_vm.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_vmcode.c:njs_lexer_token_is_reserved njs_parser.c:njs_lexer_token_is_reserved Line | Count | Source | 300 | 1.81M | { | 301 | 1.81M | return token->keyword_type & NJS_KEYWORD_TYPE_RESERVED; | 302 | 1.81M | } |
Unexecuted instantiation: njs_variable.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_scope.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_generator.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_disassembler.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_module.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_extern.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_number.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_symbol.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_string.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_object.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_object_prop.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_array.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_json.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_function.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_regexp.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_date.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_error.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_array_buffer.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_typed_array.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_promise.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_iterator.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_async.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_builtin.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_regex.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_buffer.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_modules.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_dtoa.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_dtoa_fixed.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_strtod.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_djb_hash.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_utf8.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_utf16.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_flathsh.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_trace.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_malloc.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_utils.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_chb.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_lexer.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_boolean.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_math.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_encoding.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_diyfp.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_str.c:njs_lexer_token_is_reserved Unexecuted instantiation: njs_random.c:njs_lexer_token_is_reserved |
303 | | |
304 | | |
305 | | njs_inline njs_bool_t |
306 | | njs_lexer_token_is_name(njs_lexer_token_t *token) |
307 | 0 | { |
308 | 0 | return token->type == NJS_TOKEN_NAME |
309 | 0 | || (!njs_lexer_token_is_reserved(token) |
310 | 0 | && njs_lexer_token_is_keyword(token)); |
311 | 0 | } Unexecuted instantiation: njs_arr.c:njs_lexer_token_is_name Unexecuted instantiation: njs_rbtree.c:njs_lexer_token_is_name Unexecuted instantiation: njs_mp.c:njs_lexer_token_is_name Unexecuted instantiation: njs_sprintf.c:njs_lexer_token_is_name Unexecuted instantiation: njs_value.c:njs_lexer_token_is_name Unexecuted instantiation: njs_atom.c:njs_lexer_token_is_name Unexecuted instantiation: njs_vm.c:njs_lexer_token_is_name Unexecuted instantiation: njs_vmcode.c:njs_lexer_token_is_name Unexecuted instantiation: njs_parser.c:njs_lexer_token_is_name Unexecuted instantiation: njs_variable.c:njs_lexer_token_is_name Unexecuted instantiation: njs_scope.c:njs_lexer_token_is_name Unexecuted instantiation: njs_generator.c:njs_lexer_token_is_name Unexecuted instantiation: njs_disassembler.c:njs_lexer_token_is_name Unexecuted instantiation: njs_module.c:njs_lexer_token_is_name Unexecuted instantiation: njs_extern.c:njs_lexer_token_is_name Unexecuted instantiation: njs_number.c:njs_lexer_token_is_name Unexecuted instantiation: njs_symbol.c:njs_lexer_token_is_name Unexecuted instantiation: njs_string.c:njs_lexer_token_is_name Unexecuted instantiation: njs_object.c:njs_lexer_token_is_name Unexecuted instantiation: njs_object_prop.c:njs_lexer_token_is_name Unexecuted instantiation: njs_array.c:njs_lexer_token_is_name Unexecuted instantiation: njs_json.c:njs_lexer_token_is_name Unexecuted instantiation: njs_function.c:njs_lexer_token_is_name Unexecuted instantiation: njs_regexp.c:njs_lexer_token_is_name Unexecuted instantiation: njs_date.c:njs_lexer_token_is_name Unexecuted instantiation: njs_error.c:njs_lexer_token_is_name Unexecuted instantiation: njs_array_buffer.c:njs_lexer_token_is_name Unexecuted instantiation: njs_typed_array.c:njs_lexer_token_is_name Unexecuted instantiation: njs_promise.c:njs_lexer_token_is_name Unexecuted instantiation: njs_iterator.c:njs_lexer_token_is_name Unexecuted instantiation: njs_async.c:njs_lexer_token_is_name Unexecuted instantiation: njs_builtin.c:njs_lexer_token_is_name Unexecuted instantiation: njs_regex.c:njs_lexer_token_is_name Unexecuted instantiation: njs_buffer.c:njs_lexer_token_is_name Unexecuted instantiation: njs_modules.c:njs_lexer_token_is_name Unexecuted instantiation: njs_dtoa.c:njs_lexer_token_is_name Unexecuted instantiation: njs_dtoa_fixed.c:njs_lexer_token_is_name Unexecuted instantiation: njs_strtod.c:njs_lexer_token_is_name Unexecuted instantiation: njs_djb_hash.c:njs_lexer_token_is_name Unexecuted instantiation: njs_utf8.c:njs_lexer_token_is_name Unexecuted instantiation: njs_utf16.c:njs_lexer_token_is_name Unexecuted instantiation: njs_flathsh.c:njs_lexer_token_is_name Unexecuted instantiation: njs_trace.c:njs_lexer_token_is_name Unexecuted instantiation: njs_malloc.c:njs_lexer_token_is_name Unexecuted instantiation: njs_utils.c:njs_lexer_token_is_name Unexecuted instantiation: njs_chb.c:njs_lexer_token_is_name Unexecuted instantiation: njs_lexer.c:njs_lexer_token_is_name Unexecuted instantiation: njs_boolean.c:njs_lexer_token_is_name Unexecuted instantiation: njs_math.c:njs_lexer_token_is_name Unexecuted instantiation: njs_encoding.c:njs_lexer_token_is_name Unexecuted instantiation: njs_diyfp.c:njs_lexer_token_is_name Unexecuted instantiation: njs_str.c:njs_lexer_token_is_name Unexecuted instantiation: njs_random.c:njs_lexer_token_is_name |
312 | | |
313 | | |
314 | | njs_inline njs_bool_t |
315 | | njs_lexer_token_is_identifier_name(njs_lexer_token_t *token) |
316 | 13.6k | { |
317 | 13.6k | return token->type == NJS_TOKEN_NAME || njs_lexer_token_is_keyword(token); |
318 | 13.6k | } Unexecuted instantiation: njs_arr.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_rbtree.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_mp.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_sprintf.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_value.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_atom.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_vm.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_vmcode.c:njs_lexer_token_is_identifier_name njs_parser.c:njs_lexer_token_is_identifier_name Line | Count | Source | 316 | 13.6k | { | 317 | 13.6k | return token->type == NJS_TOKEN_NAME || njs_lexer_token_is_keyword(token); | 318 | 13.6k | } |
Unexecuted instantiation: njs_variable.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_scope.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_generator.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_disassembler.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_module.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_extern.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_number.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_symbol.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_string.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_object.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_object_prop.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_array.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_json.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_function.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_regexp.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_date.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_error.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_array_buffer.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_typed_array.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_promise.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_iterator.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_async.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_builtin.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_regex.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_buffer.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_modules.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_dtoa.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_dtoa_fixed.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_strtod.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_djb_hash.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_utf8.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_utf16.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_flathsh.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_trace.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_malloc.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_utils.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_chb.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_lexer.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_boolean.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_math.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_encoding.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_diyfp.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_str.c:njs_lexer_token_is_identifier_name Unexecuted instantiation: njs_random.c:njs_lexer_token_is_identifier_name |
319 | | |
320 | | |
321 | | njs_inline njs_bool_t |
322 | | njs_lexer_token_is_binding_identifier(njs_lexer_token_t *token) |
323 | 2.25M | { |
324 | 2.25M | switch (token->type) { |
325 | 443k | case NJS_TOKEN_NAME: |
326 | 443k | case NJS_TOKEN_YIELD: |
327 | 443k | case NJS_TOKEN_AWAIT: |
328 | 443k | return 1; |
329 | | |
330 | 1.81M | default: |
331 | 1.81M | return (!njs_lexer_token_is_reserved(token) |
332 | 1.81M | && njs_lexer_token_is_keyword(token)); |
333 | 2.25M | }; |
334 | 0 | } Unexecuted instantiation: njs_arr.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_rbtree.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_mp.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_sprintf.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_value.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_atom.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_vm.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_vmcode.c:njs_lexer_token_is_binding_identifier njs_parser.c:njs_lexer_token_is_binding_identifier Line | Count | Source | 323 | 2.25M | { | 324 | 2.25M | switch (token->type) { | 325 | 443k | case NJS_TOKEN_NAME: | 326 | 443k | case NJS_TOKEN_YIELD: | 327 | 443k | case NJS_TOKEN_AWAIT: | 328 | 443k | return 1; | 329 | | | 330 | 1.81M | default: | 331 | 1.81M | return (!njs_lexer_token_is_reserved(token) | 332 | 1.81M | && njs_lexer_token_is_keyword(token)); | 333 | 2.25M | }; | 334 | 0 | } |
Unexecuted instantiation: njs_variable.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_scope.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_generator.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_disassembler.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_module.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_extern.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_number.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_symbol.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_string.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_object.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_object_prop.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_array.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_json.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_function.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_regexp.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_date.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_error.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_array_buffer.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_typed_array.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_promise.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_iterator.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_async.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_builtin.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_regex.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_buffer.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_modules.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_dtoa.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_dtoa_fixed.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_strtod.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_djb_hash.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_utf8.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_utf16.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_flathsh.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_trace.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_malloc.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_utils.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_chb.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_lexer.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_boolean.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_math.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_encoding.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_diyfp.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_str.c:njs_lexer_token_is_binding_identifier Unexecuted instantiation: njs_random.c:njs_lexer_token_is_binding_identifier |
335 | | |
336 | | |
337 | | njs_inline njs_bool_t |
338 | | njs_lexer_token_is_label_identifier(njs_lexer_token_t *token) |
339 | 0 | { |
340 | 0 | return njs_lexer_token_is_binding_identifier(token); |
341 | 0 | } Unexecuted instantiation: njs_arr.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_rbtree.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_mp.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_sprintf.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_value.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_atom.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_vm.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_vmcode.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_parser.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_variable.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_scope.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_generator.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_disassembler.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_module.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_extern.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_number.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_symbol.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_string.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_object.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_object_prop.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_array.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_json.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_function.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_regexp.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_date.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_error.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_array_buffer.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_typed_array.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_promise.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_iterator.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_async.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_builtin.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_regex.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_buffer.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_modules.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_dtoa.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_dtoa_fixed.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_strtod.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_djb_hash.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_utf8.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_utf16.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_flathsh.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_trace.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_malloc.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_utils.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_chb.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_lexer.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_boolean.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_math.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_encoding.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_diyfp.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_str.c:njs_lexer_token_is_label_identifier Unexecuted instantiation: njs_random.c:njs_lexer_token_is_label_identifier |
342 | | |
343 | | |
344 | | njs_inline njs_bool_t |
345 | | njs_lexer_token_is_identifier_reference(njs_lexer_token_t *token) |
346 | 207k | { |
347 | 207k | return njs_lexer_token_is_binding_identifier(token); |
348 | 207k | } Unexecuted instantiation: njs_arr.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_rbtree.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_mp.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_sprintf.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_value.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_atom.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_vm.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_vmcode.c:njs_lexer_token_is_identifier_reference njs_parser.c:njs_lexer_token_is_identifier_reference Line | Count | Source | 346 | 207k | { | 347 | 207k | return njs_lexer_token_is_binding_identifier(token); | 348 | 207k | } |
Unexecuted instantiation: njs_variable.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_scope.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_generator.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_disassembler.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_module.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_extern.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_number.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_symbol.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_string.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_object.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_object_prop.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_array.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_json.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_function.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_regexp.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_date.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_error.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_array_buffer.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_typed_array.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_promise.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_iterator.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_async.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_builtin.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_regex.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_buffer.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_modules.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_dtoa.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_dtoa_fixed.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_strtod.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_djb_hash.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_utf8.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_utf16.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_flathsh.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_trace.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_malloc.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_utils.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_chb.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_lexer.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_boolean.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_math.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_encoding.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_diyfp.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_str.c:njs_lexer_token_is_identifier_reference Unexecuted instantiation: njs_random.c:njs_lexer_token_is_identifier_reference |
349 | | |
350 | | #endif /* _NJS_LEXER_H_INCLUDED_ */ |