From f8a9649c2a0cb3bc3af0580a72a56cf4c5bf37f1 Mon Sep 17 00:00:00 2001 From: jchbh Date: Wed, 20 May 2015 11:20:34 -0700 Subject: [PATCH] add support for yield and yield apply --- lib/parse.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/parse.js b/lib/parse.js index f6ea9b40..2d8a1a3a 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -44,7 +44,7 @@ "use strict"; -var KEYWORDS = 'break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with'; +var KEYWORDS = 'break case catch const continue debugger default delete do else finally for function if in instanceof new return yield switch throw try typeof var let void while with'; var KEYWORDS_ATOM = 'false null true'; var RESERVED_WORDS = 'abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized this throws transient volatile yield' + " " + KEYWORDS_ATOM + " " + KEYWORDS; @@ -66,6 +66,7 @@ var OPERATORS = makePredicate([ "instanceof", "typeof", "new", + "yield", "void", "delete", "++", @@ -577,6 +578,7 @@ var UNARY_PREFIX = makePredicate([ "typeof", "void", "delete", + "yield", "--", "++", "!", @@ -1353,6 +1355,10 @@ function parse($TEXT, options) { var start = S.token; if (is("operator") && UNARY_PREFIX(start.value)) { next(); + if(start.type === "operator" && start.value === "yield" && is("operator", "*")) { + start.value = "yield*"; + next() + } handle_regexp(); var ex = make_unary(AST_UnaryPrefix, start.value, maybe_unary(allow_calls)); ex.start = start;