印刷
カテゴリ: テキストエディタ作成
参照数: 200

検索その2の続き。

今回は、キーワードの色付け。前回と同じ部分なので、ついでに実装しちゃう。
C++ の予約語をキーワードとして色付けしようと思ったけど、結構多いので外部ファイルから読み込むようにした。
読み込み自体は、そのパーサーが呼ばれる時(cpp_parser が実体化したら、その時にファイルを読み込む)。

読み込み方は、単純に一行ずつ読んで改行を捨て、空じゃなければ

static std::map<std::string, std::map<char32_t, std::vector< std::u32string > >* > g_keywords;

に格納する。ってなんじゃこりゃ 笑
パッと見、全然分からんな。。分解すると、

 

map<キーワード識別子, キーワード格納テーブル> g_keywords;

キーワード識別子は、指定のキーワード格納テーブルを呼び出す用。
なんでも良いんだけど、分かりやすい様に言語名にした。

map<"c", table> とか map<"cpp", table> みたいな感じ。

 

map<キーワード先頭文字, キーワード> キーワード格納テーブル;

キーワード格納テーブルは、キーワードの先頭一文字で頭出しできるために使用。

map<U'v', vector< U"void" > > みたいに。

 

vector< u32string > キーワード

キーワードは、vector の配列で、実際のキーワードを u32string に格納したものが定義分格納されてる。

 

実装した結果。

スクリーンショット 2019 03 19 19.34.57