अच्छी तरह से मुझे उम्मीद है कि मैं इस के साथ कुछ स्पैमिंग नियम तोड़ नहीं रहा हूं। मैं सिर्फ कैसे erlang संकलक पैटर्न मिलान लागू करता है के बारे में एक प्रश्न पूछा, और मैं कुछ महान प्रतिक्रियाएं, संकलित बाईटकोड (एक पैरामीटर सी() के निर्देश के लिए पारित के साथ प्राप्त) है, जिनमें से एक हो गया है:erlang BEAM बाइटकोड
{function, match, 1, 2}.
{label,1}.
{func_info,{atom,match},{atom,match},1}.
{label,2}.
{test,is_tuple,{f,3},[{x,0}]}.
{test,test_arity,{f,3},[{x,0},2]}.
{get_tuple_element,{x,0},0,{x,1}}.
{test,is_eq_exact,{f,3},[{x,1},{atom,a}]}.
return.
{label,3}.
{badmatch,{x,0}}
यह सब सिर्फ सादा erlang tuples। मैं कुछ गूढ़ बाइनरी चीज़ की उम्मीद कर रहा था, अनुमान नहीं। इसलिए मैं इसे आवेग पर पूछ रहा हूं (मैं कंपाइलर स्रोत को देख सकता हूं लेकिन सवाल पूछना हमेशा अतिरिक्त अंतर्दृष्टि के साथ बेहतर होता है), यह आउटपुट बाइनरी स्तर में कैसे अनुवादित होता है?
उदाहरण के लिए {test,is_tuple,{f,3},[{x,0}]}
कहें। मुझे लगता है कि यह एक निर्देश है, जिसे 'टेस्ट' कहा जाता है ... वैसे भी, तो यह आउटपुट अनिवार्य रूप से बाइटकोड स्तर की भाषा का एएसटी होगा, जिससे बाइनरी एन्कोडिंग सिर्फ 1-1 अनुवाद है? यह सब इतना रोमांचक है, मुझे नहीं पता था कि मैं आसानी से देख सकता हूं कि एरलांग कंपाइलर चीजों को तोड़ देता है।
बहुत बहुत धन्यवाद
+1 क्योंकि मुझे भी रूचि है, और Google के माध्यम से आपके पिछले प्रश्न से पीछा किया गया है :) –