मैं एक लेख लिखने की मूल बातें कहाँ सीख सकता हूँ?


86

मैं सीखना चाहता हूं कि कैसे एक लेसर लिखना है। मेरे विश्वविद्यालय के पाठ्यक्रम में एक असाइनमेंट था जहां हमें एक पार्सर (और इसके साथ जाने के लिए एक लेसर) लिखना था, लेकिन यह हमें बिना किसी निर्देश या प्रतिक्रिया (निशान से परे) के साथ दिया गया था, इसलिए मैंने वास्तव में इससे बहुत कुछ नहीं सीखा।

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

इस स्तर पर मुझे वास्तव में सर्वोत्तम प्रथाओं या अनुकूलन तकनीकों में कोई दिलचस्पी नहीं है, लेकिन इसके बजाय आवश्यक पर ध्यान देना पसंद करते हैं। मुझे शुरू करने के लिए कुछ अच्छे संसाधन क्या हैं?

जवाबों:


73

मूल रूप से लेसर लिखने के दो मुख्य दृष्टिकोण हैं:

  1. एक हाथ से लिखा हुआ बनाना जिसमें मैं इस छोटे ट्यूटोरियल की सलाह देता हूं ।
  2. कुछ lexer जनरेटर उपकरण जैसे lex का उपयोग करना । इस मामले में, मैं ट्यूटोरियल को पसंद के विशेष टूल को पढ़ने की सलाह देता हूं।

इसके अलावा मैं LLVM प्रलेखन से बहुरूपदर्शक ट्यूटोरियल की सिफारिश करना चाहूंगा । यह एक सरल भाषा के कार्यान्वयन के माध्यम से चलता है और विशेष रूप से दर्शाता है कि एक छोटा सा लेसर कैसे लिखना है। ट्यूटोरियल का C ++ और ऑब्जेक्टिव कैमल संस्करण है।

इस विषय पर शास्त्रीय पाठ्यपुस्तक कम्पाइलर हैं: सिद्धांत, तकनीक और उपकरण जिन्हें ड्रैगन बुक के नाम से भी जाना जाता है। हालाँकि यह संभवतः "काफी उन्नत लेखन अप" की श्रेणी में आता है।


4
बहुरूपदर्शक ट्यूटोरियल वह हिस्सा था जिसने वास्तव में मेरे लिए इस प्रश्न का उत्तर दिया था।
रॉबर्ट बायर्स

हाथ से एलएल (1) पार्सर लिखने के बारे में अधिक जानकारी के लिए यह उत्तर देखें ।
jchook

12

ड्रैगन बुक शायद इस विषय पर निश्चित गाइड है, हालांकि यह थोड़ा को रोके हो सकता है। भाषा कार्यान्वयन पैटर्न और प्रोग्रामिंग भाषा व्यावहारिक रूप से भी महान संसाधन हैं।


5
ड्रैगन बुक पर +1। विश्वविद्यालय में जब इससे एक बहुत कुछ सीखा। हाँ, वहाँ बहुत कुछ है, लेकिन यदि आप वास्तव में कंपाइलर डिजाइन और कार्यान्वयन में रुचि रखते हैं, तो यह एक महान संसाधन है।
डरिनह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.