DSLの論理的な文法を検討し、実装方法を選択しましょう。
要素の性質 | BNF記法による例 | 考えられる実装 |
必須リスト | parent ::= first second third | Nested Function |
オプションリスト | parent ::= first maybeSecond? maybeThird | Method Chaining Literal Map |
同じサブ要素が複数 (均質バッグ) | parent ::= child* | Literal List Function Sequence |
異なるサブ要素が複数 (異質バッグ) | parent ::= (this|that|theOther)* | Method Chaining |
コレクション (Set) | 該当なし* | Literal Map |
最低1回※1 | parent ::= child+ | 該当なし |
※1:内部DSL構築には役に立たない。最善策は、複数要素の一般的なフォームを使い、解析中に検査する事。
DSLすっかり忘れました。引退時の千代の富士状態です。