如何自动创建 Lua 表格

我正在为一种非常简单的编程语言编写非常简单的解释器,目前我正试图提取一段代码以在满足条件时进行解释。目前,需要评估的代码在关键字 compareendcompare 之间,我希望发生以下情况:

  • 从原始标记列表中删除所有内容,包括 endcompare 在内,并保留 compare
  • 将已删除的标记放入另一个表中,该表在找到原始表中的 compare 时将被评估,其中不包括 endcompare

基本上:

原始表 = {"a", "b", "c", "compare", "this", "please", "whatever", "endcompare", "d"}

在执行这个“魔术”函数后,产生以下结果:

新表 = {"a", "b", "c", "compare", "d"}
评估表 = {"this", "please", "whatever"}

在这种情况下,将评估 new,在遇到关键字 compare 时评估 c 并返回到 new

到目前为止,我已经尝试过几次,但都没有成功,除非你计算表的一部分或跳过每个其他标记...

我该如何创建所需表格?

点赞
用户459750
用户459750

我认为这样做可以满足您的需求,但我还没有测试过:

function produceTwo(original)
 local newT, c, go = {}, {}, false
 for i,v in ipairs(original) do
  if v == "compare" then
   go = true
   continue
  elseif v == "endcompare" then
   go = false
   continue
  end

  if go then
   table.insert(c, v)
  else
   table.insert(newT, v)
  end
 end
 return newT, c
end
2016-03-22 02:16:17