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添加什么标签而不是'解析'? –
这个应该更好 –