Markleft는 문장 부호로 서식을 지정하는 마크업 표기법이다. 규칙은 다음과 같다.
^ 두 개 사이의 글자는 모두 대문자로 바꾼다. One^tWo^threE는 OneTWOthreE가 된다.\ 두 개 사이에서는 큰따옴표마다 앞에 \를 하나씩 붙인다. Piglet \said "Hello"\는 Piglet said \"Hello\"가 된다.# 두 개 사이의 수는 모두 16진수로 바꾼다. 이어진 숫자 한 덩어리가 수 하나이고, 수는 여섯 자리를 넘지 않으며, 16진수는 대문자로 쓰고 앞에 0을 붙이지 않는다. #Text with 31 12 and 64#는 Text with 1F C and 40이 된다.< 두 개 사이의 글자는 순서를 뒤집는다. This <be reversed<odd는 This desrever ebodd가 된다.@ 두 개 사이의 글자는 그대로 옮긴다. 즉 안쪽의 마크업은 무시한다. 그래서 출력에 @ 문자를 넣는 방법은 없다. This is @\<<#@ verbatim은 This is \<<# verbatim이 된다.구간은 중첩할 수 있지만 괄호가 맞물리듯 올바르게 중첩해야 한다. ^aa<bcd<ee^는 AADCBEE가 된다. One #reverse me ^uppercase me # and more^는 중첩이 어긋나므로 잘못된 입력이다.
구간은 올바르게 중첩되는 첫 마크업 문자에서 닫힌다. abc^def^ghi^jkl^mno에는 중첩이 없고 abcDEFghiJKLmno가 된다. 같은 종류의 구간도 중첩될 때가 있다. 대개 효과가 크지 않지만 그렇지 않은 경우도 있어서, ab<cd^ef<gh<ij^kl<mn은 ablkJIGHFEdcmn이 된다.
안쪽 구간을 먼저 처리하므로 <#31#<는 F1이 된다.
입력은 서식을 지정할 Markleft 텍스트 여러 줄이다. 각 줄의 길이는 100자를 넘지 않고, 줄마다 따로 처리한다. 모든 줄의 마크업은 올바르다. # 한 글자만 있는 줄이 입력의 끝을 알린다.
각 입력 줄의 서식 결과를 입력 순서대로 한 줄씩 출력한다. 끝을 알리는 # 줄에 대해서는 아무것도 출력하지 않는다.