2010-04-17 19 views
10

मैं कुछ सीखने पर शुरुआत कर रहा हूं और मैं सी ++ में फ़ाइलों के लिए अपना स्वयं का वाक्यविन्यास हाइलाइट करना चाहता हूं।सिंटैक्स हाइलाइटिंग को आप कैसे कार्यान्वित करते हैं?

क्या कोई मुझे इस बारे में विचार दे सकता है कि यह करने के बारे में कैसे जाना है?

  1. यह पार्स और फ़ाइल स्रोत किस प्रकार यह है फैसला किया जाना आवश्यक होगा:

    मेरे लिए यह है कि जब एक फ़ाइल को खोलने पर लगता है। विस्तार पर भरोसा करने को पता है कि खोजशब्द/आदेशों लागू नहीं मूर्ख प्रूफ

  2. एक तरह से किया जा सकता है क्या भाषा

  3. क्या रंग प्रत्येक खोजशब्द/आदेश हो जाता है

मैं तय करने के लिए एक तरह से सी ++ या उद्देश्य-सी का उपयोग करके ओएस एक्स पर ऐसा करना चाहते हैं।

कोई भी पॉइंटर्स प्रदान कर सकता है कि मैं इसके साथ कैसे शुरुआत कर सकता हूं?

उत्तर

1

मान लें कि आप कोको फ्रेमवर्क का उपयोग कर रहे हैं, आप फ़ाइल प्रकार निर्धारित करने के लिए यूटीआई का उपयोग कर सकते हैं।

एपीआई के अवलोकन के लिए:

http://developer.apple.com/mac/library/documentation/FileManagement/Conceptual/understanding_utis/understand_utis_intro/understand_utis_intro.html#//apple_ref/doc/uid/TP40001319-CH201-SW1

जाना जाता यूटीआई की सूची के लिए:

http://developer.apple.com/mac/library/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259-SW1

दो चाबियाँ आप शायद सबसे अधिक दिलचस्पी में kUTTypeObjectiveC PlusPlusSource होगा और kUTTypeCPlusPlusHeader।

http://www.cocoadev.com/index.pl?ImplementSyntaxHighlightingUsingTemporaryAttributes

:

पर प्रकाश डाला तो आप इस पेज के रूप में उपयोगी के बारे में जानकारी मिल सकती है के लिए वाक्य रचना एक NSView और अस्थायी विशेषताओं के साथ प्रकाश डाला की चर्चा

1

मुझे लगता है कि (1) संभव नहीं है, क्योंकि फ़ाइल को वैध सी ++ को सी ++ पार्सर के माध्यम से चलाने के लिए एकमात्र तरीका है और देखें कि यह पार्स है ... लेकिन यदि आपने इसे अपने मानक के रूप में उपयोग किया है , आप उस कोड पर काम नहीं कर सकते जो संकलित नहीं करता है क्योंकि यह एक कार्य-प्रगति है, जिसे आप शायद करना चाहते हैं। विस्तार पर भरोसा करना शायद सबसे अच्छा है, क्योंकि मुझे नहीं लगता कि कोई अन्य विधि इससे बेहतर काम करेगी।

आप यहाँ सी ++ कीवर्ड की एक सूची प्राप्त कर सकते हैं: http://www.cppreference.com/wiki/keywords/start

रंग आप (या अगर आप चाहते हैं, तो आप उन्हें विन्यास बनाने के लिए और उपयोगकर्ता के लिए विकल्प छोड़ सकते हैं)

12

सिंटेक्स हाइलाइटर अप करने के लिए कर रहे हैं आम तौर पर व्याख्यात्मक विश्लेषण से परे नहीं जाते हैं, जिसका अर्थ है कि आपको पूरी भाषा को बयान और घोषणाओं और अभिव्यक्तियों और क्या नहीं है। आपको केवल एक लेक्सर लिखना है, जो नियमित अभिव्यक्तियों के साथ काफी आसान है। यदि आप पहले से नहीं हैं, तो मैं आपको नियमित अभिव्यक्ति सीखकर शुरू करने की सलाह देता हूं। इसमें सभी 30 मिनट लगेंगे।

आप सीखने के अभ्यास के रूप में फ्लेक्स (लेक्सिकल विश्लेषक जनरेटर; https://github.com/westes/flex) के साथ टॉयइंग करने पर विचार करना चाहेंगे। फ्लेक्स में एक बुनियादी वाक्यविन्यास हाइलाइटर को कार्यान्वित करना काफी आसान होना चाहिए जो एचटीएमएल या कुछ को हाइलाइट करता है।

संक्षेप में, आप फ्लेक्स को नियमित अभिव्यक्तियों का एक सेट और मिलान करने वाले पाठ के साथ क्या करना होगा, और जनरेटर लालसा से आपके अभिव्यक्तियों के खिलाफ मैच करेगा। the flex FAQ में दिखाए गए अनुसार आप अनन्य राज्यों (जैसे स्ट्रिंग अक्षर, टिप्पणियों इत्यादि में और बाहर) के बीच अपना लेज़र संक्रमण कर सकते हैं। फ्लेक्स में लिखित सी के लिए एक लेक्सर का एक कैनोलिक उदाहरण यहां दिया गया है: http://www.lysator.liu.se/c/ANSI-C-grammar-l.html

एक एक्स्टेंसिबल सिंटैक्स हाइलाइटर बनाना आपकी यात्रा का अगला हिस्सा होगा। यद्यपि मैं एक्सएमएल का कोई प्रशंसक नहीं हूं, फिर भी देखें कि कैसे केट सिंटैक्स हाइलाइटिंग फाइलों को परिभाषित किया गया है, जैसे कि this one for C++। आपका कार्य यह पता लगाने के लिए होगा कि आप सिंटैक्स हाइलाइटर्स को कैसे परिभाषित करना चाहते हैं, फिर एक प्रोग्राम बनाएं जो HTML को उत्पन्न करने के लिए उन परिभाषाओं का उपयोग करता है या जो कुछ भी आप कृपया करते हैं।

1

आप देख सकते हैं कि कैसे GeSHI हाइलाइटिंग लागू करता है आदि। इसके अलावा, इसमें भाषा पैक का पूरा समूह है जिसमें आप जो भी कीवर्ड चाहते हैं, उनमें शामिल हैं।

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