Decodal
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
# Introduction
|
||||
|
||||
このマニュアルは、遅延評価データ記述言語の目的、設計方針、言語仕様をまとめる。
|
||||
この言語は、設定値・スキーマ・制約・派生設定を同じ式体系で扱い、組み込み環境でも実装しやすい小さな言語核を提供することを目指す。
|
||||
このマニュアルは、Decodal の目的、設計方針、言語仕様をまとめる。
|
||||
Decodal は **Deferred Constraint Data Language**、略称 **DCDL** のプロジェクト名である。
|
||||
ファイル拡張子は `.dcdl` とする。
|
||||
|
||||
Decodal は、設定値・スキーマ・制約・派生設定を同じ式体系で扱い、組み込み環境でも実装しやすい小さな言語核を提供することを目指す。
|
||||
|
||||
## 目的
|
||||
|
||||
@@ -10,7 +13,7 @@
|
||||
|
||||
例えば、以下のように制約と値を同じ構文で合成できる。
|
||||
|
||||
```n
|
||||
```dcdl
|
||||
Port = Int & >= 1 & <= 65535;
|
||||
NarrowedPort = Port & > 443;
|
||||
|
||||
@@ -47,7 +50,7 @@ Config = MyConfig & {
|
||||
- 到達不能分岐の静的検査。
|
||||
- 任意の関数呼び出し結果のグローバル memoize。
|
||||
- 正規表現エンジンの必須搭載。
|
||||
- `try / catch` の必須搭載。
|
||||
- 汎用 `try / catch` の core 搭載。
|
||||
- 完全なプログラミング言語としての汎用性。
|
||||
|
||||
## 中心概念
|
||||
@@ -74,6 +77,9 @@ Config = MyConfig & {
|
||||
言語仕様の解説は [Language Specification](./language/index.md) にまとめる。
|
||||
`language/` 配下には、構文、値、式、制約、演算子、評価意味論など、言語仕様そのものの説明だけを置く。
|
||||
|
||||
処理系の設計は [Implementation Design](./design/index.md) にまとめる。
|
||||
ここでは、AST interpreter、runtime value、thunk、合成処理、materialize、diagnostic の扱いを説明する。
|
||||
|
||||
主な章は以下である。
|
||||
|
||||
- [Value](./language/value/index.md): `String`、`Int`、`Float`、`Bool` などの値・プリミティブ制約。
|
||||
@@ -82,5 +88,7 @@ Config = MyConfig & {
|
||||
- [Composition Operators](./language/operators.md): `&` と `//` の意味。
|
||||
- [Evaluation Semantics](./language/evaluation.md): 遅延評価、thunk、循環検出。
|
||||
- [Materialization and Errors](./language/materialization-and-errors.md): 最終評価とエラー分類。
|
||||
- [Runtime Model](./design/runtime-model.md): concrete value と abstract value の内部表現。
|
||||
- [Thunk and Lazy Evaluation](./design/thunk-and-lazy-evaluation.md): 遅延計算と循環検出の処理系モデル。
|
||||
|
||||
未確定事項は [Open Issues](./open-issues.md) に集約する。
|
||||
|
||||
Reference in New Issue
Block a user