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