diff --git a/leopard_syntax.md b/leopard_syntax.md index b9fb34b..2dd4141 100644 --- a/leopard_syntax.md +++ b/leopard_syntax.md @@ -725,6 +725,32 @@ $ ./a.out `[%..]`,`[%%..]`のインデントルールバージョンとして `:%`,`:%%`が使えます +### できないこと + +インデントルールつきのキーワードは、改行してインデントを変える以外、 +閉じる事ができません: + +```ocaml +prerr_endline (match Random.int 2 with: + | 0 -> "head" + | _ -> "tail") +;; +``` + +上は次のコードに変換されるのでエラーになります。 + +```ocaml +prerr_endline (match Random.int 2 with begin + | 0 -> "head" + | _ -> "tail") +end +;; +``` +`)`を見た時に`(`以降に導入された`begin`を全て閉じればいいんですが +これをやりだすとOCaml文法の枠構造`[`..`]`とか`if`..`then`とか +`struct`..`end`とかを全部変換器に教えなきゃいけないのでせっかくの簡単な実装方法が +複雑になってしまいます。 + ### 対応しない、まだ対応していないキーワード * `begin`