]> git.kaiwu.me - njs.git/commitdiff
Improved fields and typedefs naming in parser.
authorAlexander Borisov <alexander.borisov@nginx.com>
Wed, 26 Feb 2020 13:22:12 +0000 (16:22 +0300)
committerAlexander Borisov <alexander.borisov@nginx.com>
Wed, 26 Feb 2020 13:22:12 +0000 (16:22 +0300)
njs_token_t -> njs_token_type_t
node->token -> node->token_type
lexer->prev_token -> lexer->prev_type

src/njs_generator.c
src/njs_lexer.c
src/njs_lexer.h
src/njs_module.c
src/njs_parser.c
src/njs_parser.h
src/njs_parser_expression.c
src/njs_parser_terminal.c
src/njs_regexp.c
src/njs_regexp.h

index c41cd3ba22e8acdfdbc57388beb4e08843f5a6c1..8e1715ac4447a7f8f0f5c114715cf3a9004e8bf9 100644 (file)
@@ -264,7 +264,7 @@ njs_generate(njs_vm_t *vm, njs_generator_t *generator, njs_parser_node_t *node)
         return NJS_OK;
     }
 
-    switch (node->token) {
+    switch (node->token_type) {
 
     case NJS_TOKEN_VAR:
         return njs_generate_var_statement(vm, generator, node);
@@ -664,7 +664,7 @@ njs_generate_if_statement(njs_vm_t *vm, njs_generator_t *generator,
     jump_offset = njs_code_offset(generator, cond_jump);
     label_offset = jump_offset + offsetof(njs_vmcode_cond_jump_t, offset);
 
-    if (node->right != NULL && node->right->token == NJS_TOKEN_BRANCHING) {
+    if (node->right != NULL && node->right->token_type == NJS_TOKEN_BRANCHING) {
 
         /* The "then" branch in a case of "if/then/else" statement. */
 
@@ -836,7 +836,7 @@ njs_generate_switch_statement(njs_vm_t *vm, njs_generator_t *generator,
 
     for (branch = swtch->right; branch != NULL; branch = branch->left) {
 
-        if (branch->token != NJS_TOKEN_DEFAULT) {
+        if (branch->token_type != NJS_TOKEN_DEFAULT) {
 
             /* The "case" expression. */
 
@@ -887,7 +887,7 @@ njs_generate_switch_statement(njs_vm_t *vm, njs_generator_t *generator,
 
     for (branch = swtch->right; branch != NULL; branch = branch->left) {
 
-        if (branch->token == NJS_TOKEN_DEFAULT) {
+        if (branch->token_type == NJS_TOKEN_DEFAULT) {
             njs_code_set_jump_offset(generator, njs_vmcode_jump_t, jump_offset);
             jump = NULL;
             node = branch;
@@ -1580,7 +1580,7 @@ njs_generate_stop_statement(njs_vm_t *vm, njs_generator_t *generator,
         index = NJS_INDEX_NONE;
         node = node->right;
 
-        if (node != NULL && node->token != NJS_TOKEN_FUNCTION) {
+        if (node != NULL && node->token_type != NJS_TOKEN_FUNCTION) {
             index = node->index;
         }
 
@@ -1626,7 +1626,7 @@ njs_generate_assignment(njs_vm_t *vm, njs_generator_t *generator,
     expr = node->right;
     expr->dest = NULL;
 
-    if (lvalue->token == NJS_TOKEN_NAME) {
+    if (lvalue->token_type == NJS_TOKEN_NAME) {
 
         ret = njs_generate_variable(vm, generator, lvalue, NJS_DECLARATION);
         if (njs_slow_path(ret != NJS_OK)) {
@@ -1679,7 +1679,7 @@ njs_generate_assignment(njs_vm_t *vm, njs_generator_t *generator,
          * Preserve object and property values stored in variables in a case
          * if the variables can be changed by side effects in expression.
          */
-        if (object->token == NJS_TOKEN_NAME) {
+        if (object->token_type == NJS_TOKEN_NAME) {
             src = object->index;
 
             index = njs_generate_node_temp_index_get(vm, generator, object);
@@ -1690,7 +1690,7 @@ njs_generate_assignment(njs_vm_t *vm, njs_generator_t *generator,
             njs_generate_code_move(generator, move, index, src);
         }
 
-        if (property->token == NJS_TOKEN_NAME) {
+        if (property->token_type == NJS_TOKEN_NAME) {
             src = property->index;
 
             index = njs_generate_node_temp_index_get(vm, generator, property);
@@ -1707,7 +1707,7 @@ njs_generate_assignment(njs_vm_t *vm, njs_generator_t *generator,
         return ret;
     }
 
-    switch (lvalue->token) {
+    switch (lvalue->token_type) {
     case NJS_TOKEN_PROPERTY_INIT:
         njs_generate_code(generator, njs_vmcode_prop_set_t, prop_set,
                           NJS_VMCODE_PROPERTY_INIT, 3);
@@ -1749,7 +1749,7 @@ njs_generate_operation_assignment(njs_vm_t *vm, njs_generator_t *generator,
 
     lvalue = node->left;
 
-    if (lvalue->token == NJS_TOKEN_NAME) {
+    if (lvalue->token_type == NJS_TOKEN_NAME) {
 
         ret = njs_generate_variable(vm, generator, lvalue, NJS_DECLARATION);
         if (njs_slow_path(ret != NJS_OK)) {
@@ -1912,7 +1912,7 @@ njs_generate_property_accessor(njs_vm_t *vm, njs_generator_t *generator,
     accessor->value = function->index;
     accessor->object = object->index;
     accessor->property = property->index;
-    accessor->type = (node->token == NJS_TOKEN_PROPERTY_GETTER)
+    accessor->type = (node->token_type == NJS_TOKEN_PROPERTY_GETTER)
                      ? NJS_OBJECT_PROP_GETTER : NJS_OBJECT_PROP_SETTER;
 
     return NJS_OK;
@@ -2094,7 +2094,7 @@ njs_generate_3addr_operation(njs_vm_t *vm, njs_generator_t *generator,
 
     right = node->right;
 
-    if (left->token == NJS_TOKEN_NAME) {
+    if (left->token_type == NJS_TOKEN_NAME) {
 
         if (njs_slow_path(njs_parser_has_side_effect(right))) {
             njs_generate_code(generator, njs_vmcode_move_t, move,
@@ -2184,7 +2184,7 @@ njs_generate_typeof_operation(njs_vm_t *vm, njs_generator_t *generator,
 
     expr = node->left;
 
-    if (expr->token == NJS_TOKEN_NAME) {
+    if (expr->token_type == NJS_TOKEN_NAME) {
         ret = njs_generate_variable(vm, generator, expr, NJS_TYPEOF);
         if (njs_slow_path(ret != NJS_OK)) {
             return NJS_ERROR;
@@ -2227,7 +2227,7 @@ njs_generate_inc_dec_operation(njs_vm_t *vm, njs_generator_t *generator,
 
     lvalue = node->left;
 
-    if (lvalue->token == NJS_TOKEN_NAME) {
+    if (lvalue->token_type == NJS_TOKEN_NAME) {
 
         ret = njs_generate_variable(vm, generator, lvalue, NJS_DECLARATION);
         if (njs_slow_path(ret != NJS_OK)) {
@@ -2860,7 +2860,7 @@ njs_generate_try_statement(njs_vm_t *vm, njs_generator_t *generator,
     catch_exit_label = undef_label;
     catch_cont_label = undef_label;
 
-    if (node->token == NJS_TOKEN_CATCH) {
+    if (node->token_type == NJS_TOKEN_CATCH) {
         /* A "try/catch" case. */
 
         catch_index = njs_variable_index(vm, node->left);
index 46eeb7f82dd4f4b5ee52c3b686361ee2a8c4fafc..d58cb53e1c5e21433343f2a4198c0e20fd6cbf32 100644 (file)
@@ -311,7 +311,7 @@ njs_lexer_init(njs_vm_t *vm, njs_lexer_t *lexer, njs_str_t *file,
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_lexer_token(njs_vm_t *vm, njs_lexer_t *lexer)
 {
     njs_lexer_token_t  *lt;
@@ -319,7 +319,7 @@ njs_lexer_token(njs_vm_t *vm, njs_lexer_t *lexer)
     lexer->prev_start = lexer->start;
 
     if (lexer->token != NULL) {
-        lexer->prev_token = lexer->token->type;
+        lexer->prev_type = lexer->token->type;
         njs_mp_free(vm->mem_pool, lexer->token);
     }
 
@@ -336,7 +336,7 @@ njs_lexer_token(njs_vm_t *vm, njs_lexer_t *lexer)
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_lexer_peek_token(njs_vm_t *vm, njs_lexer_t *lexer, size_t offset)
 {
     size_t             i;
index ad037ac0bb3fc1d0683b14db58164087b0304959..670dbab31af134ba78a98e1ff98e0d217643d721 100644 (file)
@@ -195,7 +195,7 @@ typedef enum {
     NJS_TOKEN_SUPER,
 
     NJS_TOKEN_RESERVED,
-} njs_token_t;
+} njs_token_type_t;
 
 
 typedef struct {
@@ -205,7 +205,7 @@ typedef struct {
 
 typedef struct {
     njs_lexer_entry_t               entry;
-    njs_token_t                     type;
+    njs_token_type_t                type;
 } njs_keyword_t;
 
 
@@ -219,7 +219,7 @@ typedef struct {
 
 
 typedef struct {
-    njs_token_t                     type:16;
+    njs_token_type_t                type:16;
     uint32_t                        line;
     uintptr_t                       unique_id;
     njs_str_t                       text;
@@ -234,7 +234,7 @@ typedef struct {
     uint8_t                         keyword;
 
     u_char                          *prev_start;
-    njs_token_t                     prev_token:16;
+    njs_token_type_t                prev_type:16;
 
     uint32_t                        line;
     njs_str_t                       file;
@@ -251,8 +251,8 @@ typedef struct {
 njs_int_t njs_lexer_init(njs_vm_t *vm, njs_lexer_t *lexer, njs_str_t *file,
     u_char *start, u_char *end);
 
-njs_token_t njs_lexer_token(njs_vm_t *vm, njs_lexer_t *lexer);
-njs_token_t njs_lexer_peek_token(njs_vm_t *vm, njs_lexer_t *lexer,
+njs_token_type_t njs_lexer_token(njs_vm_t *vm, njs_lexer_t *lexer);
+njs_token_type_t njs_lexer_peek_token(njs_vm_t *vm, njs_lexer_t *lexer,
     size_t offset);
 njs_int_t njs_lexer_rollback(njs_vm_t *vm, njs_lexer_t *lexer);
 
index 1ae0c889375fa4aa39e1fa23327c7204b87e8c0a..1ea3cb8678b63c351747621c8014f20e15094da4 100644 (file)
@@ -104,7 +104,7 @@ njs_parser_module(njs_vm_t *vm, njs_parser_t *parser)
     njs_str_t          name, text;
     njs_lexer_t        *prev, lexer;
     njs_module_t       *module;
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
     njs_module_info_t  info;
 
@@ -161,13 +161,13 @@ njs_parser_module(njs_vm_t *vm, njs_parser_t *parser)
 
     parser->lexer = &lexer;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
         goto fail;
     }
 
-    token = njs_parser_module_lambda(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+    type = njs_parser_module_lambda(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
         goto fail;
     }
 
index b9dfdf724bb4cee483e41c8130b3176d331cc56e..27194eab55fa5fe1d87b2e31ad1ec7be4a33cb1d 100644 (file)
 static njs_int_t njs_parser_scope_begin(njs_vm_t *vm, njs_parser_t *parser,
     njs_scope_t type);
 static void njs_parser_scope_end(njs_vm_t *vm, njs_parser_t *parser);
-static njs_token_t njs_parser_statement_chain(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token, njs_bool_t top);
-static njs_token_t njs_parser_statement(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
-static njs_token_t njs_parser_block_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_statement_chain(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type, njs_bool_t top);
+static njs_token_type_t njs_parser_statement(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type);
+static njs_token_type_t njs_parser_block_statement(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_block(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_labelled_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_block(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_labelled_statement(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_function_declaration(njs_vm_t *vm,
+static njs_token_type_t njs_parser_function_declaration(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_lambda_arguments(njs_vm_t *vm,
+static njs_token_type_t njs_parser_lambda_arguments(njs_vm_t *vm,
     njs_parser_t *parser, njs_function_lambda_t *lambda, njs_index_t index,
-    njs_token_t token);
-static njs_token_t njs_parser_lambda_argument(njs_vm_t *vm,
+    njs_token_type_t type);
+static njs_token_type_t njs_parser_lambda_argument(njs_vm_t *vm,
     njs_parser_t *parser, njs_index_t index);
-static njs_token_t njs_parser_lambda_body(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
+static njs_token_type_t njs_parser_lambda_body(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
 static njs_parser_node_t *njs_parser_return_set(njs_vm_t *vm,
     njs_parser_t *parser, njs_parser_node_t *expr);
-static njs_token_t njs_parser_return_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_return_statement(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t parent, njs_bool_t var_in);
-static njs_token_t njs_parser_if_statement(njs_vm_t *vm, njs_parser_t *parser);
-static njs_token_t njs_parser_switch_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_var_statement(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t parent, njs_bool_t var_in);
+static njs_token_type_t njs_parser_if_statement(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_while_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_switch_statement(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_do_while_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_while_statement(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_for_statement(njs_vm_t *vm, njs_parser_t *parser);
-static njs_token_t njs_parser_var_in_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_do_while_statement(njs_vm_t *vm,
+    njs_parser_t *parser);
+static njs_token_type_t njs_parser_for_statement(njs_vm_t *vm,
+    njs_parser_t *parser);
+static njs_token_type_t njs_parser_var_in_statement(njs_vm_t *vm,
     njs_parser_t *parser, njs_parser_node_t *name);
-static njs_token_t njs_parser_for_in_statement(njs_vm_t *vm,
-    njs_parser_t *parser, njs_str_t *name, njs_token_t token);
-static njs_token_t njs_parser_brk_statement(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_try_statement(njs_vm_t *vm, njs_parser_t *parser);
-static njs_token_t njs_parser_try_block(njs_vm_t *vm, njs_parser_t *parser);
-static njs_token_t njs_parser_throw_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_for_in_statement(njs_vm_t *vm,
+    njs_parser_t *parser, njs_str_t *name, njs_token_type_t type);
+static njs_token_type_t njs_parser_brk_statement(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_try_statement(njs_vm_t *vm,
+    njs_parser_t *parser);
+static njs_token_type_t njs_parser_try_block(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_import_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_throw_statement(njs_vm_t *vm,
     njs_parser_t *parser);
-static njs_token_t njs_parser_export_statement(njs_vm_t *vm,
+static njs_token_type_t njs_parser_import_statement(njs_vm_t *vm,
+    njs_parser_t *parser);
+static njs_token_type_t njs_parser_export_statement(njs_vm_t *vm,
     njs_parser_t *parser);
 static njs_int_t njs_parser_export_sink(njs_vm_t *vm, njs_parser_t *parser);
-static njs_token_t njs_parser_grouping_expression(njs_vm_t *vm,
+static njs_token_type_t njs_parser_grouping_expression(njs_vm_t *vm,
     njs_parser_t *parser);
 
 
@@ -77,7 +81,7 @@ njs_int_t
 njs_parser(njs_vm_t *vm, njs_parser_t *parser, njs_parser_t *prev)
 {
     njs_int_t          ret;
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
 
     ret = njs_parser_scope_begin(vm, parser, NJS_SCOPE_GLOBAL);
@@ -97,16 +101,16 @@ njs_parser(njs_vm_t *vm, njs_parser_t *parser, njs_parser_t *prev)
         }
     }
 
-    token = njs_parser_token(vm, parser);
+    type = njs_parser_token(vm, parser);
 
-    while (token != NJS_TOKEN_END) {
+    while (type != NJS_TOKEN_END) {
 
-        token = njs_parser_statement_chain(vm, parser, token, 1);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+        type = njs_parser_statement_chain(vm, parser, type, 1);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
             return NJS_ERROR;
         }
 
-        if (token == NJS_TOKEN_CLOSE_BRACE && vm->options.trailer) {
+        if (type == NJS_TOKEN_CLOSE_BRACE && vm->options.trailer) {
             parser->lexer->start--;
             break;
         }
@@ -125,7 +129,7 @@ njs_parser(njs_vm_t *vm, njs_parser_t *parser, njs_parser_t *prev)
         njs_parser_chain_top_set(parser, node);
     }
 
-    node->token = NJS_TOKEN_END;
+    node->token_type = NJS_TOKEN_END;
 
     if (njs_slow_path(parser->count != 0)) {
         njs_internal_error(vm, "parser->count != 0");
@@ -264,9 +268,9 @@ njs_parser_scope_rbtree_compare(njs_rbtree_node_t *node1,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_statement_chain(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token, njs_bool_t top)
+    njs_token_type_t type, njs_bool_t top)
 {
     njs_parser_node_t  *stmt, *last, *node, *new_node, **child;
 
@@ -277,17 +281,17 @@ njs_parser_statement_chain(njs_vm_t *vm, njs_parser_t *parser,
 
     njs_parser_enter(vm, parser);
 
-    token = njs_parser_statement(vm, parser, token);
+    type = njs_parser_statement(vm, parser, type);
 
     njs_parser_leave(parser);
 
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return njs_parser_unexpected_token(vm, parser, token);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return njs_parser_unexpected_token(vm, parser, type);
     }
 
     if (parser->node == NULL) {
         /* The statement is empty block or just semicolon. */
-        return token;
+        return type;
     }
 
     new_node = parser->node;
@@ -319,26 +323,26 @@ njs_parser_statement_chain(njs_vm_t *vm, njs_parser_t *parser,
 
     *child = stmt;
 
-    while (token == NJS_TOKEN_SEMICOLON) {
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+    while (type == NJS_TOKEN_SEMICOLON) {
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
             break;
         }
     }
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_statement(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     size_t  offset;
 
     parser->node = NULL;
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_FUNCTION:
         return njs_parser_function_declaration(vm, parser);
@@ -371,37 +375,37 @@ njs_parser_statement(njs_vm_t *vm, njs_parser_t *parser,
         if (vm->options.trailer) {
             parser->node = NULL;
             njs_thread_log_debug("BLOCK END");
-            return token;
+            return type;
         }
 
         /* Fall through. */
 
     default:
 
-        switch (token) {
+        switch (type) {
         case NJS_TOKEN_VAR:
-            token = njs_parser_var_statement(vm, parser, token, 0);
+            type = njs_parser_var_statement(vm, parser, type, 0);
             break;
 
         case NJS_TOKEN_RETURN:
-            token = njs_parser_return_statement(vm, parser);
+            type = njs_parser_return_statement(vm, parser);
             break;
 
         case NJS_TOKEN_THROW:
-            token = njs_parser_throw_statement(vm, parser);
+            type = njs_parser_throw_statement(vm, parser);
             break;
 
         case NJS_TOKEN_CONTINUE:
         case NJS_TOKEN_BREAK:
-            token = njs_parser_brk_statement(vm, parser, token);
+            type = njs_parser_brk_statement(vm, parser, type);
             break;
 
         case NJS_TOKEN_IMPORT:
-            token = njs_parser_import_statement(vm, parser);
+            type = njs_parser_import_statement(vm, parser);
             break;
 
         case NJS_TOKEN_EXPORT:
-            token = njs_parser_export_statement(vm, parser);
+            type = njs_parser_export_statement(vm, parser);
             break;
 
         case NJS_TOKEN_NAME:
@@ -413,30 +417,30 @@ njs_parser_statement(njs_vm_t *vm, njs_parser_t *parser,
             /* Fall through. */
 
         default:
-            token = njs_parser_expression(vm, parser, token);
+            type = njs_parser_expression(vm, parser, type);
             break;
         }
 
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         /*
          * An expression must be terminated by semicolon,
          * or by a close curly brace or by the end of line.
          */
-        switch (token) {
+        switch (type) {
 
         case NJS_TOKEN_SEMICOLON:
             return njs_parser_token(vm, parser);
 
         case NJS_TOKEN_CLOSE_BRACE:
         case NJS_TOKEN_END:
-            return token;
+            return type;
 
         default:
-            if (parser->lexer->prev_token == NJS_TOKEN_LINE_END) {
-                return token;
+            if (parser->lexer->prev_type == NJS_TOKEN_LINE_END) {
+                return type;
             }
 
             return NJS_TOKEN_ILLEGAL;
@@ -445,16 +449,16 @@ njs_parser_statement(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_block_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
     njs_int_t          ret;
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     ret = njs_parser_scope_begin(vm, parser, NJS_SCOPE_BLOCK);
@@ -464,10 +468,10 @@ njs_parser_block_statement(njs_vm_t *vm, njs_parser_t *parser)
 
     parser->node = NULL;
 
-    while (token != NJS_TOKEN_CLOSE_BRACE) {
-        token = njs_parser_statement_chain(vm, parser, token, 0);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+    while (type != NJS_TOKEN_CLOSE_BRACE) {
+        type = njs_parser_statement_chain(vm, parser, type, 0);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
     }
 
@@ -486,16 +490,16 @@ njs_parser_block_statement(njs_vm_t *vm, njs_parser_t *parser)
 }
 
 
-static njs_token_t
-njs_parser_block(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
+static njs_token_type_t
+njs_parser_block(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type)
 {
-    if (token == NJS_TOKEN_FUNCTION) {
+    if (type == NJS_TOKEN_FUNCTION) {
         njs_parser_syntax_error(vm, parser,
               "Functions can only be declared at top level or inside a block");
         return NJS_TOKEN_ILLEGAL;
     }
 
-    return njs_parser_statement(vm, parser, token);
+    return njs_parser_statement(vm, parser, type);
 }
 
 
@@ -540,14 +544,14 @@ njs_parser_variable_node(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_labelled_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    uintptr_t       unique_id;
-    njs_int_t       ret;
-    njs_str_t       name;
-    njs_token_t     token;
-    njs_variable_t  *label;
+    uintptr_t         unique_id;
+    njs_int_t         ret;
+    njs_str_t         name;
+    njs_variable_t    *label;
+    njs_token_type_t  type;
 
     name = *njs_parser_text(parser);
     unique_id = njs_parser_key_hash(parser);
@@ -564,19 +568,19 @@ njs_parser_labelled_statement(njs_vm_t *vm, njs_parser_t *parser)
         return NJS_TOKEN_ERROR;
     }
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_COLON);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_COLON);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_statement(vm, parser, token);
+    type = njs_parser_statement(vm, parser, type);
 
-    if (njs_fast_path(token > NJS_TOKEN_ILLEGAL)) {
+    if (njs_fast_path(type > NJS_TOKEN_ILLEGAL)) {
 
         if (parser->node != NULL) {
             /* The statement is not empty block or just semicolon. */
@@ -593,7 +597,7 @@ njs_parser_labelled_statement(njs_vm_t *vm, njs_parser_t *parser)
         }
     }
 
-    return token;
+    return type;
 }
 
 
@@ -635,13 +639,13 @@ njs_parser_function_alloc(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_function_declaration(njs_vm_t *vm, njs_parser_t *parser)
 {
     njs_int_t          ret;
-    njs_token_t        token;
     njs_variable_t     *var;
     njs_function_t     *function;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
 
     node = njs_parser_node_new(vm, parser, NJS_TOKEN_FUNCTION);
@@ -651,13 +655,13 @@ njs_parser_function_declaration(njs_vm_t *vm, njs_parser_t *parser)
 
     node->token_line = njs_parser_token_line(parser);
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token != NJS_TOKEN_NAME) {
-        if (njs_parser_restricted_identifier(token)) {
+    if (type != NJS_TOKEN_NAME) {
+        if (njs_parser_restricted_identifier(type)) {
             njs_parser_syntax_error(vm, parser, "Identifier \"%V\" "
                                     "is forbidden in function declaration",
                                     njs_parser_text(parser));
@@ -676,9 +680,9 @@ njs_parser_function_declaration(njs_vm_t *vm, njs_parser_t *parser)
         return NJS_TOKEN_ERROR;
     }
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     parser->node = node;
@@ -688,22 +692,22 @@ njs_parser_function_declaration(njs_vm_t *vm, njs_parser_t *parser)
         return NJS_TOKEN_ERROR;
     }
 
-    token = njs_parser_function_lambda(vm, parser, function->u.lambda, token);
+    type = njs_parser_function_lambda(vm, parser, function->u.lambda, type);
 
     function->args_count = function->u.lambda->nargs
                            - function->u.lambda->rest_parameters;
 
-    return token;
+    return type;
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_function_expression(njs_vm_t *vm, njs_parser_t *parser)
 {
     njs_int_t              ret;
-    njs_token_t            token;
     njs_variable_t         *var;
     njs_function_t         *function;
+    njs_token_type_t       type;
     njs_parser_node_t      *node;
     njs_function_lambda_t  *lambda;
 
@@ -715,9 +719,9 @@ njs_parser_function_expression(njs_vm_t *vm, njs_parser_t *parser)
     node->token_line = njs_parser_token_line(parser);
     parser->node = node;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     /*
@@ -729,15 +733,15 @@ njs_parser_function_expression(njs_vm_t *vm, njs_parser_t *parser)
         return NJS_TOKEN_ERROR;
     }
 
-    if (token == NJS_TOKEN_NAME) {
+    if (type == NJS_TOKEN_NAME) {
         var = njs_parser_variable_add(vm, parser, NJS_VARIABLE_SHIM);
         if (njs_slow_path(var == NULL)) {
             return NJS_TOKEN_ERROR;
         }
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         function = njs_parser_function_alloc(vm, parser, var);
@@ -757,17 +761,17 @@ njs_parser_function_expression(njs_vm_t *vm, njs_parser_t *parser)
 
     node->u.value.data.u.lambda = lambda;
 
-    token = njs_parser_function_lambda(vm, parser, lambda, token);
+    type = njs_parser_function_lambda(vm, parser, lambda, type);
 
     njs_parser_scope_end(vm, parser);
 
-    return token;
+    return type;
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_function_lambda(njs_vm_t *vm, njs_parser_t *parser,
-    njs_function_lambda_t *lambda, njs_token_t token)
+    njs_function_lambda_t *lambda, njs_token_type_t type)
 {
     njs_int_t    ret;
     njs_index_t  index;
@@ -782,61 +786,61 @@ njs_parser_function_lambda(njs_vm_t *vm, njs_parser_t *parser,
     /* A "this" reservation. */
     index += sizeof(njs_value_t);
 
-    token = njs_parser_lambda_arguments(vm, parser, lambda, index, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_lambda_arguments(vm, parser, lambda, index, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_lambda_body(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_lambda_body(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     njs_parser_scope_end(vm, parser);
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_lambda_arguments(njs_vm_t *vm, njs_parser_t *parser,
-    njs_function_lambda_t *lambda, njs_index_t index, njs_token_t token)
+    njs_function_lambda_t *lambda, njs_index_t index, njs_token_type_t type)
 {
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_OPEN_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_OPEN_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     lambda->nargs = 0;
 
-    while (token != NJS_TOKEN_CLOSE_PARENTHESIS) {
+    while (type != NJS_TOKEN_CLOSE_PARENTHESIS) {
 
         if (njs_slow_path(lambda->rest_parameters)) {
             return NJS_TOKEN_ILLEGAL;
         }
 
-        if (njs_slow_path(token == NJS_TOKEN_ELLIPSIS)) {
+        if (njs_slow_path(type == NJS_TOKEN_ELLIPSIS)) {
             lambda->rest_parameters = 1;
 
-            token = njs_parser_token(vm, parser);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+            type = njs_parser_token(vm, parser);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
                 return NJS_TOKEN_ILLEGAL;
             }
         }
 
-        if (njs_slow_path(token != NJS_TOKEN_NAME)) {
+        if (njs_slow_path(type != NJS_TOKEN_NAME)) {
             return NJS_TOKEN_ILLEGAL;
         }
 
-        token = njs_parser_lambda_argument(vm, parser, index);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_lambda_argument(vm, parser, index);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (token == NJS_TOKEN_COMMA) {
-            token = njs_parser_token(vm, parser);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+        if (type == NJS_TOKEN_COMMA) {
+            type = njs_parser_token(vm, parser);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
         }
 
@@ -848,7 +852,7 @@ njs_parser_lambda_arguments(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_lambda_argument(njs_vm_t *vm, njs_parser_t *parser,
     njs_index_t index)
 {
@@ -872,16 +876,17 @@ njs_parser_lambda_argument(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
-njs_parser_lambda_body(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
+static njs_token_type_t
+njs_parser_lambda_body(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type)
 {
     njs_parser_node_t  *body, *last, *parent;
 
     parent = parser->node;
 
-    token = njs_parser_lambda_statements(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_lambda_statements(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     last = NULL;
@@ -900,7 +905,7 @@ njs_parser_lambda_body(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
         }
     }
 
-    if (last == NULL || last->token != NJS_TOKEN_RETURN) {
+    if (last == NULL || last->token_type != NJS_TOKEN_RETURN) {
         /*
          * There is no function body or the last function body
          * body statement is not "return" statement.
@@ -915,7 +920,7 @@ njs_parser_lambda_body(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
 
     parser->node = parent;
 
-    return token;
+    return type;
 }
 
 
@@ -946,21 +951,21 @@ njs_parser_return_set(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_lambda_statements(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_OPEN_BRACE);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_OPEN_BRACE);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     parser->node = NULL;
 
-    while (token != NJS_TOKEN_CLOSE_BRACE) {
-        token = njs_parser_statement_chain(vm, parser, token, 1);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+    while (type != NJS_TOKEN_CLOSE_BRACE) {
+        type = njs_parser_statement_chain(vm, parser, type, 1);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
     }
 
@@ -968,10 +973,10 @@ njs_parser_lambda_statements(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_return_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t         token;
+    njs_token_type_t    type;
     njs_parser_node_t   *node;
     njs_parser_scope_t  *scope;
 
@@ -997,12 +1002,12 @@ njs_parser_return_statement(njs_vm_t *vm, njs_parser_t *parser)
 
     parser->node = node;
 
-    token = njs_lexer_token(vm, parser->lexer);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_lexer_token(vm, parser->lexer);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_LINE_END:
         return njs_parser_token(vm, parser);
@@ -1010,31 +1015,31 @@ njs_parser_return_statement(njs_vm_t *vm, njs_parser_t *parser)
     case NJS_TOKEN_SEMICOLON:
     case NJS_TOKEN_CLOSE_BRACE:
     case NJS_TOKEN_END:
-        return token;
+        return type;
 
     default:
-        token = njs_parser_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (parser->node->token == NJS_TOKEN_FUNCTION) {
+        if (parser->node->token_type == NJS_TOKEN_FUNCTION) {
             /* TODO: test closure */
         }
 
         node->right = parser->node;
         parser->node = node;
 
-        return token;
+        return type;
     }
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t parent, njs_bool_t var_in)
+    njs_token_type_t parent, njs_bool_t var_in)
 {
-    njs_token_t          token;
+    njs_token_type_t     token_type;
     njs_parser_node_t    *left, *stmt, *name, *assign, *expr;
     njs_variable_type_t  type;
 
@@ -1044,13 +1049,13 @@ njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser,
     left = NULL;
 
     do {
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        token_type = njs_parser_token(vm, parser);
+        if (njs_slow_path(token_type <= NJS_TOKEN_ILLEGAL)) {
+            return token_type;
         }
 
-        if (token != NJS_TOKEN_NAME) {
-            if (njs_parser_restricted_identifier(token)) {
+        if (token_type != NJS_TOKEN_NAME) {
+            if (njs_parser_restricted_identifier(token_type)) {
                 njs_parser_syntax_error(vm, parser, "Identifier \"%V\" "
                                         "is forbidden in var declaration",
                                         njs_parser_text(parser));
@@ -1065,13 +1070,13 @@ njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser,
             return NJS_TOKEN_ERROR;
         }
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        token_type = njs_parser_token(vm, parser);
+        if (njs_slow_path(token_type <= NJS_TOKEN_ILLEGAL)) {
+            return token_type;
         }
 
         if (var_in) {
-            if (token == NJS_TOKEN_IN) {
+            if (token_type == NJS_TOKEN_IN) {
                 return njs_parser_var_in_statement(vm, parser, name);
             }
 
@@ -1080,16 +1085,17 @@ njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser,
 
         expr = NULL;
 
-        if (token == NJS_TOKEN_ASSIGNMENT) {
+        if (token_type == NJS_TOKEN_ASSIGNMENT) {
 
-            token = njs_parser_token(vm, parser);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            token_type = njs_parser_token(vm, parser);
+            if (njs_slow_path(token_type <= NJS_TOKEN_ILLEGAL)) {
+                return token_type;
             }
 
-            token = njs_parser_assignment_expression(vm, parser, token);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            token_type = njs_parser_assignment_expression(vm, parser,
+                                                          token_type);
+            if (njs_slow_path(token_type <= NJS_TOKEN_ILLEGAL)) {
+                return token_type;
             }
 
             expr = parser->node;
@@ -1115,42 +1121,42 @@ njs_parser_var_statement(njs_vm_t *vm, njs_parser_t *parser,
 
         left = stmt;
 
-    } while (token == NJS_TOKEN_COMMA);
+    } while (token_type == NJS_TOKEN_COMMA);
 
-    return token;
+    return token_type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_if_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node, *cond, *stmt;
 
-    token = njs_parser_grouping_expression(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_grouping_expression(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     cond = parser->node;
 
-    token = njs_parser_block(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_block(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token == NJS_TOKEN_ELSE) {
+    if (type == NJS_TOKEN_ELSE) {
 
         stmt = parser->node;
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        token = njs_parser_block(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_block(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node = njs_parser_node_new(vm, parser, NJS_TOKEN_BRANCHING);
@@ -1172,23 +1178,23 @@ njs_parser_if_statement(njs_vm_t *vm, njs_parser_t *parser)
     node->right = parser->node;
     parser->node = node;
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_switch_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node, *swtch, *branch, *dflt, **last;
 
     node = NULL;
     branch = NULL;
     dflt = NULL;
 
-    token = njs_parser_grouping_expression(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_grouping_expression(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     swtch = njs_parser_node_new(vm, parser, NJS_TOKEN_SWITCH);
@@ -1199,14 +1205,14 @@ njs_parser_switch_statement(njs_vm_t *vm, njs_parser_t *parser)
     swtch->left = parser->node;
     last = &swtch->right;
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_OPEN_BRACE);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_OPEN_BRACE);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    while (token != NJS_TOKEN_CLOSE_BRACE) {
+    while (type != NJS_TOKEN_CLOSE_BRACE) {
 
-        if (token == NJS_TOKEN_CASE || token == NJS_TOKEN_DEFAULT) {
+        if (type == NJS_TOKEN_CASE || type == NJS_TOKEN_DEFAULT) {
 
             do {
                 node = njs_parser_node_new(vm, parser, 0);
@@ -1214,15 +1220,15 @@ njs_parser_switch_statement(njs_vm_t *vm, njs_parser_t *parser)
                     return NJS_TOKEN_ERROR;
                 }
 
-                if (token == NJS_TOKEN_CASE) {
-                    token = njs_parser_token(vm, parser);
-                    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                        return token;
+                if (type == NJS_TOKEN_CASE) {
+                    type = njs_parser_token(vm, parser);
+                    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                        return type;
                     }
 
-                    token = njs_parser_expression(vm, parser, token);
-                    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                        return token;
+                    type = njs_parser_expression(vm, parser, type);
+                    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                        return type;
                     }
 
                     node->left = parser->node;
@@ -1244,28 +1250,28 @@ njs_parser_switch_statement(njs_vm_t *vm, njs_parser_t *parser)
                     }
 
                     branch = node;
-                    branch->token = NJS_TOKEN_DEFAULT;
+                    branch->token_type = NJS_TOKEN_DEFAULT;
                     dflt = branch;
 
-                    token = njs_parser_token(vm, parser);
-                    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                        return token;
+                    type = njs_parser_token(vm, parser);
+                    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                        return type;
                     }
                 }
 
                 *last = branch;
                 last = &branch->left;
 
-                token = njs_parser_match(vm, parser, token, NJS_TOKEN_COLON);
-                if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                    return token;
+                type = njs_parser_match(vm, parser, type, NJS_TOKEN_COLON);
+                if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                    return type;
                 }
 
-            } while (token == NJS_TOKEN_CASE || token == NJS_TOKEN_DEFAULT);
+            } while (type == NJS_TOKEN_CASE || type == NJS_TOKEN_DEFAULT);
 
             parser->node = NULL;
 
-            if (token == NJS_TOKEN_CLOSE_BRACE) {
+            if (type == NJS_TOKEN_CLOSE_BRACE) {
                 break;
             }
 
@@ -1274,9 +1280,9 @@ njs_parser_switch_statement(njs_vm_t *vm, njs_parser_t *parser)
             return NJS_TOKEN_ILLEGAL;
         }
 
-        token = njs_parser_statement_chain(vm, parser, token, 0);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_statement_chain(vm, parser, type, 0);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node->right = parser->node;
@@ -1288,22 +1294,22 @@ njs_parser_switch_statement(njs_vm_t *vm, njs_parser_t *parser)
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_while_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node, *cond;
 
-    token = njs_parser_grouping_expression(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_grouping_expression(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     cond = parser->node;
 
-    token = njs_parser_block(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_block(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     node = njs_parser_node_new(vm, parser, NJS_TOKEN_WHILE);
@@ -1315,35 +1321,35 @@ njs_parser_while_statement(njs_vm_t *vm, njs_parser_t *parser)
     node->right = cond;
     parser->node = node;
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_do_while_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node, *stmt;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_block(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_block(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     stmt = parser->node;
 
-    if (njs_slow_path(token != NJS_TOKEN_WHILE)) {
+    if (njs_slow_path(type != NJS_TOKEN_WHILE)) {
         return NJS_TOKEN_ILLEGAL;
     }
 
-    token = njs_parser_grouping_expression(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_grouping_expression(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     node = njs_parser_node_new(vm, parser, NJS_TOKEN_DO);
@@ -1355,43 +1361,43 @@ njs_parser_do_while_statement(njs_vm_t *vm, njs_parser_t *parser)
     node->right = parser->node;
     parser->node = node;
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_for_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
     njs_str_t          name;
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node, *init, *condition, *update, *cond, *body;
 
     init = NULL;
     condition = NULL;
     update = NULL;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_OPEN_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_OPEN_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token != NJS_TOKEN_SEMICOLON) {
+    if (type != NJS_TOKEN_SEMICOLON) {
 
-        if (token == NJS_TOKEN_VAR) {
+        if (type == NJS_TOKEN_VAR) {
 
-            token = njs_parser_var_statement(vm, parser, token, 1);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_var_statement(vm, parser, type, 1);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
             init = parser->node;
 
-            if (init->token == NJS_TOKEN_FOR_IN) {
+            if (init->token_type == NJS_TOKEN_FOR_IN) {
                 goto done;
             }
 
@@ -1399,17 +1405,17 @@ njs_parser_for_statement(njs_vm_t *vm, njs_parser_t *parser)
 
             name = *njs_parser_text(parser);
 
-            token = njs_parser_expression(vm, parser, token);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_expression(vm, parser, type);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
             init = parser->node;
 
-            if (init->token == NJS_TOKEN_IN) {
-                token = njs_parser_for_in_statement(vm, parser, &name, token);
-                if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                    return token;
+            if (init->token_type == NJS_TOKEN_IN) {
+                type = njs_parser_for_in_statement(vm, parser, &name, type);
+                if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                    return type;
                 }
 
                 goto done;
@@ -1417,44 +1423,44 @@ njs_parser_for_statement(njs_vm_t *vm, njs_parser_t *parser)
         }
     }
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_SEMICOLON);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_SEMICOLON);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token != NJS_TOKEN_SEMICOLON) {
+    if (type != NJS_TOKEN_SEMICOLON) {
 
-        token = njs_parser_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         condition = parser->node;
     }
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_SEMICOLON);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_SEMICOLON);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token != NJS_TOKEN_CLOSE_PARENTHESIS) {
+    if (type != NJS_TOKEN_CLOSE_PARENTHESIS) {
 
-        token = njs_parser_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         update = parser->node;
     }
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_CLOSE_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_CLOSE_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_block(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_block(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     node = njs_parser_node_new(vm, parser, NJS_TOKEN_FOR);
@@ -1485,25 +1491,25 @@ njs_parser_for_statement(njs_vm_t *vm, njs_parser_t *parser)
 
 done:
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_var_in_statement(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *name)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node, *foreach;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_expression(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_expression(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     node = njs_parser_node_new(vm, parser, NJS_TOKEN_IN);
@@ -1514,14 +1520,14 @@ njs_parser_var_in_statement(njs_vm_t *vm, njs_parser_t *parser,
     node->left = name;
     node->right = parser->node;
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_CLOSE_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_CLOSE_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_block(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_block(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     foreach = njs_parser_node_new(vm, parser, NJS_TOKEN_FOR_IN);
@@ -1534,19 +1540,19 @@ njs_parser_var_in_statement(njs_vm_t *vm, njs_parser_t *parser,
 
     parser->node = foreach;
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_for_in_statement(njs_vm_t *vm, njs_parser_t *parser, njs_str_t *name,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     njs_parser_node_t  *node;
 
     node = parser->node->left;
 
-    if (node->token != NJS_TOKEN_NAME) {
+    if (node->token_type != NJS_TOKEN_NAME) {
         njs_parser_ref_error(vm, parser, "Invalid left-hand side \"%V\" "
                              "in for-in statement", name);
 
@@ -1560,33 +1566,33 @@ njs_parser_for_in_statement(njs_vm_t *vm, njs_parser_t *parser, njs_str_t *name,
 
     node->left = parser->node;
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_CLOSE_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_CLOSE_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_block(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_block(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     node->right = parser->node;
     parser->node = node;
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_brk_statement(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     uintptr_t          unique_id;
     njs_int_t          ret;
     njs_str_t          name;
     njs_parser_node_t  *node;
 
-    node = njs_parser_node_new(vm, parser, token);
+    node = njs_parser_node_new(vm, parser, type);
     if (njs_slow_path(node == NULL)) {
         return NJS_TOKEN_ERROR;
     }
@@ -1594,9 +1600,9 @@ njs_parser_brk_statement(njs_vm_t *vm, njs_parser_t *parser,
     node->token_line = njs_parser_token_line(parser);
     parser->node = node;
 
-    token = njs_lexer_token(vm, parser->lexer);
+    type = njs_lexer_token(vm, parser->lexer);
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_LINE_END:
         return njs_parser_token(vm, parser);
@@ -1621,7 +1627,7 @@ njs_parser_brk_statement(njs_vm_t *vm, njs_parser_t *parser,
     case NJS_TOKEN_SEMICOLON:
     case NJS_TOKEN_CLOSE_BRACE:
     case NJS_TOKEN_END:
-        return token;
+        return type;
 
     default:
         /* TODO: LABEL */
@@ -1630,16 +1636,16 @@ njs_parser_brk_statement(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_try_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
     njs_int_t          ret;
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node, *try, *catch;
 
-    token = njs_parser_try_block(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_try_block(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     try = njs_parser_node_new(vm, parser, NJS_TOKEN_TRY);
@@ -1649,18 +1655,18 @@ njs_parser_try_statement(njs_vm_t *vm, njs_parser_t *parser)
 
     try->left = parser->node;
 
-    if (token == NJS_TOKEN_CATCH) {
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+    if (type == NJS_TOKEN_CATCH) {
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        token = njs_parser_match(vm, parser, token, NJS_TOKEN_OPEN_PARENTHESIS);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_match(vm, parser, type, NJS_TOKEN_OPEN_PARENTHESIS);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (token != NJS_TOKEN_NAME) {
+        if (type != NJS_TOKEN_NAME) {
             return NJS_TOKEN_ILLEGAL;
         }
 
@@ -1688,18 +1694,18 @@ njs_parser_try_statement(njs_vm_t *vm, njs_parser_t *parser)
 
         catch->left = node;
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (njs_slow_path(token != NJS_TOKEN_CLOSE_PARENTHESIS)) {
+        if (njs_slow_path(type != NJS_TOKEN_CLOSE_PARENTHESIS)) {
             return NJS_TOKEN_ILLEGAL;
         }
 
-        token = njs_parser_try_block(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_try_block(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         catch->right = parser->node;
@@ -1707,11 +1713,11 @@ njs_parser_try_statement(njs_vm_t *vm, njs_parser_t *parser)
         njs_parser_scope_end(vm, parser);
     }
 
-    if (token == NJS_TOKEN_FINALLY) {
+    if (type == NJS_TOKEN_FINALLY) {
 
-        token = njs_parser_try_block(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_try_block(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node = njs_parser_node_new(vm, parser, NJS_TOKEN_FINALLY);
@@ -1737,42 +1743,42 @@ njs_parser_try_statement(njs_vm_t *vm, njs_parser_t *parser)
 
     parser->node = try;
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_try_block(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token != NJS_TOKEN_OPEN_BRACE)) {
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type != NJS_TOKEN_OPEN_BRACE)) {
         return NJS_TOKEN_ILLEGAL;
     }
 
-    token = njs_parser_block_statement(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_block_statement(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     node = parser->node;
 
-    if (node != NULL && node->token == NJS_TOKEN_BLOCK) {
+    if (node != NULL && node->token_type == NJS_TOKEN_BLOCK) {
         parser->node = node->left;
 
         njs_mp_free(vm->mem_pool, node);
     }
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_throw_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
 
     node = njs_parser_node_new(vm, parser, NJS_TOKEN_THROW);
@@ -1780,36 +1786,36 @@ njs_parser_throw_statement(njs_vm_t *vm, njs_parser_t *parser)
         return NJS_TOKEN_ERROR;
     }
 
-    token = njs_lexer_token(vm, parser->lexer);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_lexer_token(vm, parser->lexer);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_LINE_END:
         njs_parser_syntax_error(vm, parser, "Illegal newline after throw");
         return NJS_TOKEN_ILLEGAL;
 
     default:
-        token = njs_parser_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node->right = parser->node;
         parser->node = node;
 
-        return token;
+        return type;
     }
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_import_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
     njs_int_t          ret;
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *name, *import;
 
     if (parser->scope->type != NJS_SCOPE_GLOBAL
@@ -1820,12 +1826,12 @@ njs_parser_import_statement(njs_vm_t *vm, njs_parser_t *parser)
         return NJS_TOKEN_ERROR;
     }
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token != NJS_TOKEN_NAME) {
+    if (type != NJS_TOKEN_NAME) {
         njs_parser_syntax_error(vm, parser,
                                 "Non-default import is not supported");
         return NJS_TOKEN_ILLEGAL;
@@ -1837,17 +1843,17 @@ njs_parser_import_statement(njs_vm_t *vm, njs_parser_t *parser)
         return NJS_TOKEN_ERROR;
     }
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_match_name(vm, parser, token, "from");
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match_name(vm, parser, type, "from");
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token != NJS_TOKEN_STRING) {
+    if (type != NJS_TOKEN_STRING) {
         return NJS_TOKEN_ILLEGAL;
     }
 
@@ -1871,11 +1877,11 @@ njs_parser_import_statement(njs_vm_t *vm, njs_parser_t *parser)
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_module_lambda(njs_vm_t *vm, njs_parser_t *parser)
 {
     njs_int_t              ret;
-    njs_token_t            token;
+    njs_token_type_t       type;
     njs_parser_node_t      *node, *parent;
     njs_function_lambda_t  *lambda;
 
@@ -1886,9 +1892,9 @@ njs_parser_module_lambda(njs_vm_t *vm, njs_parser_t *parser)
 
     node->token_line = njs_parser_token_line(parser);
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     lambda = njs_function_lambda_alloc(vm, 1);
@@ -1906,21 +1912,21 @@ njs_parser_module_lambda(njs_vm_t *vm, njs_parser_t *parser)
 
     parser->scope->module = 1;
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_OPEN_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_OPEN_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     parent = parser->node;
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_CLOSE_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_CLOSE_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_lambda_statements(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_lambda_statements(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     ret = njs_parser_export_sink(vm, parser);
@@ -1935,14 +1941,14 @@ njs_parser_module_lambda(njs_vm_t *vm, njs_parser_t *parser)
 
     njs_parser_scope_end(vm, parser);
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_export_statement(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
 
     if (!parser->scope->module) {
@@ -1957,27 +1963,27 @@ njs_parser_export_statement(njs_vm_t *vm, njs_parser_t *parser)
 
     parser->node = node;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token != NJS_TOKEN_DEFAULT)) {
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type != NJS_TOKEN_DEFAULT)) {
         njs_parser_syntax_error(vm, parser,
                                 "Non-default export is not supported");
         return NJS_TOKEN_ILLEGAL;
     }
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_expression(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_expression(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     node->right = parser->node;
     parser->node = node;
 
-    return token;
+    return type;
 }
 
 
@@ -1994,7 +2000,7 @@ njs_parser_export_sink(njs_vm_t *vm, njs_parser_t *parser)
          node = node->left)
     {
         if (node->right != NULL
-            && node->right->token == NJS_TOKEN_EXPORT)
+            && node->right->token_type == NJS_TOKEN_EXPORT)
         {
             n++;
         }
@@ -2009,7 +2015,7 @@ njs_parser_export_sink(njs_vm_t *vm, njs_parser_t *parser)
 
     node = njs_parser_chain_top(parser);
 
-    if (node->right && node->right->token == NJS_TOKEN_EXPORT) {
+    if (node->right && node->right->token_type == NJS_TOKEN_EXPORT) {
         return NJS_OK;
     }
 
@@ -2019,7 +2025,7 @@ njs_parser_export_sink(njs_vm_t *vm, njs_parser_t *parser)
         node = prev->left;
 
         if (node->right != NULL
-            && node->right->token == NJS_TOKEN_EXPORT)
+            && node->right->token_type == NJS_TOKEN_EXPORT)
         {
             prev->left = node->left;
             break;
@@ -2035,81 +2041,81 @@ njs_parser_export_sink(njs_vm_t *vm, njs_parser_t *parser)
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_grouping_expression(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t  token;
+    njs_token_type_t  type;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_OPEN_PARENTHESIS);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_OPEN_PARENTHESIS);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    token = njs_parser_expression(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_expression(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    return njs_parser_match(vm, parser, token, NJS_TOKEN_CLOSE_PARENTHESIS);
+    return njs_parser_match(vm, parser, type, NJS_TOKEN_CLOSE_PARENTHESIS);
 }
 
 
 njs_int_t
 njs_parser_match_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     size_t      offset;
     njs_bool_t  rest_parameters;
 
-    if (token != NJS_TOKEN_OPEN_PARENTHESIS && token != NJS_TOKEN_NAME) {
+    if (type != NJS_TOKEN_OPEN_PARENTHESIS && type != NJS_TOKEN_NAME) {
         return NJS_DECLINED;
     }
 
     offset = 0;
 
-    if (token == NJS_TOKEN_NAME) {
+    if (type == NJS_TOKEN_NAME) {
         goto arrow;
     }
 
-    token = njs_parser_peek_token(vm, parser, &offset);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+    type = njs_parser_peek_token(vm, parser, &offset);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
         return NJS_DECLINED;
     }
 
     rest_parameters = 0;
 
-    while (token != NJS_TOKEN_CLOSE_PARENTHESIS) {
+    while (type != NJS_TOKEN_CLOSE_PARENTHESIS) {
 
         if (rest_parameters) {
             return NJS_DECLINED;
         }
 
-        if (njs_slow_path(token == NJS_TOKEN_ELLIPSIS)) {
+        if (njs_slow_path(type == NJS_TOKEN_ELLIPSIS)) {
             rest_parameters = 1;
 
-            token = njs_parser_peek_token(vm, parser, &offset);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+            type = njs_parser_peek_token(vm, parser, &offset);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
                 return NJS_DECLINED;
             }
         }
 
-        if (njs_slow_path(token != NJS_TOKEN_NAME)) {
+        if (njs_slow_path(type != NJS_TOKEN_NAME)) {
             return NJS_DECLINED;
         }
 
-        token = njs_parser_peek_token(vm, parser, &offset);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_peek_token(vm, parser, &offset);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (token == NJS_TOKEN_COMMA) {
-            token = njs_parser_peek_token(vm, parser, &offset);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+        if (type == NJS_TOKEN_COMMA) {
+            type = njs_parser_peek_token(vm, parser, &offset);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
                return NJS_DECLINED;
             }
         }
@@ -2117,16 +2123,16 @@ njs_parser_match_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
 
 arrow:
 
-    token = njs_parser_peek_token(vm, parser, &offset);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+    type = njs_parser_peek_token(vm, parser, &offset);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
         return NJS_DECLINED;
     }
 
-    if (parser->lexer->prev_token == NJS_TOKEN_LINE_END) {
+    if (parser->lexer->prev_type == NJS_TOKEN_LINE_END) {
         return NJS_DECLINED;
     }
 
-    if (njs_slow_path(token != NJS_TOKEN_ARROW)) {
+    if (njs_slow_path(type != NJS_TOKEN_ARROW)) {
         return NJS_DECLINED;
     }
 
@@ -2134,9 +2140,9 @@ arrow:
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     njs_int_t              ret;
     njs_index_t            index;
@@ -2170,42 +2176,42 @@ njs_parser_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
     /* A "this" reservation. */
     index += sizeof(njs_value_t);
 
-    if (token == NJS_TOKEN_OPEN_PARENTHESIS) {
-        token = njs_parser_lambda_arguments(vm, parser, lambda, index, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+    if (type == NJS_TOKEN_OPEN_PARENTHESIS) {
+        type = njs_parser_lambda_arguments(vm, parser, lambda, index, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
     } else {
-        token = njs_parser_lambda_argument(vm, parser, index);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_lambda_argument(vm, parser, index);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         lambda->nargs = 1;
     }
 
-    if (parser->lexer->prev_token == NJS_TOKEN_LINE_END) {
+    if (parser->lexer->prev_type == NJS_TOKEN_LINE_END) {
         return NJS_TOKEN_ILLEGAL;
     }
 
-    token = njs_parser_match(vm, parser, token, NJS_TOKEN_ARROW);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_match(vm, parser, type, NJS_TOKEN_ARROW);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token == NJS_TOKEN_OPEN_BRACE) {
-        token = njs_parser_lambda_body(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+    if (type == NJS_TOKEN_OPEN_BRACE) {
+        type = njs_parser_lambda_body(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
     } else {
         parent = parser->node;
 
-        token = njs_parser_assignment_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_assignment_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         body = njs_parser_return_set(vm, parser, parser->node);
@@ -2219,7 +2225,7 @@ njs_parser_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
 
     njs_parser_scope_end(vm, parser);
 
-    return token;
+    return type;
 }
 
 
@@ -2232,14 +2238,14 @@ njs_parser_has_side_effect(njs_parser_node_t *node)
         return 0;
     }
 
-    if (node->token >= NJS_TOKEN_ASSIGNMENT
-        && node->token <= NJS_TOKEN_LAST_ASSIGNMENT)
+    if (node->token_type >= NJS_TOKEN_ASSIGNMENT
+        && node->token_type <= NJS_TOKEN_LAST_ASSIGNMENT)
     {
         return 1;
     }
 
-    if (node->token == NJS_TOKEN_FUNCTION_CALL
-        || node->token == NJS_TOKEN_METHOD_CALL)
+    if (node->token_type == NJS_TOKEN_FUNCTION_CALL
+        || node->token_type == NJS_TOKEN_METHOD_CALL)
     {
         return 1;
     }
@@ -2254,11 +2260,11 @@ njs_parser_has_side_effect(njs_parser_node_t *node)
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_unexpected_token(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
-    if (token != NJS_TOKEN_END) {
+    if (type != NJS_TOKEN_END) {
         njs_parser_syntax_error(vm, parser, "Unexpected token \"%V\"",
                                 njs_parser_text(parser));
 
index c04c5029b0ab2e3961c615923f028449546390ba..541eeaeccbf1a80e172bea9345696d500d4ee35e 100644 (file)
@@ -37,7 +37,7 @@ struct njs_parser_scope_s {
 
 
 struct njs_parser_node_s {
-    njs_token_t                     token:16;
+    njs_token_type_t                token_type:16;
     uint8_t                         ctor:1;
     uint8_t                         temporary;    /* 1 bit  */
     uint8_t                         hoist;        /* 1 bit  */
@@ -88,33 +88,34 @@ intptr_t njs_parser_scope_rbtree_compare(njs_rbtree_node_t *node1,
     njs_rbtree_node_t *node2);
 njs_int_t njs_parser(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_t *prev);
-njs_token_t njs_parser_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
-njs_token_t njs_parser_assignment_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
-njs_token_t njs_parser_function_expression(njs_vm_t *vm, njs_parser_t *parser);
+njs_token_type_t njs_parser_expression(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type);
+njs_token_type_t njs_parser_assignment_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+njs_token_type_t njs_parser_function_expression(njs_vm_t *vm,
+    njs_parser_t *parser);
 njs_int_t njs_parser_match_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
-njs_token_t njs_parser_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
-njs_token_t njs_parser_module_lambda(njs_vm_t *vm, njs_parser_t *parser);
-njs_token_t njs_parser_terminal(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
-njs_token_t njs_parser_template_literal(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type);
+njs_token_type_t njs_parser_arrow_expression(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type);
+njs_token_type_t njs_parser_module_lambda(njs_vm_t *vm, njs_parser_t *parser);
+njs_token_type_t njs_parser_terminal(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type);
+njs_token_type_t njs_parser_template_literal(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *parent);
 njs_parser_node_t *njs_parser_argument(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *expr, njs_index_t index);
 njs_int_t njs_parser_string_create(njs_vm_t *vm, njs_value_t *value);
-njs_token_t njs_parser_function_lambda(njs_vm_t *vm, njs_parser_t *parser,
-    njs_function_lambda_t *lambda, njs_token_t token);
-njs_token_t njs_parser_lambda_statements(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
+njs_token_type_t njs_parser_function_lambda(njs_vm_t *vm, njs_parser_t *parser,
+    njs_function_lambda_t *lambda, njs_token_type_t type);
+njs_token_type_t njs_parser_lambda_statements(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
 njs_variable_t *njs_variable_resolve(njs_vm_t *vm, njs_parser_node_t *node);
 njs_index_t njs_variable_typeof(njs_vm_t *vm, njs_parser_node_t *node);
 njs_index_t njs_variable_index(njs_vm_t *vm, njs_parser_node_t *node);
 njs_bool_t njs_parser_has_side_effect(njs_parser_node_t *node);
-njs_token_t njs_parser_unexpected_token(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token);
+njs_token_type_t njs_parser_unexpected_token(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type);
 u_char *njs_parser_trace_handler(njs_trace_t *trace, njs_trace_data_t *td,
     u_char *start);
 void njs_parser_lexer_error(njs_vm_t *vm, njs_parser_t *parser,
@@ -140,7 +141,8 @@ void njs_parser_node_error(njs_vm_t *vm, njs_parser_node_t *node,
 
 
 #define njs_parser_is_lvalue(node)                                            \
-    ((node)->token == NJS_TOKEN_NAME || (node)->token == NJS_TOKEN_PROPERTY)
+    ((node)->token_type == NJS_TOKEN_NAME                                     \
+     || (node)->token_type == NJS_TOKEN_PROPERTY)
 
 
 #define njs_scope_accumulative(vm, scope)                                     \
@@ -173,41 +175,41 @@ void njs_parser_node_error(njs_vm_t *vm, njs_parser_node_t *node,
                            ##__VA_ARGS__)
 
 
-njs_inline njs_token_t
+njs_inline njs_token_type_t
 njs_parser_token(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t  token;
+    njs_token_type_t  type;
 
     do {
-        token = njs_lexer_token(vm, parser->lexer);
-    } while (njs_slow_path(token == NJS_TOKEN_LINE_END));
+        type = njs_lexer_token(vm, parser->lexer);
+    } while (njs_slow_path(type == NJS_TOKEN_LINE_END));
 
-    return token;
+    return type;
 }
 
 
-njs_inline njs_token_t
+njs_inline njs_token_type_t
 njs_parser_peek_token(njs_vm_t *vm, njs_parser_t *parser, size_t *offset)
 {
-    njs_token_t  token;
+    njs_token_type_t  type;
 
     do {
-        token = njs_lexer_peek_token(vm, parser->lexer, (*offset)++);
-    } while (njs_slow_path(token == NJS_TOKEN_LINE_END));
+        type = njs_lexer_peek_token(vm, parser->lexer, (*offset)++);
+    } while (njs_slow_path(type == NJS_TOKEN_LINE_END));
 
-    return token;
+    return type;
 }
 
 
 njs_inline njs_parser_node_t *
-njs_parser_node_new(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
+njs_parser_node_new(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type)
 {
     njs_parser_node_t  *node;
 
     node = njs_mp_zalloc(vm->mem_pool, sizeof(njs_parser_node_t));
 
     if (njs_fast_path(node != NULL)) {
-        node->token = token;
+        node->token_type = type;
         node->scope = parser->scope;
     }
 
@@ -235,20 +237,20 @@ njs_parser_node_string(njs_vm_t *vm, njs_parser_t *parser)
 }
 
 
-njs_inline njs_token_t
-njs_parser_match(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
-    njs_token_t match)
+njs_inline njs_token_type_t
+njs_parser_match(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type,
+    njs_token_type_t match)
 {
-    if (njs_fast_path(token == match)) {
+    if (njs_fast_path(type == match)) {
         return njs_parser_token(vm, parser);
     }
 
-    return njs_parser_unexpected_token(vm, parser, token);
+    return njs_parser_unexpected_token(vm, parser, type);
 }
 
 
-njs_inline njs_token_t
-njs_parser_match_name(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
+njs_inline njs_token_type_t
+njs_parser_match_name(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type,
     const char *name)
 {
     size_t     len;
@@ -257,14 +259,14 @@ njs_parser_match_name(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
     len = njs_strlen(name);
     text = njs_parser_text(parser);
 
-    if (njs_fast_path(token == NJS_TOKEN_NAME
+    if (njs_fast_path(type == NJS_TOKEN_NAME
                       && text->length == len
                       && memcmp(text->start, name, len) == 0))
     {
         return njs_parser_token(vm, parser);
     }
 
-    return njs_parser_unexpected_token(vm, parser, token);
+    return njs_parser_unexpected_token(vm, parser, type);
 }
 
 
index b83a3573c26a333334e8fb4406f961594ae3c78a..349b809bc146bec618330b89393fd8b3ec6b00cb 100644 (file)
@@ -9,7 +9,7 @@
 
 
 typedef struct {
-    njs_token_t                    token;
+    njs_token_type_t               type;
     njs_vmcode_operation_t         operation;
 } njs_parser_operation_t;
 
@@ -17,10 +17,10 @@ typedef struct {
 typedef struct njs_parser_expression_s  njs_parser_expression_t;
 
 struct njs_parser_expression_s {
-    njs_token_t                    (*next)(njs_vm_t *,
+    njs_token_type_t               (*next)(njs_vm_t *,
                                        njs_parser_t *,
                                        const njs_parser_expression_t *,
-                                       njs_token_t);
+                                       njs_token_type_t);
     const njs_parser_expression_t  *expression;
     njs_uint_t                     count;
 
@@ -36,37 +36,37 @@ struct njs_parser_expression_s {
 };
 
 
-static njs_token_t njs_parser_any_expression(njs_vm_t *vm,
+static njs_token_type_t njs_parser_any_expression(njs_vm_t *vm,
     njs_parser_t *parser, const njs_parser_expression_t *expr,
-    njs_token_t token);
-static njs_token_t njs_parser_conditional_expression(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_coalesce_expression(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_binary_expression(njs_vm_t *vm,
+    njs_token_type_t type);
+static njs_token_type_t njs_parser_conditional_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_coalesce_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_binary_expression(njs_vm_t *vm,
     njs_parser_t *parser, const njs_parser_expression_t *expr,
-    njs_token_t token);
-static njs_token_t njs_parser_exponential_expression(njs_vm_t *vm,
+    njs_token_type_t type);
+static njs_token_type_t njs_parser_exponential_expression(njs_vm_t *vm,
     njs_parser_t *parser, const njs_parser_expression_t *expr,
-    njs_token_t token);
-static njs_token_t njs_parser_unary_expression(njs_vm_t *vm,
+    njs_token_type_t type);
+static njs_token_type_t njs_parser_unary_expression(njs_vm_t *vm,
     njs_parser_t *parser, const njs_parser_expression_t *expr,
-    njs_token_t token);
-static njs_token_t njs_parser_inc_dec_expression(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_post_inc_dec_expression(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_call_expression(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_new_expression(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_property_expression(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_property_brackets(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token);
-static njs_token_t njs_parser_call(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token, uint8_t ctor);
-static njs_token_t njs_parser_arguments(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type);
+static njs_token_type_t njs_parser_inc_dec_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_post_inc_dec_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_call_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_new_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_property_expression(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_property_brackets(njs_vm_t *vm,
+    njs_parser_t *parser, njs_token_type_t type);
+static njs_token_type_t njs_parser_call(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t type, uint8_t ctor);
+static njs_token_type_t njs_parser_arguments(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *parent);
 
 
@@ -204,41 +204,41 @@ static const njs_parser_expression_t
 };
 
 
-njs_token_t
-njs_parser_expression(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
+njs_token_type_t
+njs_parser_expression(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type)
 {
     return njs_parser_binary_expression(vm, parser,
-                                        &njs_parser_comma_expression, token);
+                                        &njs_parser_comma_expression, type);
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_any_expression(njs_vm_t *vm, njs_parser_t *parser,
-    const njs_parser_expression_t *expr, njs_token_t token)
+    const njs_parser_expression_t *expr, njs_token_type_t type)
 {
-    return njs_parser_assignment_expression(vm, parser, token);
+    return njs_parser_assignment_expression(vm, parser, type);
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_assignment_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     njs_parser_node_t       *node;
     njs_vmcode_operation_t  operation;
 
     njs_parser_enter(vm, parser);
 
-    token = njs_parser_conditional_expression(vm, parser, token);
+    type = njs_parser_conditional_expression(vm, parser, type);
 
     njs_parser_leave(parser);
 
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     for ( ;; ) {
-        switch (token) {
+        switch (type) {
 
         case NJS_TOKEN_ASSIGNMENT:
             njs_thread_log_debug("JS: =");
@@ -306,17 +306,17 @@ njs_parser_assignment_expression(njs_vm_t *vm, njs_parser_t *parser,
             break;
 
         default:
-            return token;
+            return type;
         }
 
         if (!njs_parser_is_lvalue(parser->node)) {
-            token = parser->node->token;
+            type = parser->node->token_type;
 
-            if (njs_parser_restricted_identifier(token)) {
+            if (njs_parser_restricted_identifier(type)) {
                 njs_parser_syntax_error(vm, parser, "Identifier \"%s\" "
                                       "is forbidden as left-hand in assignment",
-                                       (token == NJS_TOKEN_EVAL) ? "eval"
-                                                                 : "arguments");
+                                       (type == NJS_TOKEN_EVAL) ? "eval"
+                                                                : "arguments");
 
             } else {
                 njs_parser_ref_error(vm, parser,
@@ -326,7 +326,7 @@ njs_parser_assignment_expression(njs_vm_t *vm, njs_parser_t *parser,
             return NJS_TOKEN_ILLEGAL;
         }
 
-        node = njs_parser_node_new(vm, parser, token);
+        node = njs_parser_node_new(vm, parser, type);
         if (njs_slow_path(node == NULL)) {
             return NJS_TOKEN_ERROR;
         }
@@ -334,19 +334,19 @@ njs_parser_assignment_expression(njs_vm_t *vm, njs_parser_t *parser,
         node->u.operation = operation;
         node->left = parser->node;
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         njs_parser_enter(vm, parser);
 
-        token = njs_parser_assignment_expression(vm, parser, token);
+        type = njs_parser_assignment_expression(vm, parser, type);
 
         njs_parser_leave(parser);
 
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node->right = parser->node;
@@ -355,25 +355,25 @@ njs_parser_assignment_expression(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_conditional_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     njs_parser_node_t  *node, *cond;
 
-    token = njs_parser_coalesce_expression(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_coalesce_expression(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     for ( ;; ) {
-        if (token != NJS_TOKEN_CONDITIONAL) {
-            return token;
+        if (type != NJS_TOKEN_CONDITIONAL) {
+            return type;
         }
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         cond = njs_parser_node_new(vm, parser, NJS_TOKEN_CONDITIONAL);
@@ -390,26 +390,26 @@ njs_parser_conditional_expression(njs_vm_t *vm, njs_parser_t *parser,
 
         cond->right = node;
 
-        token = njs_parser_assignment_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_assignment_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (njs_slow_path(token != NJS_TOKEN_COLON)) {
+        if (njs_slow_path(type != NJS_TOKEN_COLON)) {
             return NJS_TOKEN_ILLEGAL;
         }
 
         node->left = parser->node;
         node->left->dest = cond;
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        token = njs_parser_assignment_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_assignment_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node->right = parser->node;
@@ -420,26 +420,26 @@ njs_parser_conditional_expression(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_coalesce_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
-    njs_token_t        prev_token, next_token;
+    njs_token_type_t   prev_token, next_token;
     njs_parser_node_t  *node;
 
-    token = njs_parser_binary_expression(vm, parser,
-                                         &njs_parser_logical_or_expression,
-                                         token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_binary_expression(vm, parser,
+                                        &njs_parser_logical_or_expression,
+                                        type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     for ( ;; ) {
-        if (token != NJS_TOKEN_COALESCE) {
-            return token;
+        if (type != NJS_TOKEN_COALESCE) {
+            return type;
         }
 
-        prev_token = parser->lexer->prev_token;
+        prev_token = parser->lexer->prev_type;
 
         node = njs_parser_node_new(vm, parser, NJS_TOKEN_COALESCE);
         if (njs_slow_path(node == NULL)) {
@@ -450,18 +450,18 @@ njs_parser_coalesce_expression(njs_vm_t *vm, njs_parser_t *parser,
         node->left = parser->node;
         node->left->dest = node;
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        next_token = token;
+        next_token = type;
 
-        token = njs_parser_binary_expression(vm, parser,
-                                             &njs_parser_logical_or_expression,
-                                             token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_binary_expression(vm, parser,
+                                            &njs_parser_logical_or_expression,
+                                            type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node->right = parser->node;
@@ -469,18 +469,18 @@ njs_parser_coalesce_expression(njs_vm_t *vm, njs_parser_t *parser,
         parser->node = node;
 
         if (prev_token != NJS_TOKEN_CLOSE_PARENTHESIS
-            && njs_slow_path(node->left->token == NJS_TOKEN_LOGICAL_OR
-                             || node->left->token == NJS_TOKEN_LOGICAL_AND))
+            && njs_slow_path(node->left->token_type == NJS_TOKEN_LOGICAL_OR
+                            || node->left->token_type == NJS_TOKEN_LOGICAL_AND))
         {
-            token = node->left->token;
+            type = node->left->token_type;
             goto require_parentheses;
         }
 
         if (next_token != NJS_TOKEN_OPEN_PARENTHESIS
-            && njs_slow_path(node->right->token == NJS_TOKEN_LOGICAL_OR
-                             || node->right->token == NJS_TOKEN_LOGICAL_AND))
+            && njs_slow_path(node->right->token_type == NJS_TOKEN_LOGICAL_OR
+                           || node->right->token_type == NJS_TOKEN_LOGICAL_AND))
         {
-            token = node->right->token;
+            type = node->right->token_type;
             goto require_parentheses;
         }
     }
@@ -489,23 +489,23 @@ require_parentheses:
 
     njs_parser_syntax_error(vm, parser, "Either \"??\" or \"%s\" expression "
                                         "must be parenthesized",
-                                        (token == NJS_TOKEN_LOGICAL_OR) ? "||"
-                                                                        : "&&");
+                                        (type == NJS_TOKEN_LOGICAL_OR) ? "||"
+                                                                       : "&&");
     return NJS_TOKEN_ILLEGAL;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_binary_expression(njs_vm_t *vm, njs_parser_t *parser,
-    const njs_parser_expression_t *expr, njs_token_t token)
+    const njs_parser_expression_t *expr, njs_token_type_t type)
 {
     njs_int_t                     n;
     njs_parser_node_t             *node;
     const njs_parser_operation_t  *op;
 
-    token = expr->next(vm, parser, expr->expression, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = expr->next(vm, parser, expr->expression, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     for ( ;; ) {
@@ -513,7 +513,7 @@ njs_parser_binary_expression(njs_vm_t *vm, njs_parser_t *parser,
         op = expr->op;
 
         do {
-            if (op->token == token) {
+            if (op->type == type) {
                 goto found;
             }
 
@@ -522,11 +522,11 @@ njs_parser_binary_expression(njs_vm_t *vm, njs_parser_t *parser,
 
         } while (n != 0);
 
-        return token;
+        return type;
 
     found:
 
-        node = njs_parser_node_new(vm, parser, token);
+        node = njs_parser_node_new(vm, parser, type);
         if (njs_slow_path(node == NULL)) {
             return NJS_TOKEN_ERROR;
         }
@@ -535,14 +535,14 @@ njs_parser_binary_expression(njs_vm_t *vm, njs_parser_t *parser,
         node->left = parser->node;
         node->left->dest = node;
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        token = expr->next(vm, parser, expr->expression, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = expr->next(vm, parser, expr->expression, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node->right = parser->node;
@@ -552,20 +552,20 @@ njs_parser_binary_expression(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_exponential_expression(njs_vm_t *vm, njs_parser_t *parser,
-    const njs_parser_expression_t *expr, njs_token_t token)
+    const njs_parser_expression_t *expr, njs_token_type_t type)
 {
     njs_parser_node_t  *node;
 
-    token = njs_parser_unary_expression(vm, parser, NULL, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_unary_expression(vm, parser, NULL, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (token == NJS_TOKEN_EXPONENTIATION) {
+    if (type == NJS_TOKEN_EXPONENTIATION) {
 
-        node = njs_parser_node_new(vm, parser, token);
+        node = njs_parser_node_new(vm, parser, type);
         if (njs_slow_path(node == NULL)) {
             return NJS_TOKEN_ERROR;
         }
@@ -574,19 +574,19 @@ njs_parser_exponential_expression(njs_vm_t *vm, njs_parser_t *parser,
         node->left = parser->node;
         node->left->dest = node;
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         njs_parser_enter(vm, parser);
 
-        token = njs_parser_exponential_expression(vm, parser, NULL, token);
+        type = njs_parser_exponential_expression(vm, parser, NULL, type);
 
         njs_parser_leave(parser);
 
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node->right = parser->node;
@@ -594,28 +594,28 @@ njs_parser_exponential_expression(njs_vm_t *vm, njs_parser_t *parser,
         parser->node = node;
     }
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_unary_expression(njs_vm_t *vm, njs_parser_t *parser,
-    const njs_parser_expression_t *expr, njs_token_t token)
+    const njs_parser_expression_t *expr, njs_token_type_t type)
 {
     double                  num;
-    njs_token_t             next;
+    njs_token_type_t        next;
     njs_parser_node_t       *node;
     njs_vmcode_operation_t  operation;
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_ADDITION:
-        token = NJS_TOKEN_UNARY_PLUS;
+        type = NJS_TOKEN_UNARY_PLUS;
         operation = NJS_VMCODE_UNARY_PLUS;
         break;
 
     case NJS_TOKEN_SUBSTRACTION:
-        token = NJS_TOKEN_UNARY_NEGATION;
+        type = NJS_TOKEN_UNARY_NEGATION;
         operation = NJS_VMCODE_UNARY_NEGATION;
         break;
 
@@ -640,7 +640,7 @@ njs_parser_unary_expression(njs_vm_t *vm, njs_parser_t *parser,
         break;
 
     default:
-        return njs_parser_inc_dec_expression(vm, parser, token);
+        return njs_parser_inc_dec_expression(vm, parser, type);
     }
 
     next = njs_parser_token(vm, parser);
@@ -667,13 +667,14 @@ njs_parser_unary_expression(njs_vm_t *vm, njs_parser_t *parser,
 
     node = parser->node;
 
-    if (token == NJS_TOKEN_UNARY_PLUS && node->token == NJS_TOKEN_NUMBER) {
+    if (type == NJS_TOKEN_UNARY_PLUS && node->token_type == NJS_TOKEN_NUMBER) {
         /* Skip the unary plus of number. */
         return next;
     }
 
-    if (token == NJS_TOKEN_UNARY_NEGATION && node->token == NJS_TOKEN_NUMBER) {
-
+    if (type == NJS_TOKEN_UNARY_NEGATION
+        && node->token_type == NJS_TOKEN_NUMBER)
+    {
         /* Optimization of common negative number. */
         num = -njs_number(&node->u.value);
         njs_set_number(&node->u.value, num);
@@ -681,12 +682,12 @@ njs_parser_unary_expression(njs_vm_t *vm, njs_parser_t *parser,
         return next;
     }
 
-    if (token == NJS_TOKEN_DELETE) {
+    if (type == NJS_TOKEN_DELETE) {
 
-        switch (node->token) {
+        switch (node->token_type) {
 
         case NJS_TOKEN_PROPERTY:
-            node->token = NJS_TOKEN_PROPERTY_DELETE;
+            node->token_type = NJS_TOKEN_PROPERTY_DELETE;
             node->u.operation = NJS_VMCODE_PROPERTY_DELETE;
 
             return next;
@@ -702,11 +703,11 @@ njs_parser_unary_expression(njs_vm_t *vm, njs_parser_t *parser,
         }
     }
 
-    if (token == NJS_TOKEN_TYPEOF && node->token == NJS_TOKEN_NAME) {
+    if (type == NJS_TOKEN_TYPEOF && node->token_type == NJS_TOKEN_NAME) {
         node->u.reference.type = NJS_TYPEOF;
     }
 
-    node = njs_parser_node_new(vm, parser, token);
+    node = njs_parser_node_new(vm, parser, type);
     if (njs_slow_path(node == NULL)) {
         return NJS_TOKEN_ERROR;
     }
@@ -720,15 +721,15 @@ njs_parser_unary_expression(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_inc_dec_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
-    njs_token_t             next;
+    njs_token_type_t        next;
     njs_parser_node_t       *node;
     njs_vmcode_operation_t  operation;
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_INCREMENT:
         operation = NJS_VMCODE_INCREMENT;
@@ -739,7 +740,7 @@ njs_parser_inc_dec_expression(njs_vm_t *vm, njs_parser_t *parser,
         break;
 
     default:
-        return njs_parser_post_inc_dec_expression(vm, parser, token);
+        return njs_parser_post_inc_dec_expression(vm, parser, type);
     }
 
     next = njs_parser_token(vm, parser);
@@ -758,7 +759,7 @@ njs_parser_inc_dec_expression(njs_vm_t *vm, njs_parser_t *parser,
         return NJS_TOKEN_ILLEGAL;
     }
 
-    node = njs_parser_node_new(vm, parser, token);
+    node = njs_parser_node_new(vm, parser, type);
     if (njs_slow_path(node == NULL)) {
         return NJS_TOKEN_ERROR;
     }
@@ -771,38 +772,38 @@ njs_parser_inc_dec_expression(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_post_inc_dec_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     njs_int_t               ret;
     njs_parser_node_t       *node;
     njs_vmcode_operation_t  operation;
 
-    token = njs_parser_call_expression(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_call_expression(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_INCREMENT:
-        token = NJS_TOKEN_POST_INCREMENT;
+        type = NJS_TOKEN_POST_INCREMENT;
         operation = NJS_VMCODE_POST_INCREMENT;
         break;
 
     case NJS_TOKEN_DECREMENT:
-        token = NJS_TOKEN_POST_DECREMENT;
+        type = NJS_TOKEN_POST_DECREMENT;
         operation = NJS_VMCODE_POST_DECREMENT;
         break;
 
     default:
-        return token;
+        return type;
     }
 
     /* Automatic semicolon insertion. */
 
-    if (parser->lexer->prev_token == NJS_TOKEN_LINE_END) {
+    if (parser->lexer->prev_type == NJS_TOKEN_LINE_END) {
         ret = njs_lexer_rollback(vm, parser->lexer);
         if (njs_slow_path(ret != NJS_OK)) {
             return NJS_TOKEN_ERROR;
@@ -817,7 +818,7 @@ njs_parser_post_inc_dec_expression(njs_vm_t *vm, njs_parser_t *parser,
         return NJS_TOKEN_ILLEGAL;
     }
 
-    node = njs_parser_node_new(vm, parser, token);
+    node = njs_parser_node_new(vm, parser, type);
     if (njs_slow_path(node == NULL)) {
         return NJS_TOKEN_ERROR;
     }
@@ -830,61 +831,61 @@ njs_parser_post_inc_dec_expression(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_call_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     njs_parser_enter(vm, parser);
 
-    if (token == NJS_TOKEN_NEW) {
-        token = njs_parser_new_expression(vm, parser, token);
+    if (type == NJS_TOKEN_NEW) {
+        type = njs_parser_new_expression(vm, parser, type);
 
     } else {
-        token = njs_parser_terminal(vm, parser, token);
+        type = njs_parser_terminal(vm, parser, type);
     }
 
     njs_parser_leave(parser);
 
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     for ( ;; ) {
-        token = njs_parser_property_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_property_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (token != NJS_TOKEN_OPEN_PARENTHESIS && token != NJS_TOKEN_GRAVE) {
-            return token;
+        if (type != NJS_TOKEN_OPEN_PARENTHESIS && type != NJS_TOKEN_GRAVE) {
+            return type;
         }
 
         njs_parser_enter(vm, parser);
 
-        token = njs_parser_call(vm, parser, token, 0);
+        type = njs_parser_call(vm, parser, type, 0);
 
         njs_parser_leave(parser);
 
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
     }
 }
 
 
-static njs_token_t
-njs_parser_call(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
+static njs_token_type_t
+njs_parser_call(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type,
     uint8_t ctor)
 {
     njs_parser_node_t  *func, *node;
 
     node = parser->node;
 
-    switch (node->token) {
+    switch (node->token_type) {
 
     case NJS_TOKEN_NAME:
         func = node;
-        func->token = NJS_TOKEN_FUNCTION_CALL;
+        func->token_type = NJS_TOKEN_FUNCTION_CALL;
 
         break;
 
@@ -918,20 +919,20 @@ njs_parser_call(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
 
     func->ctor = ctor;
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_OPEN_PARENTHESIS:
-        token = njs_parser_arguments(vm, parser, func);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_arguments(vm, parser, func);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         break;
 
     case NJS_TOKEN_GRAVE:
-        token = njs_parser_template_literal(vm, parser, func);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_template_literal(vm, parser, func);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         break;
@@ -942,55 +943,55 @@ njs_parser_call(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
 
     parser->node = func;
 
-    return token;
+    return type;
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_new_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
     njs_parser_enter(vm, parser);
 
-    if (token == NJS_TOKEN_NEW) {
-        token = njs_parser_new_expression(vm, parser, token);
+    if (type == NJS_TOKEN_NEW) {
+        type = njs_parser_new_expression(vm, parser, type);
 
     } else {
-        token = njs_parser_terminal(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+        type = njs_parser_terminal(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
             njs_parser_leave(parser);
-            return token;
+            return type;
         }
 
-        token = njs_parser_property_expression(vm, parser, token);
+        type = njs_parser_property_expression(vm, parser, type);
     }
 
     njs_parser_leave(parser);
 
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    return njs_parser_call(vm, parser, token, 1);
+    return njs_parser_call(vm, parser, type, 1);
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_property_expression(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
     njs_parser_node_t  *node, *prop_node;
 
     for ( ;; ) {
-        if (token != NJS_TOKEN_DOT
-            && token != NJS_TOKEN_OPEN_BRACKET)
+        if (type != NJS_TOKEN_DOT
+            && type != NJS_TOKEN_OPEN_BRACKET)
         {
-            return token;
+            return type;
         }
 
         node = njs_parser_node_new(vm, parser, NJS_TOKEN_PROPERTY);
@@ -1001,10 +1002,10 @@ njs_parser_property_expression(njs_vm_t *vm, njs_parser_t *parser,
         node->u.operation = NJS_VMCODE_PROPERTY_GET;
         node->left = parser->node;
 
-        if (token == NJS_TOKEN_DOT) {
-            token = njs_parser_token(vm, parser);
+        if (type == NJS_TOKEN_DOT) {
+            type = njs_parser_token(vm, parser);
 
-            if (token != NJS_TOKEN_NAME && !parser->lexer->keyword) {
+            if (type != NJS_TOKEN_NAME && !parser->lexer->keyword) {
                 return NJS_TOKEN_ILLEGAL;
             }
 
@@ -1013,20 +1014,20 @@ njs_parser_property_expression(njs_vm_t *vm, njs_parser_t *parser,
                 return NJS_TOKEN_ERROR;
             }
 
-            token = njs_parser_token(vm, parser);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_token(vm, parser);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
         } else {
-            token = njs_parser_token(vm, parser);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_token(vm, parser);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
-            token = njs_parser_property_brackets(vm, parser, token);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_property_brackets(vm, parser, type);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
             prop_node = parser->node;
@@ -1038,16 +1039,16 @@ njs_parser_property_expression(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_property_brackets(njs_vm_t *vm, njs_parser_t *parser,
-    njs_token_t token)
+    njs_token_type_t type)
 {
-    token = njs_parser_expression(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-        return token;
+    type = njs_parser_expression(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+        return type;
     }
 
-    if (njs_slow_path(token != NJS_TOKEN_CLOSE_BRACKET)) {
+    if (njs_slow_path(type != NJS_TOKEN_CLOSE_BRACKET)) {
         return NJS_TOKEN_ERROR;
     }
 
@@ -1055,29 +1056,29 @@ njs_parser_property_brackets(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_arguments(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *parent)
 {
-    njs_token_t        token;
     njs_index_t        index;
+    njs_token_type_t   type;
     njs_parser_node_t  *node;
 
     index = NJS_SCOPE_CALLEE_ARGUMENTS;
 
     do {
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (token == NJS_TOKEN_CLOSE_PARENTHESIS) {
+        if (type == NJS_TOKEN_CLOSE_PARENTHESIS) {
             break;
         }
 
-        token = njs_parser_assignment_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_assignment_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         node = njs_parser_argument(vm, parser, parser->node, index);
@@ -1090,9 +1091,9 @@ njs_parser_arguments(njs_vm_t *vm, njs_parser_t *parser,
 
         index += sizeof(njs_value_t);
 
-    } while (token == NJS_TOKEN_COMMA);
+    } while (type == NJS_TOKEN_COMMA);
 
-    if (njs_slow_path(token != NJS_TOKEN_CLOSE_PARENTHESIS)) {
+    if (njs_slow_path(type != NJS_TOKEN_CLOSE_PARENTHESIS)) {
         return NJS_TOKEN_ILLEGAL;
     }
 
index c079f72044e8b3a23ea38e46303bcfd91937ffc9..47e64b5e02261546ff006756e86c28f0020dd9d5 100644 (file)
@@ -9,9 +9,9 @@
 
 
 static njs_parser_node_t *njs_parser_reference(njs_vm_t *vm,
-    njs_parser_t *parser, njs_token_t token, njs_str_t *name,
+    njs_parser_t *parser, njs_token_type_t type, njs_str_t *name,
     uintptr_t hash, uint32_t token_line);
-static njs_token_t njs_parser_object(njs_vm_t *vm, njs_parser_t *parser,
+static njs_token_type_t njs_parser_object(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *obj);
 static njs_int_t njs_parser_object_property(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *parent, njs_parser_node_t *property,
@@ -19,8 +19,8 @@ static njs_int_t njs_parser_object_property(njs_vm_t *vm, njs_parser_t *parser,
 static njs_int_t njs_parser_property_accessor(njs_vm_t *vm,
     njs_parser_t *parser, njs_parser_node_t *parent,
     njs_parser_node_t *property, njs_parser_node_t *value,
-    njs_token_t accessor);
-static njs_token_t njs_parser_array(njs_vm_t *vm, njs_parser_t *parser,
+    njs_token_type_t accessor);
+static njs_token_type_t njs_parser_array(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *array);
 static njs_int_t njs_parser_array_item(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *array, njs_parser_node_t *value);
@@ -30,42 +30,42 @@ static njs_int_t njs_parser_template_string(njs_vm_t *vm,
     njs_parser_t *parser);
 static njs_int_t njs_parser_escape_string_calc_length(njs_vm_t *vm,
     njs_parser_t *parser, size_t *out_size, size_t *out_length);
-static njs_token_t njs_parser_escape_string_create(njs_vm_t *vm,
+static njs_token_type_t njs_parser_escape_string_create(njs_vm_t *vm,
     njs_parser_t *parser, njs_value_t *value);
 
 
-njs_token_t
-njs_parser_terminal(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
+njs_token_type_t
+njs_parser_terminal(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type)
 {
     double             num;
     njs_int_t          ret;
     njs_parser_node_t  *node;
 
-    ret = njs_parser_match_arrow_expression(vm, parser, token);
+    ret = njs_parser_match_arrow_expression(vm, parser, type);
     if (ret == NJS_OK) {
-        return njs_parser_arrow_expression(vm, parser, token);
+        return njs_parser_arrow_expression(vm, parser, type);
     }
 
-    if (token == NJS_TOKEN_OPEN_PARENTHESIS) {
+    if (type == NJS_TOKEN_OPEN_PARENTHESIS) {
 
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        token = njs_parser_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        return njs_parser_match(vm, parser, token, NJS_TOKEN_CLOSE_PARENTHESIS);
+        return njs_parser_match(vm, parser, type, NJS_TOKEN_CLOSE_PARENTHESIS);
     }
 
-    if (token == NJS_TOKEN_FUNCTION) {
+    if (type == NJS_TOKEN_FUNCTION) {
         return njs_parser_function_expression(vm, parser);
     }
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_OPEN_BRACE:
         njs_thread_log_debug("JS: OBJECT");
@@ -103,9 +103,9 @@ njs_parser_terminal(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
             return NJS_TOKEN_ERROR;
         }
 
-        token = njs_regexp_literal(vm, parser, &node->u.value);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_regexp_literal(vm, parser, &node->u.value);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         njs_thread_log_debug("REGEX: '%V'", njs_parser_text(parser));
@@ -180,7 +180,7 @@ njs_parser_terminal(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
         break;
 
     default:
-        node = njs_parser_reference(vm, parser, token, njs_parser_text(parser),
+        node = njs_parser_reference(vm, parser, type, njs_parser_text(parser),
                                     njs_parser_key_hash(parser),
                                     njs_parser_token_line(parser));
         if (njs_slow_path(node == NULL)) {
@@ -197,7 +197,7 @@ njs_parser_terminal(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token)
 
 
 static njs_parser_node_t *
-njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
+njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_type_t type,
     njs_str_t *name, uintptr_t unique_id, uint32_t token_line)
 {
     njs_int_t           ret;
@@ -205,12 +205,12 @@ njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
     njs_parser_node_t   *node;
     njs_parser_scope_t  *scope;
 
-    node = njs_parser_node_new(vm, parser, token);
+    node = njs_parser_node_new(vm, parser, type);
     if (njs_slow_path(node == NULL)) {
         return NULL;
     }
 
-    switch (token) {
+    switch (type) {
 
     case NJS_TOKEN_NULL:
         njs_thread_log_debug("JS: null");
@@ -228,7 +228,7 @@ njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
                 node->index = NJS_INDEX_THIS;
 
             } else {
-                node->token = NJS_TOKEN_NON_LOCAL_THIS;
+                node->token_type = NJS_TOKEN_NON_LOCAL_THIS;
 
                 node->token_line = token_line;
 
@@ -249,7 +249,7 @@ njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
             break;
         }
 
-        node->token = NJS_TOKEN_GLOBAL_OBJECT;
+        node->token_type = NJS_TOKEN_GLOBAL_OBJECT;
 
         break;
 
@@ -296,7 +296,7 @@ njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
         break;
 
     default:
-        (void) njs_parser_unexpected_token(vm, parser, token);
+        (void) njs_parser_unexpected_token(vm, parser, type);
         return NULL;
     }
 
@@ -304,7 +304,7 @@ njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
 {
     uintptr_t              unique_id;
@@ -312,7 +312,7 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
     njs_int_t              ret, __proto__;
     njs_str_t              name;
     njs_bool_t             computed, proto_init;
-    njs_token_t            token, accessor;
+    njs_token_type_t       type, accessor;
     njs_lexer_t            *lexer;
     njs_parser_node_t      *object, *property, *expression;
     njs_function_lambda_t  *lambda;
@@ -335,9 +335,9 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
     object->u.object = obj;
 
     for ( ;; ) {
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         accessor = 0;
@@ -345,7 +345,7 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
         proto_init = 0;
         njs_memzero(&name, sizeof(njs_str_t));
 
-        if (token == NJS_TOKEN_NAME || lexer->keyword) {
+        if (type == NJS_TOKEN_NAME || lexer->keyword) {
             name = *njs_parser_text(parser);
             unique_id = njs_parser_key_hash(parser);
             token_line = njs_parser_token_line(parser);
@@ -355,21 +355,21 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
                 return NJS_TOKEN_ERROR;
             }
 
-            if (token == NJS_TOKEN_NAME && name.length == 3
+            if (type == NJS_TOKEN_NAME && name.length == 3
                 && (memcmp(name.start, "get", 3) == 0
                     || memcmp(name.start, "set", 3) == 0))
             {
                 accessor = (name.start[0] == 'g') ? NJS_TOKEN_PROPERTY_GETTER
                                                   : NJS_TOKEN_PROPERTY_SETTER;
 
-                token = njs_parser_token(vm, parser);
-                if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                    return token;
+                type = njs_parser_token(vm, parser);
+                if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                    return type;
                 }
             }
         }
 
-        switch (token) {
+        switch (type) {
 
         case NJS_TOKEN_CLOSE_BRACE:
             if (accessor) {
@@ -380,24 +380,23 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
             goto done;
 
         case NJS_TOKEN_OPEN_BRACKET:
-            token = njs_parser_token(vm, parser);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_token(vm, parser);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
-            if (token == NJS_TOKEN_CLOSE_BRACKET) {
+            if (type == NJS_TOKEN_CLOSE_BRACKET) {
                 return NJS_TOKEN_ILLEGAL;
             }
 
-            token = njs_parser_assignment_expression(vm, parser, token);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_assignment_expression(vm, parser, type);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
             property = parser->node;
 
-            token = njs_parser_match(vm, parser, token,
-                                     NJS_TOKEN_CLOSE_BRACKET);
+            type = njs_parser_match(vm, parser, type, NJS_TOKEN_CLOSE_BRACKET);
 
             computed = 1;
 
@@ -406,16 +405,16 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
         case NJS_TOKEN_NUMBER:
         case NJS_TOKEN_STRING:
         case NJS_TOKEN_ESCAPE_STRING:
-            token = njs_parser_terminal(vm, parser, token);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_terminal(vm, parser, type);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
             property = parser->node;
             break;
 
         default:
-            if (token != NJS_TOKEN_NAME && !lexer->keyword) {
+            if (type != NJS_TOKEN_NAME && !lexer->keyword) {
                 if (name.length == 0) {
                     return NJS_TOKEN_ILLEGAL;
                 }
@@ -431,7 +430,7 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
                 }
             }
 
-            token = njs_parser_token(vm, parser);
+            type = njs_parser_token(vm, parser);
             break;
         }
 
@@ -452,9 +451,9 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
 
             expression->u.value.data.u.lambda = lambda;
 
-            token = njs_parser_function_lambda(vm, parser, lambda, token);
-            if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                return token;
+            type = njs_parser_function_lambda(vm, parser, lambda, type);
+            if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                return type;
             }
 
             if (accessor == NJS_TOKEN_PROPERTY_GETTER) {
@@ -479,19 +478,19 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
             }
 
         } else {
-            switch (token) {
+            switch (type) {
 
             case NJS_TOKEN_COMMA:
             case NJS_TOKEN_CLOSE_BRACE:
 
                 if (name.length == 0
-                    || lexer->prev_token == NJS_TOKEN_THIS
-                    || lexer->prev_token == NJS_TOKEN_GLOBAL_OBJECT)
+                    || lexer->prev_type == NJS_TOKEN_THIS
+                    || lexer->prev_type == NJS_TOKEN_GLOBAL_OBJECT)
                 {
                     return NJS_TOKEN_ILLEGAL;
                 }
 
-                expression = njs_parser_reference(vm, parser, lexer->prev_token,
+                expression = njs_parser_reference(vm, parser, lexer->prev_type,
                                                   &name, unique_id, token_line);
                 if (njs_slow_path(expression == NULL)) {
                     return NJS_TOKEN_ERROR;
@@ -517,14 +516,14 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
                     }
                 }
 
-                token = njs_parser_token(vm, parser);
-                if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                    return token;
+                type = njs_parser_token(vm, parser);
+                if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                    return type;
                 }
 
-                token = njs_parser_assignment_expression(vm, parser, token);
-                if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                    return token;
+                type = njs_parser_assignment_expression(vm, parser, type);
+                if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                    return type;
                 }
 
                 expression = parser->node;
@@ -547,9 +546,9 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
 
                 expression->u.value.data.u.lambda = lambda;
 
-                token = njs_parser_function_lambda(vm, parser, lambda, token);
-                if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-                    return token;
+                type = njs_parser_function_lambda(vm, parser, lambda, type);
+                if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+                    return type;
                 }
 
                 break;
@@ -565,11 +564,11 @@ njs_parser_object(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *obj)
             }
         }
 
-        if (token == NJS_TOKEN_CLOSE_BRACE) {
+        if (type == NJS_TOKEN_CLOSE_BRACE) {
             break;
         }
 
-        if (njs_slow_path(token != NJS_TOKEN_COMMA)) {
+        if (njs_slow_path(type != NJS_TOKEN_COMMA)) {
             return NJS_TOKEN_ILLEGAL;
         }
     }
@@ -587,7 +586,7 @@ njs_parser_object_property(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *parent, njs_parser_node_t *property,
     njs_parser_node_t *value, njs_bool_t proto_init)
 {
-    njs_token_t        token;
+    njs_token_type_t   type;
     njs_parser_node_t  *stmt, *assign, *object, *propref;
 
     object = njs_parser_node_new(vm, parser, NJS_TOKEN_OBJECT_VALUE);
@@ -597,9 +596,9 @@ njs_parser_object_property(njs_vm_t *vm, njs_parser_t *parser,
 
     object->u.object = parent;
 
-    token = proto_init ? NJS_TOKEN_PROTO_INIT : NJS_TOKEN_PROPERTY_INIT;
+    type = proto_init ? NJS_TOKEN_PROTO_INIT : NJS_TOKEN_PROPERTY_INIT;
 
-    propref = njs_parser_node_new(vm, parser, token);
+    propref = njs_parser_node_new(vm, parser, type);
     if (njs_slow_path(propref == NULL)) {
         return NJS_ERROR;
     }
@@ -632,7 +631,7 @@ njs_parser_object_property(njs_vm_t *vm, njs_parser_t *parser,
 static njs_int_t
 njs_parser_property_accessor(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *parent, njs_parser_node_t *property,
-    njs_parser_node_t *value, njs_token_t accessor)
+    njs_parser_node_t *value, njs_token_type_t accessor)
 {
     njs_parser_node_t  *node, *stmt, *object, *propref;
 
@@ -672,31 +671,31 @@ njs_parser_property_accessor(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_array(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *array)
 {
-    njs_int_t    ret;
-    njs_token_t  token;
+    njs_int_t         ret;
+    njs_token_type_t  type;
 
     for ( ;; ) {
-        token = njs_parser_token(vm, parser);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_token(vm, parser);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
-        if (token == NJS_TOKEN_CLOSE_BRACKET) {
+        if (type == NJS_TOKEN_CLOSE_BRACKET) {
             break;
         }
 
-        if (token == NJS_TOKEN_COMMA) {
+        if (type == NJS_TOKEN_COMMA) {
             array->ctor = 1;
             array->u.length++;
             continue;
         }
 
-        token = njs_parser_assignment_expression(vm, parser, token);
-        if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
-            return token;
+        type = njs_parser_assignment_expression(vm, parser, type);
+        if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
+            return type;
         }
 
         ret = njs_parser_array_item(vm, parser, array, parser->node);
@@ -704,11 +703,11 @@ njs_parser_array(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *array)
             return NJS_TOKEN_ERROR;
         }
 
-        if (token == NJS_TOKEN_CLOSE_BRACKET) {
+        if (type == NJS_TOKEN_CLOSE_BRACKET) {
             break;
         }
 
-        if (njs_slow_path(token != NJS_TOKEN_COMMA)) {
+        if (njs_slow_path(type != NJS_TOKEN_COMMA)) {
             return NJS_TOKEN_ILLEGAL;
         }
     }
@@ -745,7 +744,7 @@ njs_parser_array_item(njs_vm_t *vm, njs_parser_t *parser,
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_parser_template_literal(njs_vm_t *vm, njs_parser_t *parser,
     njs_parser_node_t *parent)
 {
@@ -755,7 +754,7 @@ njs_parser_template_literal(njs_vm_t *vm, njs_parser_t *parser,
     njs_index_t        index;
     njs_parser_node_t  *node, *array;
 
-    tagged_template = (parent->token != NJS_TOKEN_TEMPLATE_LITERAL);
+    tagged_template = (parent->token_type != NJS_TOKEN_TEMPLATE_LITERAL);
 
     index = NJS_SCOPE_CALLEE_ARGUMENTS;
 
@@ -832,19 +831,19 @@ njs_parser_template_literal(njs_vm_t *vm, njs_parser_t *parser,
 static njs_int_t
 njs_parser_template_expression(njs_vm_t *vm, njs_parser_t *parser)
 {
-    njs_token_t  token;
+    njs_token_type_t  type;
 
-    token = njs_parser_token(vm, parser);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+    type = njs_parser_token(vm, parser);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
         return NJS_ERROR;
     }
 
-    token = njs_parser_expression(vm, parser, token);
-    if (njs_slow_path(token <= NJS_TOKEN_ILLEGAL)) {
+    type = njs_parser_expression(vm, parser, type);
+    if (njs_slow_path(type <= NJS_TOKEN_ILLEGAL)) {
         return NJS_ERROR;
     }
 
-    if (token != NJS_TOKEN_CLOSE_BRACE) {
+    if (type != NJS_TOKEN_CLOSE_BRACE) {
         njs_parser_syntax_error(vm, parser,
                                 "Missing \"}\" in template expression");
         return NJS_ERROR;
@@ -965,7 +964,7 @@ njs_parser_string_create(njs_vm_t *vm, njs_value_t *value)
 }
 
 
-static njs_token_t
+static njs_token_type_t
 njs_parser_escape_string_create(njs_vm_t *vm, njs_parser_t *parser,
     njs_value_t *value)
 {
index 437e2615ecbdf9ce01aeba5f399674ef7a37f887..1a05d81409cab44afdcaef3617bbdd979b338331 100644 (file)
@@ -316,7 +316,7 @@ done:
 }
 
 
-njs_token_t
+njs_token_type_t
 njs_regexp_literal(njs_vm_t *vm, njs_parser_t *parser, njs_value_t *value)
 {
     u_char                *p;
index 9f53a1ceabe2ca1f7a3b7826a52a6a2ade853308..afdf34acfe123df0d34129e2a3d25e86b462f33b 100644 (file)
@@ -19,7 +19,7 @@ typedef enum {
 njs_int_t njs_regexp_init(njs_vm_t *vm);
 njs_int_t njs_regexp_create(njs_vm_t *vm, njs_value_t *value, u_char *start,
     size_t length, njs_regexp_flags_t flags);
-njs_token_t njs_regexp_literal(njs_vm_t *vm, njs_parser_t *parser,
+njs_token_type_t njs_regexp_literal(njs_vm_t *vm, njs_parser_t *parser,
     njs_value_t *value);
 njs_regexp_pattern_t *njs_regexp_pattern_create(njs_vm_t *vm,
     u_char *string, size_t length, njs_regexp_flags_t flags);