最も簡単な方法はexisting exampleです。
あなたは、そのファイルを見れば、あなたはそれがタプルの二つのリストを囲んで、いくつかの決まり文句があることがわかります。ファイル拡張子リストは"ext"
が含まれている場合
PR['registerLangHandler'](
PR['createSimpleLexer'](
[
// Some tuples
],
[
// Some more tuples
],
[/* Some file extensions without dot */]));
をして飾り立てるはでコードブロックを飾り立てるように頼まれますこのハンドラが使用されます。
タプルの2つのセットは、同様の構造を持っています。 は、ここで最初のセット
['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でスタイルをアップ一致する:
.kwd { color: #008 } /* a keyword */
言っている
['opn', /^\(+/, null, '('],
コードの先頭が開始した場合、prettifyingときということです/^\(+/
と入力すると、入力は<span class="opn">...</span>
にラップされます。 opn
(LISPのオープンカッコ)は文字列リテラルで、定義済みの定数がないためです。独自のトークン型クラスを定義する場合は、どのようなページ読み込みでもスタイルルールを定義する必要があります。
右の文字列'('
は、入力テキストがこれらの文字のいずれかで始まる場合に適用される唯一のルールであるように、文字のリストとして扱われます。これは、過去数年間でIE 6の重要な最適化でした。
タプルの2つのグループの唯一の違いは、最初のリストのものがこの特別な排他的な文字要素を持つことです。
IIRCの場合、null
は、これまで必要であったことはめったになく、もはやサポートされていない機能をサポートしていました。その位置に置いた値は無視されます。
ハンドラCSSハンドラには、これに関するすべてのドキュメントがあり、他の機能の1つを示しています。
['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エンジンは先読みを一貫してサポートしていますが、HTMLモードではJSおよびCSSモードを<script>
および<style>
ブロックの内容に再帰的に適用できる必要があります。
Prettifyは、トークンに対して左から右へのパスにのみ依存するすべての変換を処理できます。それは曖昧さ回避のためのサイド・テーブル内のシンボルを収集するための方法を持っていないので、これらの2つのCスニペットを区別する方法はありません。この制限されたアプローチは、より堅牢なようだ
typedef int t // t is declared as a type
t* x; // declare x as a pointer to a t. "t" should have class="typ"
int t = 1; // t is declared as a variable, not a type
t* x; // multiplication. "t" should not have class="typ"
からあなたが頻繁にstackoverflowのようなサイトで見るコードと不正なコードの小さな断片の顔。
- タイプ名が
_t
で終わる首都
- 識別子で始まるようですが、共通の言語規則をエンコードするのが妥当だが種類のあなたのルールで
です。
内蔵シェルモードがあります。 –