2008/12/06(Sat) 16:13:38 編集(投稿者)
■No29260 (.SHO さん) に返信
> ■No29259 (出水 さん) に返信
>
>>続いてもいいし切ってもいい構文の時どちらに倒すか問題になります
>>改行を完全なデリミタとするのであれば、そんなに問題になりませんが、
>>これは下位互換性を著しく損なうので、新規の言語でないと導入できないでしょう
>
> 改行をデリミタにするのは私も論外だと思います。
> その前提で、どちらに倒すか問題になる具体例があると
> 凄くありがたいのですが。。。
とりあえず前の投稿で調べて分かっているのが以下の問題です.
≪パラメータを省略できる命令の問題≫
throw
new Exception();
≪後置演算子の記号が別の用途に使われている問題≫
ケース1. 丸括弧
{
Func<string,string> f;
string s;
var a = f // ここにセミコロンを挿入できてしまう
(s+"!").ToString();
}
ケース2. 角括弧
(これは現在エラーとなるコードなので互換性の問題はありません)
{
[AttributeUsage(AttributeTargets.All)]
class DummyAttribute : Attribute
{
public DummyAttribute(string s)
{
}
}
class ListList : List<ListList>{}
static class Program
{
static int Dummy(string s)
{
return 0;
}
static ListList _list = default(ListList);
// 以下の (A) または (B) どちらか一方にのみ
// セミコロンを挿入するとコンパイルが通る
static ListList _s = _list // (A)
[Dummy("!")] // (B)
static void Main(string[] args)
{
}
}
}
C/C++ では中置演算子絡みの問題も作れますが,
今のところ C# で中置演算子を絡めた問題は構成できてないです.