gpt4 book ai didi

lua - 为我的编程语言添加标签

转载 作者:行者123 更新时间:2023-12-04 14:48:18 24 4
gpt4 key购买 nike

实际上,我是用Lua写一种编程语言。很好玩。我写了一些标准库(堆栈op和simple 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.


但是我不确定这是写得很好,甚至是可行的。您能告诉我如何用我的编程语言解析标签(并编写跳转功能)吗?或者,如果目前我的代码还不错,您可以帮助我进行改进吗?

最佳答案

我决定在解析器中使用行计数器,从而实现了在BASIC中可以看到的gotos。谢谢大家的帮助。

关于lua - 为我的编程语言添加标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44183141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com