96 lines
1.6 KiB
Markdown
96 lines
1.6 KiB
Markdown
# 構文と字句
|
|
|
|
この章では、表層構文の方針をまとめる。
|
|
厳密な EBNF は未確定であり、今後このファイルに詳細化する。
|
|
|
|
## コメント
|
|
|
|
コメントは `#` から行末までとする。
|
|
|
|
```n
|
|
# comment
|
|
host = "127.0.0.1"; # trailing comment
|
|
```
|
|
|
|
## セミコロン
|
|
|
|
オブジェクトフィールド、let 束縛、match 分岐はセミコロンで区切る。
|
|
末尾セミコロンは許可する。
|
|
|
|
```n
|
|
{
|
|
host = "127.0.0.1";
|
|
port = 8000;
|
|
}
|
|
```
|
|
|
|
## 識別子
|
|
|
|
識別子の厳密な字句規則は未確定である。
|
|
慣習としては `lower_snake`、`lowerCamel`、`UpperCamel` を使える想定とする。
|
|
|
|
```n
|
|
my_config
|
|
mkConfig
|
|
IPv4Address
|
|
```
|
|
|
|
## パス参照
|
|
|
|
ドットによるフィールド参照を許可する。
|
|
|
|
```n
|
|
config.host
|
|
config.feature_hoge.enable
|
|
```
|
|
|
|
オブジェクト内では、ドットパスによるフィールド定義も許可する。
|
|
|
|
```n
|
|
{
|
|
feature_hoge.enable = false;
|
|
}
|
|
```
|
|
|
|
これは以下と同じ構造を表す。
|
|
|
|
```n
|
|
{
|
|
feature_hoge = {
|
|
enable = false;
|
|
};
|
|
}
|
|
```
|
|
|
|
## 予約語候補
|
|
|
|
以下は予約語または予約構文として扱う候補である。
|
|
|
|
```text
|
|
let
|
|
in
|
|
match
|
|
import
|
|
default
|
|
true
|
|
false
|
|
rec
|
|
```
|
|
|
|
`rec` の扱いは未確定である。
|
|
|
|
## 演算子
|
|
|
|
主要な演算子は以下である。
|
|
|
|
```text
|
|
& 制約合成
|
|
// patch 合成
|
|
default fallback 指定
|
|
=> 関数
|
|
. フィールド参照 / ドットパス定義
|
|
```
|
|
|
|
演算子の優先順位は未確定である。
|
|
詳細は [合成演算子](./operators.md) で定義する。
|