Introduced "undefined" as a token in lexer.
diff --git a/src/njs_lexer.h b/src/njs_lexer.h
index 9afc83c..fddc30a 100644
--- a/src/njs_lexer.h
+++ b/src/njs_lexer.h
@@ -116,6 +116,7 @@
     NJS_TOKEN_NULL,
     NJS_TOKEN_NUMBER,
     NJS_TOKEN_TRUE,
+    NJS_TOKEN_UNDEFINED,
     NJS_TOKEN_FALSE,
     NJS_TOKEN_STRING,
 
diff --git a/src/njs_lexer_tables.h b/src/njs_lexer_tables.h
index 73f7167..c9ad680 100644
--- a/src/njs_lexer_tables.h
+++ b/src/njs_lexer_tables.h
@@ -10,7 +10,7 @@
 #define _NJS_LEXER_TABLES_H_INCLUDED_
 
 
-static const njs_keyword_t njs_lexer_kws[53] =
+static const njs_keyword_t njs_lexer_kws[54] =
 {
     {
         .entry = { njs_str("arguments") },
@@ -301,6 +301,12 @@
     },
 
     {
+        .entry = { njs_str("undefined") },
+        .type = NJS_TOKEN_UNDEFINED,
+        .reserved = 0
+    },
+
+    {
         .entry = { njs_str("var") },
         .type = NJS_TOKEN_VAR,
         .reserved = 1
@@ -364,10 +370,10 @@
     { "null", &njs_lexer_kws[32], 4, 0 },
     { NULL, NULL, 0, 0 },
     { "do", &njs_lexer_kws[12], 2, 0 },
-    { "var", &njs_lexer_kws[48], 3, 0 },
+    { "var", &njs_lexer_kws[49], 3, 0 },
     { "if", &njs_lexer_kws[23], 2, 7 },
     { "implements", &njs_lexer_kws[24], 10, 0 },
-    { "with", &njs_lexer_kws[51], 4, 0 },
+    { "with", &njs_lexer_kws[52], 4, 0 },
     { NULL, NULL, 0, 0 },
     { "eval", &njs_lexer_kws[15], 4, 9 },
     { NULL, NULL, 0, 0 },
@@ -379,14 +385,14 @@
     { NULL, NULL, 0, 0 },
     { NULL, NULL, 0, 0 },
     { "default", &njs_lexer_kws[10], 7, 0 },
-    { "void", &njs_lexer_kws[49], 4, 0 },
+    { "void", &njs_lexer_kws[50], 4, 0 },
     { NULL, NULL, 0, 0 },
     { NULL, NULL, 0, 0 },
-    { NULL, NULL, 0, 0 },
+    { "undefined", &njs_lexer_kws[48], 9, 0 },
     { "from", &njs_lexer_kws[21], 4, 0 },
     { "package", &njs_lexer_kws[34], 7, 15 },
     { NULL, NULL, 0, 0 },
-    { "yield", &njs_lexer_kws[52], 5, 0 },
+    { "yield", &njs_lexer_kws[53], 5, 0 },
     { NULL, NULL, 0, 0 },
     { NULL, NULL, 0, 0 },
     { "of", &njs_lexer_kws[33], 2, 0 },
@@ -403,7 +409,7 @@
     { NULL, NULL, 0, 0 },
     { NULL, NULL, 0, 0 },
     { "for", &njs_lexer_kws[20], 3, 0 },
-    { "while", &njs_lexer_kws[50], 5, 0 },
+    { "while", &njs_lexer_kws[51], 5, 0 },
     { NULL, NULL, 0, 0 },
     { NULL, NULL, 0, 0 },
     { NULL, NULL, 0, 0 },
diff --git a/utils/lexer_keyword.py b/utils/lexer_keyword.py
index 78b3ddc..8ba967d 100755
--- a/utils/lexer_keyword.py
+++ b/utils/lexer_keyword.py
@@ -6,6 +6,7 @@
     "null": 1,
     "false": 1,
     "true": 1,
+    "undefined": 0,
 
     # Operators.