Fix highlight on unnamed class, struct and enum

C++ では，特定のクラスから継承して匿名クラスを定義することができます．また，`enum` に underlying type を指定することができます．
これらの構文がラベルの構文に似ており，シンタックスハイライトはラベル部分のみのマッチで行われてしまうので誤ってラベルとしてハイライトされてしまっていました．

```cpp
struct base{};

int main()
{
    //
    // Below 'enum', 'struct' and 'class' are highlighted as label
    //

    // Specify int as enum's underlying
    enum : int {} aaa;

    // unnamed derived struct
    struct : base {} bbb;

    // unnamed derived class
    class : base {} ccc;

    return 0;
}
```

解決策として，ラベルが `struct`, `class`, `enum` でないかをチェックするようにしました．