Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी देखें क्योंकि यह आपके कोड को पार्स करता है

मैंने सोचा कि आपको रूबी पार्टी की एक साफ सुथरी चाल दिखाने के लिए व्यावहारिक, उपयोगी सामग्री से ब्रेक लेना मजेदार होगा।

रूबी आपके प्रोग्राम को चलाने से पहले इसे पार्स करना होगा। पार्सर एक तरह की स्टेट मशीन है। और एक अल्पज्ञात कमांड लाइन ध्वज है जिसका उपयोग आप रूबी लॉग को वह सब कुछ करने के लिए कर सकते हैं जो राज्य मशीन करती है।

निम्नलिखित उदाहरण लें:

a = 1 + 2

अगर मैं इसे -y . का उपयोग करके चलाता हूं ध्वज, मुझे निम्न आउटपुट मिलता है:

$ ruby -y sample.rb
Starting parse
Entering state 0
Reducing stack by rule 1 (line 903):
-> $$ = nterm $@1 ()
Stack now 0
Entering state 2
Reading a token: Next token is token tIDENTIFIER ()
Shifting token tIDENTIFIER ()
Entering state 35
Reading a token: Next token is token '=' ()
Reducing stack by rule 509 (line 4417):
   $1 = token tIDENTIFIER ()
-> $$ = nterm user_variable ()
Stack now 0 2
Entering state 113
Next token is token '=' ()
Reducing stack by rule 100 (line 1764):
   $1 = nterm user_variable ()
-> $$ = nterm lhs ()
Stack now 0 2
...
140 more lines

हम यहां जो देख रहे हैं वह है रूबी पार्सर फ़ाइल में प्रत्येक टोकन के माध्यम से साइकिल चलाना और निम्नलिखित संचालन करना:

  • टोकन को स्टैक में जोड़ें
  • स्टैक की तुलना नियमों की सूची से करें
    • यदि टोकन एक नियम से मेल खाता है, तो एक राज्य संक्रमण करें
    • यदि कोई मेल नहीं है, तो स्टैक में एक और टोकन जोड़ें और पुनः प्रयास करें।

सभी राज्यों और नियमों को parse.y फ़ाइल में परिभाषित किया गया है जिसे बाइसन पार्सर जनरेटर द्वारा संसाधित किया जाता है ताकि वास्तविक पार्सर उत्पन्न किया जा सके जो सी में है।


  1. अपने रूबी तरीकों की जासूसी कैसे करें

    रूबी में एक अंतर्निहित अनुरेखण प्रणाली है जिसे आप TracePoint . का उपयोग करके एक्सेस कर सकते हैं कक्षा। कुछ चीज़ें जिन्हें आप ट्रेस कर सकते हैं, वे हैं मेथड कॉल, नए थ्रेड और अपवाद। आप इसका उपयोग क्यों करना चाहेंगे? ठीक है, यदि आप किसी निश्चित विधि के निष्पादन का पता लगाना चाहते हैं तो यह उपयोगी हो

  1. रूबी में स्थैतिक विश्लेषण

    मान लें कि आप अपने सभी तरीकों को खोजने के लिए अपने स्रोत कोड को पार्स करना चाहते हैं, जहां वे परिभाषित हैं और वे कौन से तर्क लेते हैं। आप यह कैसे कर सकते हैं? आपका पहला विचार इसके लिए एक रेगेक्सपी लिखना हो सकता है... लेकिन क्या कोई बेहतर तरीका है? हाँ! स्थिर विश्लेषण एक ऐसी तकनीक है जिसका उपय

  1. अपने रूबी कार्यक्रमों को कैसे डिबग और ठीक करें

    आपका प्रोग्राम कितनी बार ठीक वही करता है जो आप पहली बार चाहते हैं? कई बार हमारे प्रोग्राम हमारी अपेक्षा के अनुरूप काम नहीं करते हैं, इसलिए हमें रूबी को डीबग करना की कला का उपयोग करना पड़ता है। क्यों पता लगाने में हमारी मदद करने के लिए। आप निम्न त्रुटि संदेश से परिचित हो सकते हैं: undefined method