Coverage Report

Created: 2025-08-29 07:08

/src/njs/src/njs_lexer.h
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_ */