Syntax Highlighter 2.0용 x86 어셈블리 브러쉬 공개

Visual Studio 계열 쉬프트(>>) 연산 버그의 원인이라는 뻘포스팅을 하면서 보니 Syntax Highlighter에 어셈블리 브러쉬가 없더라. 워낙 기본적인 언어라 있을 것 같기도 한데 참...

아뭏든, 하나 있으면 좋을 것 같아 만들어봤다.
일단, 아래 파일을 다운받아 압축을 풀고 올리고 나서


아래의 내용을 HTML 헤더에 추가한 뒤에

<script type="text/javascript" src="scripts/shBrushAsm.js"></script>

아래와 같이 적으면 된다.

<pre class="brush: asm;">어셈블러 코드</pre>

brush 명은 asm 또는 x86을 사용하면 된다.
기타 자세한 설명은 기존 포스팅을 참고. (어짜피 이거 쓰려는 분들은 뭔지 잘 아실 것이니 자세한 설명은 생략)
적용한 화면은 아래와 같다.

사용자 삽입 이미지

그런데, 문제가 있다.
당연한 얘기지만, SH의 브러쉬는 거대한 정규식 덩어리다.
주석 역시 정규식으로 지정되어 있는데, 하필 어셈블러의 주석은 애매하기 짝이 없는 세미콜론(;)이다.

이건 단독으로는 평범한 문자이지만, &nbsp; 와 같이 사용될 때는 의미를 갖기 때문에 정규식으로 구성하기가 너무 어렵다.
현재는 아래와 같이 애매하게 지정해뒀다.

{ regex: /^;.*$/gm,     css: 'comments' },            // one line comments
{ regex: /\s\;.*$/gm,     css: 'comments' },          // one line comments

즉, 행의 맨 처음이거나 바로 앞에 공백이 있는 경우만 주석으로 처리하는 것이다.
이게 문제가 될 수 있는 것이 mov ecx, 32;00000020H 처럼 쓰는 경우엔 주석으로 인식을 못 하는 거다.

정규식으로 &문자열; 의 포맷이 아닌 경우를 찾는 방법을 못 찾아 미봉책만 쓴 것이다.

혹시 이런 경우에 사용할 수 있는 정규식을 아시는 고수분 계시면 한 수 가르침 부탁드린다.




Comment 4