दूसरों की तुलना में कुछ चीजें क्या आसान बनाती हैं?


8

मैं अभी WebAssembly के लिए विकिपीडिया पेज पढ़ रहा था और यह कहता है: " WebAssembly ... जावास्क्रिप्ट की तुलना में तेजी से पार्स करने के लिए डिज़ाइन किया गया है ", जो मुझे सोच रहा था, जो एक निश्चित भाषा या डेटा प्रारूप को दूसरों की तुलना में पार्स करने के लिए तेज़ बनाता है और एल्गोरिदम क्या हैं। उपयोग किया गया?

जवाबों:


18

यह विषय बहुत जटिल है। आप पार्सर एल्गोरिदम के लिए Google कर सकते हैं और आपको विस्तृत सामग्री मिल जाएगी।

सामान्य रूप में:

  • कम अस्पष्टताओं को हल किया जाना चाहिए, पार्स करने की प्रक्रिया जितनी तेज़ होगी।
  • एक निर्णय लेने से पहले जितना अधिक टोकन पर विचार करना होगा, उतना ही अधिक जटिल हो जाएगा।

उदाहरण के लिए:
जब एक जेएस पार्सर functionइस कोड में कीवर्ड देखता function xyz(a, b) {}है:, फ़ंक्शन कीवर्ड अस्पष्ट है। इसे पहले अगले टोकन को संसाधित करना होगा xyzऔर देखना होगा कि यह एक पहचानकर्ता है इससे पहले कि यह तय कर सके कि यह एक फ़ंक्शन घोषणा है।

हालांकि, अगर अगले टोकन थे, तो (हम एक फ़ंक्शन शाब्दिक के साथ काम कर रहे हैं function(a, b) {}:। इसके लिए पार्सर को बहुत अलग तरीके से व्यवहार करने की आवश्यकता है, इस प्रकार पार्सर में अधिक कोड, इस प्रकार धीमी निष्पादन।

यदि इन दोनों उद्देश्यों के लिए अलग-अलग कीवर्ड होते हैं, तो कोई अस्पष्टता नहीं होगी:

function_decl xyz(a, b, c) {} तथा function_lit(a, b, c) {}

हालाँकि, कोई भी ऐसी भाषा में लिखना नहीं चाहेगा। लेकिन WebAssembly को हाथ से नहीं लिखा जाना चाहिए। यह मनुष्य के बजाय भाषा को मशीनों के अनुरूप बनाने की अनुमति देता है।


1
क्या इसका मतलब यह होगा कि लिस्प बहुत आसानी से पार्स है?
मूसा

9
@Moses: हाँ, एक भोली लिस्प पार्सर लिखना तुच्छ है, क्योंकि सिंटैक्स एक सार सिंटैक्स ट्री की संरचना के साथ होमोओनिक है और लगभग कोई अस्पष्टता मौजूद नहीं है।
फॉशी

4
एक और अच्छा उदाहरण बाइटेकोड है, अक्सर एक लूपिंग स्विच स्टेटमेंट के साथ पार्स किया जा सकता है और यही वह है।
whatsisname

@whatsisname वास्तव में, यही बात नियमित विधानसभा और वेब असेंबली पर लागू होती है
Marstato
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.