nl_tokens: Sets the current tokenValue and returns a NoSubstitutionTemplateLiteral or a literal component of a TemplateExpression .
pl_tokens: function scanTemplateAndSetTokenValue ( ) { var startedWithBacktick = text . charCodeAt ( pos ) === 96 /* backtick */ ; pos ++ ; var start = pos ; var contents = "" ; var resultingToken ; while ( true ) { if ( pos >= end ) { contents += text . substring ( start , pos ) ; tokenIsUnterminated = true ; error ( ts . Diagnostics . Unterminated_template_literal ) ; resultingToken = startedWithBacktick ? 11 /* NoSubstitutionTemplateLiteral */ : 14 /* TemplateTail */ ; break ; } var currChar = text . charCodeAt ( pos ) ; // '`' if ( currChar === 96 /* backtick */ ) { contents += text . substring ( start , pos ) ; pos ++ ; resultingToken = startedWithBacktick ? 11 /* NoSubstitutionTemplateLiteral */ : 14 /* TemplateTail */ ; break ; } // '${' if ( currChar === 36 /* $ */ && pos + 1 < end && text . charCodeAt ( pos + 1 ) === 123 /* openBrace */ ) { contents += text . substring ( start , <mask> ) ; pos += 2 ; resultingToken = startedWithBacktick ? 12 /* TemplateHead */ : 13 /* TemplateMiddle */ ; break ; } // Escape character if ( currChar === 92 /* backslash */ ) { contents += text . substring ( start , pos ) ; contents += scanEscapeSequence ( ) ; start = pos ; continue ; } // Speculated ECMAScript 6 Spec 11.8.6.1: // <CR><LF> and <CR> LineTerminatorSequences are normalized to <LF> for Template Values if ( currChar === 13 /* carriageReturn */ ) { contents += text . substring ( start , pos ) ; pos ++ ; if ( pos < end && text . charCodeAt ( pos ) === 10 /* lineFeed */ ) { pos ++ ; } contents += "\n" ; start = pos ; continue ; } pos ++ ; } ts . Debug . assert ( resultingToken !== undefined ) ; tokenValue = contents ; return resultingToken ; }