實作的語法標色
當語言服務提供語法顏色標示時,剖析器會將一行文字轉換為可設定色彩的項目陣列,並傳回語彙基元的型別對應到這些可設定色彩的項目。 剖析器應該會傳回屬於可設定色彩的項目清單的語彙基元型別。 Visual Studio根據要由 colorizer 物件指派給適當的語彙基元型別之屬性的程式碼] 視窗中顯示每個可設定色彩的項目。
Visual Studio未指定剖析器介面,以及剖析器的實作是完全由您。 不過,預設的剖析器實作提供 Visual Studio 的語言套件的專案中。 Managed 程式碼,受管理的封裝架構 (MPF) 提供完整支援 colorizing 的文字。
後面接著以色彩標示文字編輯器的步驟
編輯器] 中取得點撥打的 colorizer GetColorizer上的方法IVsLanguageInfo物件。
編輯器呼叫GetStateMaintenanceFlag方法,以判斷 colorizer 是否需要維護 colorizer 以外的每個線路的狀態。
如果 colorizer 需要維護 colorizer 以外的狀態,請在編輯器] 便會呼叫GetStartState方法來取得第一個線路的狀態。
緩衝區中的每一行,編輯器會呼叫ColorizeLine方法,便會執行下列步驟:
一行文字會傳遞到掃描器,將文字轉換成語彙基元。 每個語彙基元指定的語彙基元的文字和語彙基元的型別。
語彙基元的型別轉換為可設定色彩的項目] 清單中的索引。
語彙基元的資訊用來填入陣列,陣列的每個項目相對於行中的字元。 儲存在陣列中的值是可設定色彩的項目] 清單中的索引。
針對每一行,就會傳回行結尾處的狀態。
如果 colorizer 需要維護狀態,請在編輯器] 會快取供這條線路的狀態。
編輯器] 中呈現的文字時,使用傳回的資訊列ColorizeLine方法。 此時,您需要進行下列步驟:
在列中每個字元,則請取得的可設定色彩的項目索引。
如果使用預設的可設定色彩項目,來存取編輯器] 的 [可設定色彩的項目] 清單。
否則,呼叫語言服務的GetColorableItem方法,以取得可設定色彩的項目。
使用可設定色彩的項目中的資訊,來呈現到顯示的文字。
受管理的封裝架構 Colorizer
受管理的封裝架構 (MPF) 提供實作 colorizer 所需的所有類別。 您的語言服務類別應繼承LanguageService類別並實作必要的方法。 您必須提供 「 掃描器 」 和 「 剖析器藉由實作IScanner介面,並傳回從該介面的執行個體GetScanner方法 (一種方法必須在實作LanguageService類別)。 如需詳細資訊,請參閱 Colorizing (受管理的封裝架構) 的語法。