From 64e78a2bec207cbc4fe1e419a418813bd3d543e2 Mon Sep 17 00:00:00 2001 From: Andreas Lubbe Date: Thu, 26 Dec 2013 01:16:02 -0800 Subject: [PATCH] updated lexer to allow 'yield*' --- lib/coffee-script/lexer.js | 6 +++++- src/lexer.coffee | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/coffee-script/lexer.js b/lib/coffee-script/lexer.js index 54a38311..f6b2a75e 100644 --- a/lib/coffee-script/lexer.js +++ b/lib/coffee-script/lexer.js @@ -427,7 +427,7 @@ }; Lexer.prototype.literalToken = function() { - var match, prev, tag, value, _ref2, _ref3, _ref4, _ref5; + var match, poppedToken, prev, tag, value, _ref2, _ref3, _ref4, _ref5; if (match = OPERATOR.exec(this.chunk)) { value = match[0]; if (CODE.test(value)) { @@ -451,6 +451,10 @@ if (value === ';') { this.seenFor = false; tag = 'TERMINATOR'; + } else if (value === '*' && prev[1] === 'yield' && !prev.spaced) { + poppedToken = this.tokens.pop(); + tag = 'UNARY'; + value = 'yield*'; } else if (__indexOf.call(MATH, value) >= 0) { tag = 'MATH'; } else if (__indexOf.call(COMPARE, value) >= 0) { diff --git a/src/lexer.coffee b/src/lexer.coffee index 8fc6aed0..79978df1 100644 --- a/src/lexer.coffee +++ b/src/lexer.coffee @@ -404,6 +404,10 @@ exports.Lexer = class Lexer if value is ';' @seenFor = no tag = 'TERMINATOR' + else if value is '*' and prev[1] is 'yield' and not prev.spaced + poppedToken = @tokens.pop() + tag = 'UNARY' + value = 'yield*' else if value in MATH then tag = 'MATH' else if value in COMPARE then tag = 'COMPARE' else if value in COMPOUND_ASSIGN then tag = 'COMPOUND_ASSIGN'