             
             results.append(line)
             continue
+            
+        } else {
+            
+            // コメント開始
+            if line.isBeginComment {
+                inComment = true
+                results.append(line)
+                continue
+            }
+            
+            // コメントの外に到達してヒアドキュメントが含まれていたら
+            if !heredocLines.isEmpty {
+                
+                if RegexLetString.isMatch(line) {
+                    
+                    let variable = RegexLetString.match(line)!._1
+                    
+                    // 文字列リテラルに変換
+                    let newLine = convertHeredocToSource(heredocLines,
+                                                         variable: variable,
+                                                         indent: indent.flatMap{ $0 - 1 })
+                    results.append(newLine)
+                    
+                    heredocLines = []
+                    indent = nil
+                    continue
+                }
+                
+                heredocLines = []
+                indent = nil
+            }
         }
         
         // その他の行

//

import Foundation

/// 指定されたコード全体を変換したものを返す
///

    
    for line in text.lines() {
        
        // here-docを解析して記録
        if inComment {
            
            // インデントを記憶
            if RegexHeredoc.isMatch(line) {
                let space = RegexHeredoc.match(line)!._1
                indent = space.characters.count
                results.append(line)
                continue
            }
            
            // コメント終了
            if line.isEndComment {
                inComment = false
                results.append(line)
                continue
