code: function evalStringRules(begin, end, state) {
        var curStates = [state];
        lexer.addRule(begin, function(lexeme) {
          if (curState) stack.push(curState);
          curState = this.state = state;
          this.yytext = makeToken(lexeme);
          return 'CODE';
        }, codeStates);
        lexer.addRule(/\\(?:\\\\)*[\s\S]/, codeRule, curStates);
        lexer.addRule(end, function(lexeme) {
          this.yytext = makeToken(lexeme);
          curState = this.state = stack.pop() || ST_INITIAL;
          return 'CODE';
        }, curStates);
        lexer.addRule(/#{/, function(lexeme) {
          stack.push(curState);
          this.yytext = makeToken(lexeme);
          curState = this.state = ST_ECODE;
          return 'CODE';
        }, curStates);
        lexer.addRule(/[\s\S]/, codeRule, curStates);
      }
docs: /* multi-line rules to account for coffee script embedding
  code within strings to unlimited nesting. Note single
  quoted strings do not allow `#{}` expressions.
  Fortunatly, [CoffeeScript] does not allow nesting of multi-line
  expressions:
  
  * `///Multi\nLine\nRegExp///`
  * `"""Multi\nLine\nString"""`
  * `"Multi\n Line\n String\n no line breaks"`