     원문         := (<공백 공백 공백 공백> ANY* LF)+
 
     (* 소스코드 *)
-    소스코드     := <\"```\" 공백*> (<LF> 코드내용 / 소스언어 <LF> 코드내용) <\"```\" LF>
+    소스코드     := <\"```\" 공백*> (<LF> 코드내용 / 소스언어 <LF> 코드내용) <\"```\" LF LF?>
     소스언어     := ANY+
     코드내용     := (ANY+ LF)*
 

    작은제목     := <'##' 공백> 평문 <공백? '#'+>?

    (* 목록 *)
    <목록>       := 일반목록 / 숫자목록
    일반목록     := (<'*' 공백+> 항목 <LF>)+
    숫자목록     := (<숫자+ '.' 공백+> 항목 <LF>)+
    항목         := 평문

               옵션)))

(deftest 분석테스트
  (testing "문서전체"
    (is (= (분석
"# 큰제목
## 작은제목
첫문단

* 항목1
* 항목2 *강조*

``` 클로저
(defn a-func []
  true)
```
마지막 문단
")
           [:문서
            [:큰제목 "큰" "제" "목"] [:작은제목 "작" "은" "제" "목"]
            [:문단 "첫" "문" "단"]
            [:일반목록 [:항목 "항" "목" "1"] [:항목 "항" "목" "2" " " [:기울임 "강" "조"]]]
            [:소스코드
             [:소스언어 "클" "로" "저"]
             [:코드내용
              "(" "d" "e" "f" "n" " " "a" "-" "f" "u" "n" "c" " " "[" "]" "\n"
              " "  " " "t" "r" "u" "e" ")" "\n"]]
            [:문단 "마" "지" "막" " " "문" "단"]])))

  (testing "소스코드"
    (are [시도 결과] (= 시도 결과)
      (분석 "``` clojure\n(def a 1)\n```")
