|
● きっかけ。
秀丸標準添付の C-function.hilight で、ちょっと C を使っていたら、
1 行で定義が完結している関数が強調されていないことが分かった。
int sum(int a, int b){ return a+b; }
● c-function.hilight( jre32.dll用オリジナル )
21,^[_a-zA-Z][^\(=;:]* [_a-zA-Z][_a-zA-Z0-9]*\([^;]*$
21,^[_a-zA-Z][^\(=;:]* operator[^\(;]+\([^;]*$
21,^[_a-zA-Z][^\(=;:]*::[^\(;]+\([^;]*$
21,^[_a-zA-Z][_a-zA-Z0-9]*[a-z]+[_a-zA-Z0-9]* *\([^;]*$
最後の "[^;]*$" が問題だ。
関数呼び出しは、インデントしているので "[^;]*$" が無くても大丈夫だ。
しかし "[^;]*$" を除くと関数プロトタイプにまでマッチしてしまう。
● c-function2.hilight( breglf.dll用 )
21,^[_a-zA-Z][^(=;:]* \**[_a-zA-Z]\w*\([^;)]*(?:\)(?!;).*)?$
21,^[_a-zA-Z][^(=;:]* operator[^(;]+\([^;)]*(?:\)(?!;).*)?$
21,^[_a-zA-Z][^(=;:]*::[^(;]+\([^;)]*(?:\)(?!;).*)?$
21,^[_a-zA-Z]\w*\([^;)]*(?:\)(?!;).*)?$
● 強調できるようになった関数。
type f(int a){ return a; }
int *getp(){ return p; }
int* getg(){ return &g; }
int f(int a[], int b[] ){ return a[0]-b[0]; }
int f(int *a, int *b){ return *a - *b; }
int f(type &a){ hoge(); }
f(){ puts("foo"); }
main(int c, char *a[]){ int i; for(i=0;i<c;i++) puts(a[i]); }
● ぼやき。
jre32 用のハイライトファイルはライブラリで手に入ります。
breglf を使っている人用のハイライトファイルは手に入らない。
参考にできない。発展しない。(ToT)
arimac さんの c-function.hilight をのぞきたい。(^^;)
パパパダピョーン。
|
|