master
ブランチ master
LittleBeast / src / Std / Lib / Syntax / SyntaxInterface.php
1.3 KB、44行 生 Blame 履歴
1<?php
2namespace Std\Lib\Syntax;
3
4interface SyntaxInterface {
5 /**
6 * コードを解析する前に呼ばれる(単語表の作成等)
7 *
8 * @param string $code ハイライトするコード全体
9 * @return void
10 */
11 public function prepare(string $code): void;
12
13 /**
14 * トークンの規則を優先順に返す
15 * 各規則:['re' => 正規表現(区切り文字なし), 'class' => 種類, 'bol' => 行頭のみか]
16 * 種類が「ident」の場合、classify()で分類する
17 *
18 * @return array 規則の配列
19 */
20 public function getRules(): array;
21
22 /**
23 * 識別子を分類する
24 *
25 * @param string $word 識別子
26 * @param array $ctx 文脈(bol, first, prev, prevWord, lineWord, next, nextRaw, nextWord)
27 * @return string|null 種類、色を付けない場合はnull
28 */
29 public function classify(string $word, array $ctx): ?string;
30
31 /**
32 * 入れ子可能な複数行コメントの[開始, 終了](Swift等)
33 *
34 * @return array|null
35 */
36 public function getNestedComment(): ?array;
37
38 /**
39 * 次の「<…>」をファイル名として扱うプリプロセッサ指令(include等)
40 *
41 * @return array
42 */
43 public function getHeaderDirectives(): array;
44}