रोज़लिन का उपयोग स्रोत कोड को कैसे संशोधित करता है? मैं SyntaxNode नहीं बना सकता और SyntaxTree में सम्मिलित कर सकता हूं। या विकल्पों का उपयोग करें (Antrl, NRefactory या कुछ और)?Roslyn का उपयोग कर स्रोत कोड को कैसे संशोधित करें?
उत्तर
आप एस SyntaxFactory
का उपयोग कर बना सकते हैं।
और आप मौजूदा सिंटैक्स पेड़ को संशोधित नहीं कर सकते (क्योंकि यह अपरिवर्तनीय है), लेकिन आप अपना नोड युक्त एक नया बना सकते हैं। With-
और Add-
विधियों, ReplaceNode
और CSharpSyntaxVisitor
पर देखें। यह कहना मुश्किल है कि इनमें से कौन सा आपकी आवश्यकताओं को सबसे ज्यादा फिट करता है।
कैसे svick ने आपको उत्तर दिया - आप मौजूदा वाक्यविन्यास पेड़ को संशोधित नहीं कर सकते हैं। Sytnax पेड़ अपरिवर्तनीय है लेकिन आप मौजूदा के आधार पर एक और बना सकते हैं। इस उद्देश्य के लिए आपको नोड बनाना और मौजूदा एक को बदलना है। नीचे आप कर सकते हैं सरल उदाहरण (का उपयोग कर बदल):
रोसलिन एपीआई की एक मौलिक सिद्धांत अचल स्थिति है:
var name = Syntax.QualifiedName(Syntax.IdentifierName("System"), Syntax.IdentifierName("Collections")); name = Syntax.QualifiedName(name, Syntax.IdentifierName("Generic")); SyntaxTree tree = SyntaxTree.ParseText( @"using System; using System.Collections; using System.Linq; using System.Text; namespace HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine(""Hello, World!""); } } }"); var root = (CompilationUnitSyntax)tree.GetRoot(); var oldUsing = root.Usings[1]; var newUsing = oldUsing.WithName(name); root = root.ReplaceNode(oldUsing, newUsing); Console.WriteLine(root.GetText());
यहाँ अपरिवर्तनीय के मामले में शुरू कर दिया दस्तावेज़ हो रही से एक नोट है। चूंकि अपरिवर्तनीय डेटा संरचनाओं को उनके निर्माण के बाद बदला नहीं जा सकता है, इसलिए उन्हें एक साथ कई उपभोक्ताओं द्वारा सुरक्षित रूप से साझा और विश्लेषण किया जा सकता है, बिना किसी अप्रत्याशित तरीकों से किसी एक को प्रभावित करने वाले उपकरण के खतरे के बिना। कोई ताले या अन्य समवर्ती उपायों की आवश्यकता नहीं है। यह Roslyn एपीआई में वाक्यविन्यास पेड़, संकलन, प्रतीकों, अर्थात् मॉडल, और हर अन्य डेटा संरचना पर लागू होता है। संशोधन के बजाय, पुराने ऑब्जेक्ट्स में निर्दिष्ट अंतरों के आधार पर नई ऑब्जेक्ट्स बनाई गई हैं। पेड़ परिवर्तन बनाने के लिए आप इस अवधारणा को सिंटैक्स पेड़ों पर लागू करेंगे!
मुझे लगता है कि इस कोड को एक उपयोग कथन की आवश्यकता है जैसे 'Syntax = Microsoft.CodeAnalysis.CSharp.SyntaxFactory;' संकलित करने के लिए। – Anssssss
- 1. Roslyn
- 2. जीडीबी का उपयोग कर स्मृति सामग्री को कैसे संशोधित करें?
- 3. संकलन से पहले कोड को कैसे संशोधित करें?
- 4. Roslyn
- 5. NetBeans का उपयोग कर जावा में initComponents() विधि को कोड/संशोधित करने के लिए कैसे करें?
- 6. Roslyn SyntaxNodes पुन: उपयोग कर रहे हैं?
- 7. जावा स्रोत कोड को अंतर्राष्ट्रीयकृत कैसे करें?
- 8. पर्ल स्रोत कोड को टोकननाइज़ कैसे करें?
- 9. node.js का उपयोग कर मौजूदा एक्सेल फ़ाइल को संशोधित करें
- 10. वेबपैक का उपयोग कर लाइब्रेरी स्रोत मानचित्र कैसे लोड करें?
- 11. Roslyn
- 12. वेबपैक का उपयोग कर ES6 कोड को कैसे छोटा करें?
- 13. Roslyn
- 14. फ़ायरबग का उपयोग कर विशिष्ट साइट से जावास्क्रिप्ट फ़ंक्शन का स्रोत कोड कैसे प्राप्त करें?
- 15. मैं emacs का उपयोग कर सी ++ स्रोत कोड को दोबारा कैसे कर सकता हूं?
- 16. NANT के साथ स्रोत को कैसे संशोधित करें?
- 17. होम ब्रू पैकेज के स्रोत कोड को संशोधित करना
- 18. Roslyn CodeFixProvider का उपयोग कर विधि में एक्सेस संशोधक जोड़ें?
- 19. स्रोत कोड का विश्लेषण और संशोधित करने के लिए एएनटीएलआर का उपयोग करना; क्या मैं गलत कर रहा हूँ?
- 20. Roslyn
- 21. Roslyn
- 22. PostSharp का उपयोग करके विधि तर्कों को कैसे संशोधित करें?
- 23. Roslyn
- 24. सी # में एफ # कोड चलाएं - (Roslyn का उपयोग कर सी # में सी # की तरह)
- 25. सी ++ स्रोत कोड में यूनिकोड का उपयोग
- 26. Roslyn
- 27. गिट का उपयोग कर लिनक्स स्रोत कोड के किसी विशेष संस्करण पर कैसे स्विच करें?
- 28. जिथब शाखा का उपयोग कर संशोधित नोड मॉड्यूल का उपयोग कैसे करें?
- 29. स्रोत कोड को कैसे पढ़ा जाए सीखें बड़े सिस्टम का उपयोग कैसे करें?
- 30. क्या मैं समय कोड पुनर्लेखन संकलन के लिए Roslyn का उपयोग कर सकता हूं?
उत्तर के लिए धन्यवाद। मुझे नोडऑरोकॉर्नलिस्ट मिला। NodeOrTokenList को SyntaxNode कैसे डाला? – user3382135
@ user3382135 आप नहीं करते हैं और मुझे समझ में नहीं आता कि आप ऐसा क्यों करना चाहते हैं। मुझे लगता है कि आपको एक नया प्रश्न पूछना चाहिए, यह बताते हुए कि आप क्या करना चाहते हैं और आपको ऐसा क्यों लगता है कि आपको इसके लिए नोडऑरोकॉर्नलिस्ट की आवश्यकता है। – svick