   scanTokens: (block) ->
     {tokens} = this
     i = 0
-    (i += block.call this, token, i, tokens) while token = tokens[i]
+    i += block.call this, token, i, tokens while token = tokens[i]
     true
 
   detectEnd: (i, condition, action) ->

      if tag in EXPRESSION_END
        start = stack.pop()
        return 1
      return 1 unless tag is ':' and stack[stack.length - 1]?[0] isnt '{'
      stack.push ['{']
      idx = if @tag(i - 1) is ')'
        start[1]
      else  if @tag(i - 2) is '@'
        i - 2
      else
        i - 1
      idx -= 2 if @tag(idx - 2) is 'HERECOMMENT'

      tag is ',' and one and
        one[0] not in ['IDENTIFIER', 'NUMBER', 'STRING', '@', 'TERMINATOR', 'OUTDENT', '(']
    action = (token, i) -> @tokens.splice i, 0, ['}', '}', token[2]]
    @scanTokens (token, i, tokens) ->
      if (tag = token[0]) in EXPRESSION_START
        stack.push [(if tag is 'INDENT' and @tag(i - 1) is '{' then '{' else tag), i]
