2010-03-03

C++0x本:optをどうするか

C++の文法には、省略可能なものが多くある。たとえば、関数の宣言だ。

D1 ( parameter-declaration-clause ) attribute-specifieropt cv-qualifier-seqopt ref-qualifieropt exception-specificationopt

optとは、optionalの略であり、省略可能なことを意味する。これをどうするか。つまり、

D1 ( 仮引数宣言句 ) アトリビュート指定子 CV修飾子 リファレンス修飾子 例外指定

このような文法記法にたいして、どうやって、省略可能な部分を、省略可能であることを伝えるのか。

当初、(省略可)という記法を考えた。しかし、これは、文法としての括弧と紛らわしい。それに、日本語には、イタリック体や太字は、ふさわしくない。では、C++のBasic Source Charactersと誤認されない、他の括弧をつかうのはどうか。たとえば、「」、『』、【】の類だ。

あるいは、規格のように、字を下げる表現を使うという方法もある(正式名称が分からないが)

D1 ( 仮引数宣言句 ) アトリビュート指定子省略可 CV修飾子省略可 リファレンス修飾子省略可 例外指定省略可

optはoptでもいいのではないかという意見があった。

D1 ( 仮引数宣言句 ) アトリビュート指定子opt CV修飾子opt リファレンス修飾子opt 例外指定opt

4 comments:

Anonymous said...

opt は optional の略で 省略可ではないんでは?

Anonymous said...

意味を考えたら「付けることも可能」と「省略可能」は論理的に同値になるでしょ。

Anonymous said...

すみません、よく読みませんでした
言いたいことは、指定の必要が無ければ 確かに
省略は出来るのでしょうが、 optional の 意味
を考えると、追加記述が可能という意味の方が強い
と思ったのです。
仕様を厳密に表す事を考えれば opt = 省略可は
少し同意出来ないだけです。
opt = 省略可 と 意味的になった経緯をご紹介いただければ
後学になります。

江添亮 said...

optを省略可能としているのは、単に私にとって、一番最初に思い浮かんだ、一番自然な日本語だったからです。
実際、optionalに対して、省略可能という訳語は、現実に使われています。
これをたとえば、辞書的に、随意、任意、オプショナルと訳したとして、それで「省略可能」以上に分かりやすいなら、是非とも使いたいのですが、私の言語感覚では、より分かりやすくなったとは思えません。