가장 쉬운 방법은 existing example에서 일하는 것입니다.
해당 파일을 보면, 당신이 튜플의 두 목록 둘러싼 몇 가지 상투적 인 것을 볼 수 있습니다 : 파일 확장자 목록 "ext"
을 포함하여 코드 블록을 싸게 치장하도록 요청 싸게 치장 경우
PR['registerLangHandler'](
PR['createSimpleLexer'](
[
// Some tuples
],
[
// Some more tuples
],
[/* Some file extensions without dot */]));
을 이면이 처리기가 사용됩니다.
두 세트의 튜플은 유사한 구조를 가지고 있습니다. 다음은 첫 세트
['opn', /^\(+/, null, '('],
['clo', /^\)+/, null, ')'],
에서 일부이고 여기에 두 번째 세트에서 하나입니다.
[PR['PR_KEYWORD'], /^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|...)\b/, null],
PR['PR_KEYWORD']
는 predefined token type하고 predefined stylesheet에서 스타일와 일치합니다
['opn', /^\(+/, null, '('],
코드의 시작이 시작하면, 꾸미는데 때이다 무슨 말을
.kwd { color: #008 } /* a keyword */
/^\(+/
으로 입력하면 <span class="opn">...</span>
으로 입력됩니다. opn
(LISP 열기 괄호)은 미리 정의 된 상수가 없기 때문에 문자열 리터럴입니다. 고유 한 토큰 유형 클래스를 정의하는 경우, 어떤 페이지 로딩을 선호 하든지 스타일 규칙을 정의해야 할 것입니다.
오른쪽의 문자열 '('
은 입력 된 텍스트가 해당 문자 중 하나로 시작될 때 적용되는 유일한 규칙 인 것과 같은 문자 목록으로 처리됩니다. 이것은 지난 몇 년 동안 IE 6의 중요한 최적화였습니다.
튜플의 두 그룹 간의 유일한 차이점은 첫 번째 목록에있는 것들이이 특별한 독점적 인 문자 요소를 가지고 있다는 것입니다.
IIRC의 경우 null
은 거의 필요한 경우가 거의 없으며 더 이상 지원되지 않는 기능을 지원했습니다. 그 위치에 넣은 값은 무시됩니다.
CSS 처리기에는 모든 문서가 있으며 다른 기능 하나를 보여줍니다.
['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
토큰 형 대신 <span class="lang-css-kw">...</span>
를 생성하는, lang-
로 시작하는 경우는, 파일 확장자 css-kw
의 언어 처리기에 대한보고이 기능은 과잉 여기 아마 그룹 1에 콘텐츠를 반복적으로 그 적용됩니다 싸게 치장 현대의 JS 엔진은 지속적으로 lookahead를 지원하지만, HTML 모드가 JS 및 CSS 모드를 <script>
및 <style>
블록의 내용에 재귀 적으로 적용 할 수 있어야합니다.
Prettify는 왼쪽에서 오른쪽으로 토큰을 통과하는 모든 변환을 처리 할 수 있습니다. 그것은 명확성을 위해 옆 테이블에있는 문자를 수집하는 방법을 가지고 있지 않기 때문에,이 두 가지 C 조각 구별 할 수있는 방법은 없습니다 :이 제한적인 접근 방식에서보다 강력한 것 같다
int t = 1; // t is declared as a variable, not a type
t* x; // multiplication. "t" should not have class="typ"
에서
typedef int t // t is declared as a type
t* x; // declare x as a pointer to a t. "t" should have class="typ"
은 stackoverflow와 같은 사이트에서 종종 볼 수있는 코드 조각 및 잘못된 코드의 얼굴.
그것은
- 유형 이름과 같은 공통의 언어 규칙을 인코딩하는 합리적인는
_t
로 끝나는
- 식별자 규칙에
유형 있습니다 수도로 시작합니다.
내장 쉘 모드가 있습니다. –