docs: 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);
      }