3
其實我正在Lua中編寫一種編程語言。這很有趣。我寫了一些標準庫(stack op和簡單的io)。然後我想到了標籤。它看起來像組裝。 while和for循環在任何位都不好笑,所以用該語言編程可能會非常具有挑戰性。以下是這個系統的一些要求:將標籤添加到我的編程語言中
- 標籤堆棧(或數組,字典)必須可以從全局上下文訪問。
- 跳轉指令處理程序將在單獨的文件中。
這是我的標籤處理函數看看怎麼樣:
function handleLabel(name,currentLine)
end
我不知道如何實現這種魔力。首先我想過:
LabelLineIDS = {}
Labels = {}
Labelamount = 1;
function handleLabel(name,currentLine)
LabelLineIDS[Labelamount]=currentline
Labels[Labelamount]=name
Labelamount=Labelamount+1
end
-- In file "jump.lua":
local function has_value (tab, val)
for index, value in ipairs(tab) do
if value == val then
return index
end
end
print ("Error: Label not defined.") -- Bail out.
os.exit(1)
end
local function _onlabel()
local labelName = globalparams --Globalparams variable contain parameters to each function, at the moment
--this will contain label name. It _can_ be nil.
return LabelLineIDS[has_value(Labels, labelName)]
end
CurrLine = _onlabel() --Currline - current line that get's parsed.
--1 command per one line.
但我不確定這是寫得好還是工作。你能告訴我如何解析我的編程語言中的標籤(並寫入跳轉函數)嗎?或者,如果我的代碼現在還可以,你能幫我改進嗎?
解析是一回事。 _Interpreting_ labels/jumps - 非常不同的故事:) –
@SergioTulentsev添加什麼標籤而不是'解析'? –
這個應該更好 –