Decodal/doc/manual/souce/language/syntax.md
2026-06-16 00:45:10 +09:00

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) で定義する。