[英]How to compile for the Erlang VM
我正在嘗試為應用程序中的用戶腳本實現一種小型描述語言。 用戶基本上描述了如何從其他對象創建對象。 (不是真正的編程語言)。 我也可以使用JSON(但它會更冗長)。
我使用leex和yecc,我有一個像樣的解析樹。 說它是這樣的:
{def,double, %% function name double
[{x}], %% list of input names
%% return expression, in this case {Operator, Operand1, Operand2}
{'*',{var,x},{number,2}}
}.
有了這棵樹,我想建立這樣的東西:
double(State) ->
_Var1 = some_app:get_input(State,x),
_Var1 * 2.
但我不知道從哪里開始。 我可以在運行時讀取樹並構建樂趣,但我真的想學習如何編譯(並希望更好的性能)。
我應該將我的解析樹轉換為Erlang AST然后編譯erlang模塊嗎?
謝謝。
所以,經典的工作流程是這樣的:
leex
構建詞法分析器 yecc
構建解析器 cerl
compile
模塊編譯表單。 它可以生成梁二進制文件作為模塊加載或創建.beam
文件 作為leex/yecc
(LALR解析器)的替代方案,我們可以使用與PEG語法一起使用的neotoma 。 這取決於你要解析的內容。 我需要左遞歸,不想處理空格。
作為目標,EVM(BEAM)似乎很容易。 編譯最終只是簡單地從一種語言翻譯成另一種語言而Core Erlang是一種非常簡單的語言,但仍然具有表現力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.