We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
OpeLa 言語仕様
当初は 型 ( 値 ) を型変換として扱うつもりだったが、ポインタへの変換と間接演算子の区別が付かないことから、今は 値 @ 型 と書くことになっている。
型 ( 値 )
値 @ 型
uint ( 3 ) なら何も問題がなさそうだが、例えば * foo ( 3 ) となった場合に困る。 OpeLa は関数の定義を後ろに書くこともできるため、上記のコードを見た時点では foo が型名なのか変数や関数なのかが分からない。
uint ( 3 )
* foo ( 3 )
foo
すると * が foo(3) という関数呼び出しの戻り値を参照外ししているのか、3 を *foo というポインタ型へキャストしているのか判断できない。 構文解析の段階で AST の形そのものが曖昧になり大変辛い。
*
foo(3)
3
*foo
@ はその他の場所で使われない演算子なので、@ の後ろは必ず型名、と決めることができる。 そのおかげで文法の曖昧性がなくなる。
@