[问题描述]
用Lua实现一个能支持混合运算且容错率高的的简单计算器
[基本要求]
(1)通过命令读入一个合法的算术表达式,输出正确的结果。
(2)实现有理数处理,例如(-9)/-8+-114514*--2
(3) 能够处理省略乘号的表达,例如(114514*2)(9+114514)
以下就是代码,这是目前最为完整的计算器(不支持函数运算等),欢迎各位指点
--[[
finish : 2024/1/14 08:29:27
By : Yatwohee_是熙不是曦
]]
local args = {}
for i, v in ipairs(arg) do
if v == "-i" then
args["i"] = arg[i + 1]
elseif v == "-s" then
args["str"] = arg[i + 1]
end
end
local insertval = {
["*"] = true,
["/"] = true,
["^"] = true,
}
local operators = {
["*"] = true,
["/"] = true,
["^"] = true,
["."] = true
}
local digits = {
[0] = true,
[1] = true,
[2] = true,
[3] = true,
[4] = true,
[5] = true,
[6] = true,
[7] = true,
[8] = true,
[9] = true
}
local function removeWhitespace(str)
local result = ""
for i = 1, #str do
local char = str:sub(i, i)
if char ~= " " then
result = result .. char
end
end
return result
end
local function splitString(inputString)
local result = {}
local currentIndex = 1
while currentIndex <= #inputString do
local char = string.sub(inputString, currentIndex, currentIndex)
if char:match('%w') or char == '.' then
local start, finish = string.find(inputString, "^[%w%.]+", currentIndex)
local substring = string.sub(inputString, start, finish)
table.insert(result, substring)
currentIndex = finish + 1