2010-03-10 11 views
9

मैं वर्तमान में एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो हार्ड कोडित मेमोरी स्थानों का उपयोग करके हार्डवेयर के टुकड़े तक पहुंच रहा है। ये स्थान विद्युत अभियंता की सनकी के आधार पर बदल सकते हैं, इसलिए मैं इंजीनियर के मेमोरी मैप से कोड उत्पन्न करना चाहता हूं। मैं अपने आप कोड (नहीं आईएल) उत्पन्न करने के लिए चाहते हैंक्या टेक्स्ट फ़ाइल से कोड उत्पन्न करने का कोई आसान तरीका है?

Name, Type, Address, Description 
Foo, int, A001, Foo integer variable 
Bar, float, A002, Bar float variable 

के समान:

class MachineMap 
{ 
    /// <summary> 
    /// Foo integer variable 
    /// </summary> 
    public readonly Addressable<int> Foo = new Addressable<int>("A001"); 
    /// <summary> 
    /// Bar float variable 
    /// </summary> 
    public readonly Addressable<float> Bar = new Addressable<float>("A002"); 
} 

किसी को भी उपकरण है कि इस कार्य को होगा पर विचारों है चलो कहते हैं कि नक्शा एक साधारण पाठ की तरह फ़ाइल है चलो आसान, या आसान?

+0

मुझे यह नहीं मिला, आपको StreamWriter से अधिक की आवश्यकता क्यों है? –

+0

उपरोक्त उदाहरण सुंदर बेवकूफ है। मेरे पास कई अलग-अलग प्रकार के एड्रेस करने योग्य वर्ग हैं और कुछ पदानुक्रम बनाना चाहते हैं; .e.g MachineMap.Arm1.Sensor1.Value इत्यादि –

उत्तर

4

टी 4 नामक विजुअल स्टूडियो की अंतर्निहित कोड जनरेशन क्षमता पर नज़र डालें। या कोई अन्य विकल्प व्यावसायिक उत्पाद हो सकता है जैसे CodeSmith
T4 (Text Template Transformation Toolkit) Code Generation - Best Kept Visual Studio Secret

+0

क्या आप जानते हैं कि टी 4/कोडस्मिथ आपको किसी अन्य स्रोत से कोड उत्पन्न करने की अनुमति देता है, उदाहरण के लिए एक्सेल शीट? –

+0

हंसेलमैन लिंक के लिए धन्यवाद। मैं टी 4 देख रहा था, लेकिन यह समझ में नहीं आया कि आप टेम्पलेट के हिस्से के रूप में अनिवार्य रूप से किसी भी सी # कोड लिख सकते हैं। यह ट्यूटोरियल मैं जो करने की कोशिश कर रहा हूं उससे बहुत अच्छी तरह से संबंधित है: http://aabs.wordpress.com/2008/06/26/state-machines-in-c-30-using-t4-templates/ –

0

आप अपनी पसंद के एक डीएसएल शिल्प के लिए, और फिर M Grammar (ओस्लो का हिस्सा) का उपयोग यह पार्स करने के लिए सक्षम हो सकता है:

स्कॉट Hanselman से इस लेख पर एक नज़र डालें।

0

निक के ओस्लो सुझाव के समान, StringTemplate एक अच्छी तरह से परिभाषित व्याकरण से टेम्पलेट-आधारित स्रोत कोड बनाने का एक और तरीका है। इसमें सी # पोर्ट है, इसलिए .NET से उपयोग करना काफी आसान है।

:%s/\(.*\), \(.*\), \(.*\), \(.*\)/public readonly Addressable<\2> \1 = new Addressable<\2>("\3")/g 

यह मुख्य पार्स हिस्सा हल करती है:

3

एक नियमित रूप से इस तरह अभिव्यक्ति (gvim या vim का प्रयोग करके) का प्रयोग करें। इसके बाद आप शीर्ष लेख और पाद फाइलों के साथ सामग्री को श्रेणीबद्ध:

type header.txt converted.txt footer.txt > source.c 

तो नक्शा अधिक जटिल है, तो व्याकरण पार्स के लिए बने एक उपकरण का उपयोग करें। अन्यथा, यदि यह वास्तव में इतना आसान है, तो इस तरह की छोटी नाखून के लिए टैंक का उपयोग करने से बचें।

+0

+1 यह और गतिशील रूप से पता योग्य <> वस्तुओं को बनाने के लिए कुछ प्रतिबिंब और आप कर रहे हैं। – kenny

संबंधित मुद्दे

 संबंधित मुद्दे