Umarım bununla birlikte bazı spam kurallarını ihlal etmem. Sadece erlang derleyici desen eşleştirme nasıl uyguladığını hakkında bir soru sordu, ben (c() yönergesi geçirilen bir parametre ile elde edilir) derlenen baytkod bunlardan biri bazı büyük tepkiler aldık:erlang BEAM bytecode
{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}}
hepsi sadece düz erlang tuples. Bazı şifreli ikili şeyleri bekliyordum, sanırım değil. Bu yüzden bunu dürtü üzerinde soruyorum (derleyici kaynağına bakabilirim fakat soru sormak her zaman ek bir anlayışla daha iyi olur), bu çıktı nasıl ikili düzeyde tercüme edilir?
, örneğin {test,is_tuple,{f,3},[{x,0}]}
diyelim. Bunun, 'test' olarak adlandırılan bir komut olduğunu farzedeyim ... bu nedenle, bu çıktı aslında ikili kodlamanın sadece 1-1 çeviri olduğu bayt kodu düzeyindeki dilin AST'si olacak mı? Hepsi bu kadar heyecan verici, ben de erlang derleyicisinin neyi içine soktuğunu kolayca görebileceğim konusunda hiçbir fikrim yoktu.
+1 Ayrıca ilgileniyorum, ve önceki sorudan itibaren Google'dan takip edebilirsiniz :) –