2011-01-19 12 views
7

clangに新しいキーワードを追加するにはどうすればよいですか?新しいキーワードは関数修飾子でなければなりません。宣言部分はどこに行きますか?clangにメインキーワードとして扱われるキーワードを追加するにはどうすればよいですか?

ありがとうございました。

+0

clang/LLVMの構文解析とレキシングのセクションに入れて、そこから移動する必要があるように聞こえますが、おそらくclangメーリングリストの助けになるでしょう。 – Necrolis

+0

IdentifierTabe.cppを編集して追加しましたTokenKinds.defへの新しいキーワードは、構文解析とレキシングからです。どこから定義されているかわからないので、Cのmainの動作を見つけることができません。 –

+0

[Clang対Elsaの短所の1つ](http://clang.llvm.org/comparison.html#elsa)は、Elsaが文法規則に完全に基づいた素敵なパーサーを使用していることです。私はいつもClangの開発者が同じ方法でパーサーを書くことを選択しなかった理由を疑問に思ってきました... – peoro

答えて

7

これを追加して/ clang/Basic/TokenKinds.defを追加し、ParseDeclarationSpecifiers(...)に新しいケースを追加する必要があります。

おそらく簡単にオプションは、新しい属性を定義するだろうし、その後のに対し、あなたはエラーが発生しやすい可能性がありAST、この修飾子のサポートを追加する必要があると思いますそうでなければ

#define your_new_qualifier __attribute__((your_new_attribute))

を使用します属性は同じ関数のさまざまな宣言に自動的に伝播されます。

+0

どこでその動作を定義しますか?コードの横に動作が実装されている場所に関するドキュメントはありますか? –

+1

Clangのこの特定の側面に関するドキュメントは見たことがありませんが、同様のものをコピーして貼り付けるだけで簡単にできます。たとえば、インラインの実装(これはASTにあります)、 2番目のオプションのアドレス空間属性。 –

+1

あなたが行う必要があるファイルは、#define your_new_qualifier __attribute __((your_new_attribute))とどこに "your_new_attribute" –

関連する問題