Genişletilebilir kart oyun motoru için bir DSL yaratıyorum, boo ile çalışıyorum.Zor boo sözdizimi makro
Yeni bir kart türü için sınıf oluşturan bir kart makrosu var ve kurucudaki bazı özellikleri başlatıyor. Bu makronun başka şeyleri ayarlamak için birkaç altmacısı var. Temelde ben böyle bir şey açmak istiyorum: bu işe
card 'A new card':
type TypeA
ability EffectA:
// effect definition
: (It is a Strateji desen var) etrafında geçilecek çünkü
class ANewCard (Card):
def constructor():
Name = "A new card"
Type = Types.TypeA
AddEffect(EffectA())
class EffectA (Effect):
// effectdefintion
etkisi kesinlikle bir sınıf olması gerekir.
Şimdiye kadar, bu basit iskeleti vardır: Şimdi
macro card:
yield [|
class $(ReferenceExpression(card.Arguments[0])) (Card):
def constructor():
Name = $(card.Arguments[0])
|]
, ben de yuvalanmış oluşturulurken ben card.Body yapmalıyım yapıcı yeteneği makro eklenti kodunu yapmak için bilmiyorum sınıf. Düşüncesi olan var mı? Bu mevcut dil yetenekleri ile yapılabilir mi?