From c8b97214fe0da52c2babddf1b72b23a8f0e76bc0 Mon Sep 17 00:00:00 2001 From: Ilmir Usmanov Date: Wed, 1 Oct 2014 14:30:04 +0400 Subject: [PATCH] Parse undefined as simple --- src/libjsparser/lexer.c | 8 ++++++++ src/libjsparser/lexer.h | 3 ++- src/libjsparser/parser.c | 6 ++++++ 3 files changed, 16 insertions(+), 1 deletion(-) 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: