如何使我的add命令找到第一个变量的值,然后将第二个变量添加到一起?

时间:2015-08-17 03:01:46

标签: lua

vars = {}
values = {}

function open(file)
    lex(file)
end

function lex(file)
    local data = io.open(file, "r")
    for char in data:lines() do
        --Print
        if char:sub(1, 6) == "print:" then
            print(char:sub(7))
        end
        --Integer
        if char:sub(1, 2) == "V:" then
            vars [#vars + 1] = char:sub(3, 5)
            if char:sub(6, 6) == "=" then
                values [#values + 1] = char:sub(7)
            end
            --print("NAME:"..vars [#vars]..", ".."VALUE:"..values [#values])
        end
        --Add
        if char:sub(1, 4) == "add:" then
            if char:sub(5, 7) == vars[#vars] then
                if char:sub(8, 8) == "," then
                    if char:sub(9, 11) == vars[#vars] then
                        print(values[#values] + values[#values])
                        --print(vars[#vars])
                    end
                end
            end
        end
    end
    --Debug purposes
    --[[
    for k, v in pairs(vars) do
        print(k, v)
    end
    for b, a in pairs(values) do
        print(b, a)
    end
    --]]
end

function run()
    while true do
        print("Open a file")
        file = io.read()
        print("File name:"..file)
        print("")
        lex(file)
        print("")
    end
end

run()
  

基本上它所说的" - 添加"我希望它查找我们使用我们在文本文件中记下的名称设置的变量,然后查找我们使用相同名称设置的另一个变量,例如:V:Var = 12(nextline)V:Vr2 = 10 (nextline)add:Var,Vr2,然后它会添加设置的值

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。我要做的改变特别是将V之后的内容作为vars表中的一个键,并设置=之后的值作为值,所以:

if char:sub(1,2) == "V:" and char:sub(6, 6) == "=" then
  vars[char:sub(3,5)] = tonumber(char:sub(7))
end

然后,你需要为你的添加功能做的就是:

function add_vars(one, two)
  return vars[one] + vars[two]
end

至少,我想我明白你想要什么。如果不是,那么您想详细了解您的收获情况以及您的期望。