मैं बूओ के साथ काम कर रहे एक एक्स्टेंसिबल कार्ड गेम इंजन के लिए एक डीएसएल बना रहा हूं।मुश्किल बू सिंटेक्टिक मैक्रो
मेरे पास एक कार्ड मैक्रो है जो एक नए प्रकार के कार्ड के लिए कक्षा बनाता है, और कन्स्ट्रक्टर में कुछ गुणों को प्रारंभ करता है। उस मैक्रो में अन्य चीजों को स्थापित करने के लिए कुछ submacros है। मूल रूप से मैं यह कुछ इस तरह चालू करना चाहते हैं:
card 'A new card':
type TypeA
ability EffectA:
// effect definition
इस में
:
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 साथ क्या करना चाहिए जबकि यह भी एक नेस्टेड पैदा निर्माता करने की क्षमता मैक्रो ऐड कोड बनाने के लिए पता नहीं है कक्षा। कोई विचार? क्या यह वर्तमान भाषा क्षमताओं के साथ किया जा सकता है?