トップページドキュメント > Xcodeでの構文色付け定義

字句の部分一致と完全一致

さて、先ほどWordsをつかって、"Red"、"Blue"、"Yellow"の3つのキーワードを定義しましたが、この定義でテキストを書いて行くと次のようなことが起こります。

1行目は、期待どおりの結果です。2行目は、本来ならBluetoothで1つの単語ですが、その頭4文字がキーワードとして認識されています。3行目は、2行目と同じく頭4文字にキーワードを含んでいるが、こちらはキーワードとして認識されていません。これは、Xcodeが単語を認識する仕組みによるものです。

今回は、"Red"、"Blue"、"Yellow"の3つのキーワードを定義しましたが、このときそれぞれの単語を構成する文字は、全部でB R Y d e l o u wの9文字です。Xcodeはこれらの文字で構成される文字列を1つの単語として認識します。

Bluetoothtは、単語を構成する文字に含まれていないため、Xcodeは頭4文字のBlueのみを1つの単語と認識しました。逆に、Blueeeeeeは、全てが単語を構成する文字なので、Blueeeeee全体が1つの単語として認識されました。

BluetoothBlueeeeeeと同様に、全体を1つの単語として認識されるのが望ましいです。そのようにしたい場合は、次のように字句を定義します。

{
    Identifier = "my.lang.sample.text2";
    Syntax = {
        StartChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
        Chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
        Words = (
            "Red",
            "Blue",
            "Yellow"
        );
        Type = "xcode.syntax.keyword";
        AltType = "xcode.syntax.identifier";
    };
},

このようにすると、StartCharsCharsで指定される文字が単語を構成する文字となります。また、WordsにマッチしたときはTypeが構文タイプとなり、マッチしなかった単語はAltTypeが構文タイプとなるので、キーワードの字句定義とその他の識別子の字句定義を同時に行うことができます。

Copyright(C)2001-2010 STRIPE-NET. All Right Reserved.