5
私は仕事をしている拡張可能なカードゲームエンジン用のDSLを作成しています。難しい文法的なマクロ
私は新しいタイプのカード用のクラスを作成し、コンストラクタのいくつかのプロパティを初期化するカードマクロを持っています。そのマクロには他のものを設定するためのサブマクロがいくつかあります。基本的に私はそれがこのような何かを有効にする:この中
card 'A new card':
type TypeA
ability EffectA:
// effect definition
:それは(それがStrategyパターンです)周りに渡されますので、
はclass ANewCard (Card):
def constructor():
Name = "A new card"
Type = Types.TypeA
AddEffect(EffectA())
class EffectA (Effect):
// effectdefintion
効果は間違いなく、クラスにする必要があります。
これまでのところ、私はこの単純なスケルトンがあります。今
macro card:
yield [|
class $(ReferenceExpression(card.Arguments[0])) (Card):
def constructor():
Name = $(card.Arguments[0])
|]
を、私はまた、ネストされたを発生しながら、私は能力のマクロを作成するcard.Bodyで行う必要があり、コンストラクタにコードを追加しますかわかりませんクラス。何かご意見は?現在の言語機能でこれを行うことはできますか?