वर्तमान में इसके लिए कुछ भी नहीं है, लेकिन यह एक अच्छा विचार है। इतना अच्छा है कि someone has suggested it पहले। :-)
क्या मुझे इसे मैन्युअल रूप से करना है?
आप मैन्युअल रूप से एक नया जेनरेटर लिख सकते हैं जो आपके "डायलेक्ट स्पेक" प्रारूप को परिभाषित करता है। फिर या तो ऐसा कुछ करें जैसे इसे एक HELP कमांड दें, या इसे पहचानने के लिए सहायता का विस्तार करें।
make-dialect: function [spec [block!] body [block!]] [
return function ['arg [block! word!]] compose/deep/only [
case [
arg = 'HELP [
foreach keyword (spec/keywords) [
print [keyword "-" {your help here}]
]
]
block? arg [
do func [arg] (body) arg
]
'default [
print "Unrecognized command. Try HELP."
]
]
]
]
तो वहाँ:
बहुत ही कम उदाहरण (, बल्कि लचीलापन में संकेत के लिए नहीं सब स्पष्ट हो जाने की उम्मीद) जो इस की तरह कुछ करने में काम में आ सकता है तकनीकों का एक समूह प्रदर्शित करने के लिए आपका फ़ंक्शन जो बोलीभाषा का नमूना लेता है और एक फ़ंक्शन बनाता है। एक बार जब आप अपने जनरेटर मिल गया है, का उपयोग करते हुए यह कम मैनुअल हो सकता है:
mumble: make-dialect [keywords: [foo baz bar]] [
print ["arg is" mold arg]
]
>> mumble help
foo - your help here
baz - your help here
bar - your help here
>> mumble [<some> [dialect] {stuff}]
arg is [<some> [dialect] {stuff}]
तकनीक यहां इस्तेमाल कर रहे हैं:
शीतल का हवाला देते हुए - आम तौर पर आप mumble 'help
को कहने के लिए होता है "उद्धरण "एक जला शब्द के रूप में मदद! शब्द को पारित करने के लिए! गड़बड़ करने के लिए (डिफ़ॉल्ट HELP कमांड चलाने के विरोध में)। लेकिन क्योंकि जेनरेटेड फ़ंक्शन में 'arg
के रूप में तर्क घोषित किया गया था, यह "सॉफ्ट उद्धृत" था ... इसका मतलब है कि शब्दों और पथों का मूल्यांकन नहीं किया जाएगा। (माता-पिता, गेट-शब्द, और गेट-पथ अभी भी होंगे।) यह एक ट्रेडऑफ है क्योंकि इसका मतलब है कि अगर किसी के पास वेरिएबल है तो वे आपको पास करना चाहते हैं, उन्हें : var या (var) तर्क के रूप में कहना है बस var
की बजाय (कल्पना करें कि बोली को पार करने के लिए ब्लॉक एक चर में है) तो आप जरूरी नहीं कि इसका उपयोग करना चाहते हैं ... लेकिन मैंने सोचा कि यह mumble help
बनाने के लिए एक दिलचस्प डेमो है जो बिना शब्द के काम करता है!
दीप संरचना - spec
और body
चर जो make-dialect
को पास किया जाता केवल make-dialect
के रूप में तब तक मौजूद रहेंगे चल रहा है। एक बार खत्म होने के बाद, वे चले जाएंगे। इसलिए आप उन शब्दों को उस कार्य के शरीर में नहीं छोड़ सकते जो आप उत्पन्न कर रहे हैं। फ़ंक्शन जेनरेटर परिणाम बनाने के लिए, प्रभावी रूप से ब्लॉक के लिए डेटा निकालने और उन्हें फ़ंक्शन की बॉडी स्ट्रक्चर में सिलाई करने से पहले शरीर में माता-पिता का मूल्यांकन करने के लिए COMPOSE/DEEP का उपयोग करता है।
पुनर्प्रयोग समारोह के बाध्यकारी कार्य - उत्पन्न समारोह एक पैरामीटर arg
कि make-dialect
की कॉल स्थल पर मौजूद नहीं था के साथ एक कल्पना है। तो बहस को कुछ करने के लिए रिबाउंड होना है, लेकिन क्या? इसे मैन्युअल रूप से करना संभव है, लेकिन एक आसान तरीका यह है कि FUNC आपके लिए काम करने दें।
उन तकनीकों कि प्रस्तावित समाधान है, जो करने के लिए न केवल दस्तावेज़ बोलियों चाहता है में इस्तेमाल किया जाएगा, लेकिन (एक आसान तरीका है जिसके द्वारा उनके कीवर्ड पुनः मानचित्रित किया जा सकता है प्रदान करते हैं जैसे अगर किसी का REBOL प्रणाली कॉन्फ़िगर किया गया है एक और बोली जाने वाली भाषा के लिए)।