2008-12-13 20 views
9

विस्तारित बैकस-नौर प्रपत्र: EBNFईबीएनएफ सीखने के लिए मुझे सामग्री कहां मिल सकती है?

मैं बहुत अवधारणाओं को पार्स करने के लिए नए हूँ। बूस्ट :: भावना पुस्तकालय के लिए व्याकरण लिखने के लिए मुझे पढ़ने और सामग्री का पालन करने के लिए पर्याप्त आसानी से कहां मिल सकता है, जो ईबीएनएफ के समान व्याकरण का उपयोग करता है?

वर्तमान में मैं विकिपीडिया से EBNF देख रहा हूं।

उत्तर

4

विकिपीडिया लेख सटीक है। यदि आपके पास पहुंच है, तो निश्चित रूप से EBNF पर Wirth's original article पढ़ें।

दूसरी बात यह जानना है कि ईबीएनएफ को को भाषाओं के लिए हाथ-लिखने के लिए आसान बनाने के लिए डिज़ाइन किया गया था जिसमें प्रत्येक वाक्य रचनात्मक निर्माण ने शुरुआत में कीवर्ड की पहचान की है। घुंघराले ब्रेसिज़ while लूप का अनुवाद करते हैं; वर्ग ब्रैकेट (वैकल्पिक सामान) if पर अनुवाद करता है, और विकल्प if-then-else या case कथनों का अनुवाद करते हैं। यदि आपके पास अपनी भाषा को डिजाइन करने की लक्जरी है तो आप और में एक पार्सर को तुरंत खटखटा सकते हैं, अच्छे त्रुटि संदेश दें।

एकमात्र जगह यह थोड़ा कठिन हो जाती है जब आपके पास ऐसी भाषा होती है जिसमें कई अलग-अलग स्तरों के साथ इंफिक्स ऑपरेटर होते हैं। इसके लिए आप डेव हैंनसन के पेपर Compact Recursive-Descent Parsing of Expressions चाहते हैं। शायद प्रिंसटन टेक रिपोर्ट श्रृंखला में एक मुफ्त संस्करण है, और आप हमेशा Hanson's C front end में कोड देख सकते हैं।

+1

"कंपाइलर कंस्ट्रक्शन निकलॉस विर्थ" की खोज करें, इसे एक लिंक वापस करना चाहिए जहां आप अपनी उत्कृष्ट पुस्तक के नवीनतम संस्करण को स्वतंत्र रूप से डाउनलोड कर सकते हैं। या उसका होम पेज देखें http://www.cs.inf.ethz.ch/~wirth/ –

5

बीएनएफ स्वयं सरल है, लेकिन आपको संकलक लेखकों के विचार के तरीके में उपयोग करने की आवश्यकता है। वे जरूरी नहीं पढ़ते हैं, लेकिन यूसी बर्कले और स्टैनफोर्ड से व्याख्यान नोट्स निम्नलिखित हैं।

0

ठीक है, मुझे लगता है कि विकिपीडिया दो कारणों के लिए सबसे आसान तरीका है:

  • यह लेख पर सबसे अधिक प्रासंगिक अंक में कहा गया है
  • यह पृष्ठ
  • के निचले हिस्से में आगे पढ़ने के लिए लिंक हैं

इसके अलावा मैं इसके पीछे विचार से परिचित होने के लिए standart BNF पढ़ने का सुझाव दूंगा।

कम से कम मैं हमेशा विकिपीडिया के साथ भी शुरू करता हूं, और यह लगभग हमेशा मदद करता है।

1

Here PHP में एक ईबीएनएफ पार्सर है।

इसके अलावा, नियमित रूप से अभिव्यक्ति इंजन लागू किए जाने के तरीके के बारे में कुछ सीखने में सहायता मिल सकती है। आज़माएं: re2

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