init
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# 構文と字句
|
||||
|
||||
この章では、表層構文の方針をまとめる。
|
||||
厳密な 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) で定義する。
|
||||
Reference in New Issue
Block a user