दिलचस्प पोस्ट
सूची </ string> में मामले संवेदनशीलता की अनदेखी कैसे करें मैं एक SQLite क्वेरी में regex का उपयोग कैसे करूं? स्पिनर आईआईटीम सेलेक्टेड () अयोग्य तरीके से निष्पादित करता है बाश में 2 डी सरणी कैसे घोषित करें एंड्रॉइड स्टूडियो में मैं एक पुस्तकालय परियोजना कैसे जोड़ूं? $। एजेक्स के प्रदर्शन के दौरान चित्र लोड करना दिखाएं जीपीटी – आरपीसी कॉल में <Serializable> सूची का उपयोग करना? एक स्ट्रिंग को एक बाइट सरणी में कनवर्ट करें और फिर मूल स्ट्रिंग पर वापस जाएं बाहरी स्पर्श को बंद करने से एंड्रॉइड गतिविधि संवाद रोकें `और पोस्ट: प्रकाशित किए गए में दृश्य_संख्या` कोल्लेक्ट (&: views_count)` ओपनसीएल में बाधाएं क्या स्ट्रैक्टस इंटरफेस लागू करने के लिए यह सुरक्षित है? प्रति कुंजी एकाधिक / वैकल्पिक वर्णों के साथ एक सॉफ्टके-बोर्ड बनाना पा गणना (ए, बी) मॉड n आप NSAttributedString का उपयोग कैसे करते हैं?

सी # के लिए पार्सर

सी # कोड को पार्स करने के लिए कौन सा पार्सर उपलब्ध हैं?

मैं एक सी # पार्सर के लिए देख रहा हूँ जो कि सी # में इस्तेमाल किया जा सकता है और मुझे विश्लेषण कोड के प्रत्येक कलाकृति के बारे में लाइन और फ़ाइल सूचनाओं के लिए प्रवेश प्रदान करता है।

Solutions Collecting From Web of "सी # के लिए पार्सर"

स्रोत कोड पर काम करता है:

  • सीस्पर्सर : सी # 1.0 से 2.0 तक, ओपन सोर्स
  • मेटास्पैक सी # पार्सर : सी # 1.0 से 3.0 तक, वाणिज्यिक उत्पाद (लगभग 5000 डॉलर)
  • #पहचानना! : सी # 1.0 से 3.0 तक, वाणिज्यिक उत्पाद (लगभग 900 €) ( SharpRecognize द्वारा उत्तर)
  • ShardDevelop पार्सर ( एक्ससेल्सन द्वारा उत्तर)
  • NRefactory : C # 1.0 से 4.0 (+ async), ओपन-सोर्स, पार्सर, SharpDevelop में उपयोग किया जाता है। सिमेंटिक विश्लेषण शामिल है
  • सी # पार्सर और कोडडॉम : एक पूर्ण सी # 4.0 पार्सर, पहले से ही सी # 5.0 async सुविधा का समर्थन करते हैं। वाणिज्यिक उत्पाद (49 $ 299 $) ( केन बेकेट द्वारा उत्तर)
  • Microsoft Roslyn CTP : एक सेवा के रूप में संकलक।

विधानसभा पर काम करता है:

  • System.Reflection
  • माइक्रोसॉफ्ट कॉमन कंपाइलर इन्फ्रास्ट्रक्चर : सी # 1.0 से 3.0 तक, माइक्रोसॉफ्ट पब्लिक लाइसेंस Fxcop और Spec # द्वारा प्रयुक्त
  • मोनो। सीसिल : सी # 1.0 से 3.0 तक, ओपन सोर्स

असेंबली "पार्सिंग" के साथ समस्या यह है कि हमारे पास रेखा और फ़ाइल के बारे में कम जानकारी है (सूचनाओं। पीडीबी फ़ाइल पर आधारित है, और पीडीबी केवल तरीकों के लिए लाइनों की जानकारी देता है)

मैं व्यक्तिगत रूप से मोनो सीसिल और एनआरफेफिनेट की सलाह देता हूं

मोनो (ओपन सोर्स) में सी # कंपाइलर (और पाठ्यक्रम पार्सर) शामिल है

यदि आप सी # वी 3.5 को शुद्ध विधानसभाओं के लिए संकलित करने जा रहे हैं:

var cp = new Microsoft.CSharp.CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } }); 

http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx

यदि आप एएनटीएलआर से परिचित हैं, तो आप एंटिल सी # व्याकरण का उपयोग कर सकते हैं।

मैंने ओडब्ल्यूएएसपी ओ 2 प्लेटफार्म प्रोजेक्ट पर SharpDevelop एएसटी एपीआई का प्रयोग करते हुए, जो कुछ आप पूछ रहे हैं (सी # कोड का एएसटी पार्सिंग) मैंने लागू किया है।

उपभोग करना आसान बनाने के लिए मैंने एक त्वरित एपीआई लिखा था जो कई प्रमुख स्रोत कोड तत्वों (बयानों, प्रकार, विधियों, गुणों, क्षेत्रों, टिप्पणियों का उपयोग करके) को उजागर करता है और मूल सी # कोड को सी # में और वीएनबीईटी में फिर से लिखने में सक्षम है ।

आप इस O2 XRule स्क्रिप्ट फ़ाइल पर कार्रवाई में इस एपीआई देख सकते हैं: ascx_View_SourceCode_AST.cs.o2 ।

उदाहरण के लिए, आप एक सी # स्रोत कोड पाठ की प्रक्रिया कैसे करते हैं और कई पेड़दृश्य और टेक्स्ट बॉक्स को पॉप्यूलेट करते हैं:

  public void updateView(string sourceCode) { var ast = new Ast_CSharp(sourceCode); ast_TreeView.show_Ast(ast); types_TreeView.show_List(ast.astDetails.Types, "Text"); usingDeclarations_TreeView.show_List(ast.astDetails.UsingDeclarations,"Text"); methods_TreeView.show_List(ast.astDetails.Methods,"Text"); fields_TreeView.show_List(ast.astDetails.Fields,"Text"); properties_TreeView.show_List(ast.astDetails.Properties,"Text"); comments_TreeView.show_List(ast.astDetails.Comments,"Text"); rewritenCSharpCode_SourceCodeEditor.setDocumentContents(ast.astDetails.CSharpCode, ".cs"); rewritenVBNet_SourceCodeEditor.setDocumentContents(ast.astDetails.VBNetCode, ".vb"); } 

Ascx_View_SourceCode_AST.cs.o2 पर उदाहरण यह भी दिखाता है कि आप एएसटी से इकट्ठी की गई जानकारी का उपयोग स्रोत कोड को एक प्रकार, विधि, टिप्पणी, इत्यादि पर कैसे कर सकते हैं।

संदर्भ के लिए यहां एपीआई कोड लिखा गया है (ध्यान दें कि यह SharpDevelop के सी # एएसटी पार्सर का उपयोग करने वाला मेरा पहला पास है, और मैं अभी भी अपने सिर को कैसे काम करता है):

  • AstDetails.cs
  • AstTreeView.cs
  • AstValue.cs
  • Ast_CSharp.cs

हमने हाल ही में एक सी # पार्सर जारी किया है जो सभी सी # 4.0 सुविधाओं के साथ-साथ नए async सुविधा को संभालता है: सी # पार्सर और कोडडॉम

यह लाइब्रेरी एक सिमेंटिक ऑब्जेक्ट मॉडल बनाता है जो टिप्पणियां और स्वरूपण जानकारी रखता है और इसे संशोधित और सहेजा जा सकता है। यह स्रोत कोड का विश्लेषण करने के लिए LINQ क्वेरीज़ के उपयोग का भी समर्थन करता है।

एक खुला स्रोत IDE, SharpDevelop , विज़िटर-आधारित कोड पार्सर के साथ आता है जो वास्तव में अच्छी तरह से काम करता है। इसे आईडीई के स्वतंत्र रूप से इस्तेमाल किया जा सकता है

सी # कोड को सीधे पार्स करने के बजाए एक निर्मित बाइनरी पर प्रतिबिंब का उपयोग करने पर विचार करें प्रतिबिंब एपीआई का प्रयोग करना आसान है और संभवत: आप जितनी सारी जानकारी की ज़रूरत है उसे प्राप्त कर सकते हैं?

गोल्ड पार्सर पर एक नजर डालें यह एक बहुत सहज ज्ञान युक्त IU है जिससे आप इंटरैक्टिव रूप से अपने व्याकरण का परीक्षण कर सकते हैं और सी # कोड उत्पन्न कर सकते हैं। इसके साथ बहुत सारे उदाहरण उपलब्ध हैं और यह पूरी तरह से नि: शुल्क है।

हो सकता है कि आप विडंबना से irony.codeplex.com पर कोशिश कर सकें।

यह बहुत तेज है और एसी # व्याकरण पहले से मौजूद है

ब्रैमर स्वयं सीधे बीएनएफ में सी # में लिखा जाता है (कुछ ऑपरेटर अधिभार के साथ प्राप्त किया गया)

इसके साथ सबसे अच्छी बात यह है कि "व्याकरण" एएसटी सीधे उत्पादन करता है

एमएस ने अब अपाचे 2 लाइसेंस के साथ कोड खोला (या जल्द ही खुला होगा) के बाद आपको निश्चित रूप से रॉसलीन को चेक करना चाहिए। आप इस जानकारी को GitHub से इस कोड के साथ पार्स करने के लिए एक तरीका भी देख सकते हैं।

नौकरी के लिए गति और बहुत उपयुक्त है जो कुछ है

आप एनडीसी से इन वीडियो में इसे कैसे हल कर सकते हैं:

  • इगोर Tkachev – Nemerle के साथ मेटाप्रोग्रामिंग
  • इगोर Tkachev – Nemerle प्रोग्रामिंग भाषा

सी # में नहीं है, लेकिन एक पूर्ण सी # 2/3/4 पार्सर जो पूर्ण एएसटी बनाता है हमारे डीएमएस सॉफ्टवेयर रीनजिनिअरिंग टूलकिट के साथ उपलब्ध है।

डीएमएस पार्सिंग, ट्री बिल्डिंग, प्रतीक तालिकाओं का निर्माण और प्रवाह विश्लेषण, स्रोत-टू-सोर्स परिवर्तन, और (संशोधित) एएसटीएस से स्रोत कोड के उत्थान के लिए एक विशाल बुनियादी ढांचा प्रदान करता है। (यह सिर्फ सी # की तुलना में कई अन्य भाषाओं को भी संभालता है।)

संपादित करें (सितंबर) 2013: यह उत्तर हाल ही में अपडेट नहीं किया गया है। डीएमएस ने लंबे समय से सी # 5.0 संभाला है

जीपीपीजी का इस्तेमाल हो सकता है, अगर आप अपना पार्सर लिखना चाहते हैं (जो मज़ेदार है)।