summaryrefslogtreecommitdiff
path: root/doc/MML_BNF.md
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-07-12 16:20:37 +0900
committertanaka takashi <isazaka@gmail.com>2026-07-12 16:20:37 +0900
commit8a1fcf81dbab9e2eff3c4d558c6910bc8208e49e (patch)
tree70e6f5f867c8308f72fc106eb4ce0634c146d651 /doc/MML_BNF.md
parent22f96694a96ed9fba169e77bc27d19d00edca083 (diff)
MML構文解析処理一部修正。ドキュメント最新化
Diffstat (limited to 'doc/MML_BNF.md')
-rw-r--r--doc/MML_BNF.md23
1 files changed, 12 insertions, 11 deletions
diff --git a/doc/MML_BNF.md b/doc/MML_BNF.md
index 3657ecd..599fd24 100644
--- a/doc/MML_BNF.md
+++ b/doc/MML_BNF.md
@@ -60,7 +60,6 @@
<ppmck_track> ::= <track_header> <ppmck_statement>*
<track_header> ::= "A" | "B" | "T" | "N" | "L"
- | /* 第2段階: 複合ヘッダー "ACE" 等 */
```
### 2.2 ステートメント
@@ -97,7 +96,9 @@
<comment> ::= ";" <string_to_eol>
```
-### 2.3 第2段階予定コマンド(未実装、BNF に含める)
+### 2.3 将来予定コマンド(現在の受理文法には含めない)
+
+以下は設計予約であり、現在は構文エラーになる。実装時に受理文法へ移す。
```bnf
<ppmck_stage2> ::= <count_length>
@@ -172,8 +173,9 @@
<gate_cmd> ::= "Q" <number> /* Q0 〜 Q100 */
<tone_cmd> ::= "@" <number> /* @0 〜 @3, Pulse系のみ有効 */
<tempo_cmd> ::= "T" <number> /* T1 〜 */
-<transpose_cmd> ::= "K" <number> /* 半音単位 */
-<detune_cmd> ::= "Y" <number> /* セント単位 */
+<signed_number> ::= ("+" | "-")? <number>
+<transpose_cmd> ::= "K" <signed_number> /* 半音単位 */
+<detune_cmd> ::= "Y" <signed_number> /* セント単位 */
<tie_cmd> ::= <tie> (<note> | <rest> | <number>)
```
@@ -184,16 +186,13 @@
<ext_cmd> ::= <env_cmd> | <vib_cmd> | <gli_cmd>
<env_cmd> ::= "@ENV" <number> <env_def>?
-<env_def> ::= "{" <number> "," <number> ("," <number>)* "}"
- | <number>+
+<env_def> ::= <number>+
<vib_cmd> ::= "@VIB" <number> <vib_def>?
-<vib_def> ::= "{" <number> "," <number> "," <number> "}"
- | <number>+
+<vib_def> ::= <number>+
<gli_cmd> ::= "@GLI" <number> <gli_def>?
-<gli_def> ::= "{" <number> "," <number> "}"
- | <number>+
+<gli_def> ::= <number>+
```
---
@@ -228,5 +227,7 @@
## 6. 備考
- 本 BNF は `mml-composemusic-mcp` の**サポート範囲**を定義するものであり、オリジナルの PPMCK や Pyxel の全機能を網羅するものではない。
-- 第2段階予定コマンドは BNF に含めるが、第1段階実装では `SEMANTIC_UNSUPPORTED_FEATURE` として警告を返す。
+- 第2段階予定コマンドは設計予約として記載するが、現在の受理文法には含めない。
+- `@ENV` / `@VIB` / `@GLI` は構文解析してIRへ保持し、合成未対応を `SEMANTIC_UNSUPPORTED_FEATURE` で警告する。
+- コマンド文字は ppmck では小文字、pyxel では大文字を使用する。音符・休符も同じ規則に従う。
- 詳細な実装アーキテクチャは [Design.md](Design.md) を参照。