Я не могу понять, почему 2 редактора дают разные синтаксические ошибки для одного и того же сценария

Я получаю сообщение об ошибке при компиляции этого скрипта lua. Редактор LUA и ptokaX Server, похоже, так думают. Я не могу понять ошибку. Редактор LUA говорит, что ошибка в dofile(путь.."files/mcunsubs.txt"). Редактор PtokaX говорит, что ошибка в этой части кода:

data = data:gsub( "[\|]", "" )          
data = data:gsub( "\&\#124\;", "\|" )
data = data:gsub( "\&\#036\;", "\$" )

Вот код

--[[
This file is part of HiT Hi FiT Hai's PtokaX scripts
Copyright: © 2014 HiT Hi FiT Hai group
Licence: GNU General Public Licence v3 https://www.gnu.org/licenses/gpl-3.0.html
--]]

unsubbed={}
subbed={}
dofile( path.."files/mcunsubs.txt" )
tabUsers = Core.GetOnlineUsers()

for k,v in ipairs(tabUsers) do
    if not isthere_key(v.sNick,unsubbed) then
        table.insert(subbed,v.sNick)
    end
end

ircout = function(data)
    data = data:gsub( "[\|]", "" )  --  Removing the terminating '|'     character only.
    data = data:gsub( "\&\#124\;", "\|" )
    data = data:gsub( "\&\#036\;", "\$" )
    local file= io.open("/root/DCout.txt","a+")
    file:write(data.."\n")
    file:flush()
    file:close()
   end

dcmcout = function(data)
    for k,v in ipairs(subbed) do
        Core.SendToNick(v,data)
    end
end

UserConnected= function (tUser)
    if not isthere_key(tUser.sNick,unsubbed) then
        if not isthere_key(tUser.sNick,subbed) then
            table.insert(subbed,tUser.sNick)
        end
    end
end 
RegConnected = UserConnected
OpConnected = UserConnected
UserDisConnected= function (tUser)
    key = isthere_key(tUser.sNick,subbed)
    while key do
        table.remove( subbed, key)
        key = isthere_key(user.sNick,subbed)
    end
end
RegDisConnected = UserDisConnected
OpDisConnected = UserDisConnected

1 ответ

Редактор Lua (я полагаю, это SciTE) выдает ошибку в строке № 12, потому что SciTE не распознает Core таблица в следующей строке:

tabUsers = Core.GetOnlineUsers()

Когда вы выполняете тот же скрипт в PtokaX, Core Таблица определена, и там нет ошибок. Поскольку вы используете более новую версию Lua, чем та, в которой этот файл был изначально написан (написано для Lua 5.1, у вас Lua 5.2), вы получаете ошибку. Lua 5.1 был более разрешительным с неправильными шаблонами для сопоставления строк, тогда как последний - нет.

Для решения вы можете использовать следующее:

data = data:gsub( "|", "" ):gsub( "|", "|" ):gsub( "$", "$" )
Другие вопросы по тегам