क्या वर्तमान में सी # कोड को एक सार सिंटेक्स ट्री में अनुवाद करना संभव है?
हाँ, तुच्छता से विशेष परिस्थितियों में (= का उपयोग कर नए Expressions framework):
// Requires 'using System.Linq.Expressions;'
Expression<Func<int, int>> f = x => x * 2;
यह लैम्ब्डा के लिए एक अभिव्यक्ति पेड़ है, यानी एक समारोह एक int
लेने और डबल लौटने बनाता है। आप भाव फ्रेमवर्क (कि नाम स्थान में से = वर्ग) का उपयोग करके अभिव्यक्ति पेड़ को संशोधित करें और रन-टाइम में यह संकलन कर सकते हैं:
var newBody = Expression.Add(f.Body, Expression.Constant(1));
f = Expression.Lambda<Func<int, int>>(newBody, f.Parameters);
var compiled = f.Compile();
Console.WriteLine(compiled(5)); // Result: 11
ताकि वे द्वारा नए सिरे से बनाया जाना है सूचना है कि सभी भाव अपरिवर्तनीय हैं रचना। इस मामले में, मैंने 1
का एक उदाहरण प्रस्तुत किया है कि ये अभिव्यक्ति पेड़ केवल वास्तविक अभिव्यक्तियों पर काम करते हैं यानी सी # फ़ंक्शन में मिली सामग्री। आप इस तरह के वर्गों जैसे उच्च संरचनाओं के लिए वाक्यविन्यास पेड़ नहीं प्राप्त कर सकते हैं। इनके लिए CodeDom ढांचे का उपयोग करें।
स्रोत
2008-10-17 19:20:53
आश्चर्य है कि सी # कोड को एएसटी में अनुवाद करने का आपका प्रयास कैसा चल रहा है? – yeeen
मैंने प्रोजेक्ट को पकड़ में रखा है। –
लंबी अवधि की पकड़ ... लॉल –