diff --git a/src/libjsparser/lexer.c b/src/libjsparser/lexer.c index a056278f9..a2e13ff53 100644 --- a/src/libjsparser/lexer.c +++ b/src/libjsparser/lexer.c @@ -486,6 +486,14 @@ decode_keyword (void) .uid = KW_RESERVED }; } + if (current_token_equals_to ("undefined")) + { + return (token) + { + .type = TOK_UNDEFINED, + .uid = 0 + }; + } return empty_token; } diff --git a/src/libjsparser/lexer.h b/src/libjsparser/lexer.h index 51531f7b8..b71292666 100644 --- a/src/libjsparser/lexer.h +++ b/src/libjsparser/lexer.h @@ -131,7 +131,8 @@ typedef uint8_t token_type; #define TOK_DIV 55 // / #define TOK_DIV_EQ 56 // /= -#define TOK_EMPTY 57 +#define TOK_UNDEFINED 57 // undefined +#define TOK_EMPTY 58 /* Represents the contents of a token. */ diff --git a/src/libjsparser/parser.c b/src/libjsparser/parser.c index 329dba23e..a8ff5408b 100644 --- a/src/libjsparser/parser.c +++ b/src/libjsparser/parser.c @@ -1221,6 +1221,12 @@ parse_primary_expression (void) STACK_PUSH (IDX, token_data ()); break; } + case TOK_UNDEFINED: + { + STACK_PUSH (IDX, next_temp_name ()); + DUMP_OPCODE_3 (assignment, ID(1), OPCODE_ARG_TYPE_SIMPLE, ECMA_SIMPLE_VALUE_UNDEFINED); + break; + } case TOK_NULL: case TOK_BOOL: case TOK_SMALL_INT: