1

vim-opencl plugin のOpenCL 構文チェッカーを作成したいと考えています。OpenCL コンパイラは、出力エラーの奇妙な書式設定を行います。エラーには 2 種類あります。

正常 (小さなエラーの説明あり):

"/tmp/OCLUKvOsF.cl", line 143: error: expression must have integral type
        rec_table[PRIME_P - ri] = PRIME_P - i;
                  ^

エラーの説明に改行があり、正常ではありません。

"/tmp/OCLUKvOsF.cl", line 148: error: a value of type "uint16" cannot be used
          to initialize an entity of type "uint"
    uint a = value, b = PRIME_P, u = 0, v = 0;
             ^

したがって、問題は、2 番目のケースの壊れたエラーの説明と、最初のケースの通常のエラー処理の 2 つの部分の連結にあります。

一般的な構文チェッカーとして syntastic使用しています。今、私はそれのためのそのようなコードを持っています:

let errorformat = '%E"%f"\, line %l: error: %m,%+C%.%#,%-Z%p^,'.
                  \'%W"%f"\, line %l: warning: %m,%-C%.%#,'.
                  \'%-G%.%#'

したがって、最初と 2 番目のエラーは次のようになります。

program.cl|143 error| expression must have integral type rec_table[PRIME_P - ri] = PRIME_P - i; ^
program.cl|148 col 14 error| a value of type "uint16" cannot be used to initialize an entity of type "uint" uint a = value, b = PRIME_P, u = 0, v = 0;

ほとんど問題ありませんが(特に2番目のケースでは)、次のようにする方法がわかりません:

program.cl|143 col 19 error| expression must have integral type
program.cl|148 col 14 error| a value of type "uint16" cannot be used to initialize an entity of type "uint"

または、少なくとも次のようにします。

program.cl|143 col 19 error| expression must have integral type rec_table[PRIME_P - ri] = PRIME_P - i;
program.cl|148 col 14 error| a value of type "uint16" cannot be used to initialize an entity of type "uint" uint a = value, b = PRIME_P, u = 0, v = 0;

アイデアはありますか?

アップデート。更新されたエラー形式と期待

4

1 に答える 1

0

これをテストするための便利な方法はわかりませんが、バックスラッシュを使用してスペースをエスケープする必要があります。

また、sの後に-spaceを付け%Cて、スペースで始まる行にのみ一致するようにすることもできます。

%Z最後に、警告については、いくつかの行を無視していて、どこにもありません。(Zの前にマイナスが必要だとは思いませんが、はっきりしていません。自分でマイナスを使用していません。

幸運を。

于 2012-11-08T00:46:00.217 に答える