ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 문제아 찾기
    TeX과 친구들 2026. 6. 17. 09:59

    예외로 다루어야 할 문자열들을 처리하는 가장 손쉬운 꼼수가 그것들을 실재할 가능성이 희박한 것으로 바꾸어 놓았다가 모든 처리가 완료될 때 원래대로 되돌리는 것이다.

    <!-- &lt;와 &gt;를 ```로 바꾸었다가 -->
    <xsl:variable name="tmp" select="replace(., '&lt;([가-힣]+?)&gt;', '```$1```')"/>
    <xsl:variable name="tmp" select="replace($tmp, '&lt;(POI|OK|%s)&gt;', '```$1```')"/>
    <!-- 되돌려 놓기 -->
    <xsl:variable name="tmp" select="replace($tmp, '```(.+?)```', '&lt;$1&gt;')"/>

    이것이 효과적인 방법이지만, 정작 어려움은 문제아를 찾는 데에 있다. 다른 수십 파일들이 문제 없이 처리되고, 그래서 완벽한 해법을 만들었다고 스스로 자랑스러워할 때, 한 파일에서 에러 메시지가 쏟아지고 처리가 멈춰서면, 코드 전체가 못 미더워진다. 코드를 이리저리 바꾸어보았지만 계속 실패했다. 코드가 틀린 것이 아니고, 내가 찾지 못한 문제아가 어딘가에 숨어있는 것이 아닐까?

    "절반 날리기" 신공을 써야 할 때가 왔다. 문제의 파일이 39172 줄. 뒤의 절반을 지우고 돌리니 정상적으로 종료된다. 문제아가 뒤쪽에 숨어있다는 말이다. 뒤의 절반을 되살리고, 앞의 절반을 지웠다. 이 짓을 거듭 반복하여 마침내 38878 번째 줄에서 문제아를 찾아내었다. 

    <bpt i="1" type="18" x="1"/>&lt;<ept i="1"/>

    &lt;만 있는 경우를 상상하지 못했다. 아래와 같이 조건을 변경하여 해결했다.

    <xsl:when test="starts-with(., '&lt;') and string-length(.) gt 4">

     

    'TeX과 친구들' 카테고리의 다른 글

    아랍어 합자  (0) 2026.06.30
    XSLT에 대하여  (0) 2025.12.18
    Python에서 immutable object와 mutable object  (0) 2025.09.23
    readhanja 루아텍 패키지  (0) 2025.09.01
    VS Code에서 한자 찾기  (0) 2025.08.29

    댓글

Designed by Tistory.