-
Notifications
You must be signed in to change notification settings - Fork 1
LANG01
hikalium edited this page Mar 6, 2017
·
16 revisions
- nv/experimentalのデフォルト言語
- (nv/experimentalでは、構文や演算子を自由に追加する機能は重視されていない(できるけれども))
二種類の考え方がある
- IDが等しい(完全に同一のオブジェクトを指している)
- そのIDが表現するデータが、値として等しい(IDは等しくなくてもいい)
1が成立するなら2も成立するが、逆は成り立たない。
それぞれ以下の関数で表現される。
int NV_ID_isEqual(const NV_ID *a, const NV_ID *b);
int NV_ID_isEqualInValue(const NV_ID *a, const NV_ID *b);
関係は、以下の3つのIDをデータとして持つノードである。
- from: 関係の元となるノードID
- rel: どのような関係なのかをあらわすノードID
- to: 関係の先となるノードID
二種類のものが取得できる。
- その関係性が指すノードのID(RelNode.to.id)
- その関係性を表現する(RelNode.id)
nvでは、関数は存在せず、コードブロックという形で存在する。コードブロックは、単なる配列である。
直前にコードブロックがある状態で(
演算子が発動した場合、これは関数呼び出しを意味する。
nvのスコープは、動的ブロックスコープである。ある変数は、その変数が宣言されたブロックの実行が終了する際に破棄される。 スコープとは、実質的に、構造体である。この構造体には、現在実行中のブロックや、そのブロックを起動した際のスコープへの参照が保存されている。