【问题标题】:Running a lua script as a gel script将 lua 脚本作为凝胶脚本运行
【发布时间】:2018-01-07 18:04:40
【问题描述】:

我有以下 lua 脚本,它用正确的词分隔字符串:

names = "aa bb cc dd"
words = {}
for word in names:gmatch("%w+") do table.insert(words, word) end
for k,v in pairs(words) do print(k,v) end

我正在使用一个名为 Graphite 的程序,它是一个用于计算机图形等的平台。在其自述文件中写道:

您可以编写一个 LUA 脚本并使用 Graphite 运行它。只需加载 使用 GEL 的脚本 -> 执行文件。

在 LUA 方面的经验非常少,而且对 GEL 的了解为零,因此我在运行脚本时遇到了麻烦。经过一番谷歌搜索后,我发现了这个:http://gema.sourceforge.net/new/gel.shtml#3_1, 但我仍然不太清楚gel和lua之间的联系是什么。在本网站中,它被描述为:Gema 的 Lua 绑定,一种通用文本处理实用程序。

例如,上面的脚本在 lua 解释器中按预期工作。另一方面,当我尝试将其作为 .gel 脚本执行时(因为上述软件需要 .gel 脚本),它会返回语法错误。

知道如何让它作为 .gel 脚本运行吗?或任何其他可能有帮助的评论?

【问题讨论】:

    标签: lua


    【解决方案1】:

    如果您仔细阅读文档,您会注意到:

    • 使用新语法"![" "!]" 在 gema 文件中嵌入 lua 函数

    他们还提供了一个示例:

    ![
    function inflog(x)
      if x>0 then return math.log(x)
      else return "-infty"
      end
    end
    !]
    
    <N>=@lua{return inflog($0)}
    

    按照相同的示例,以下应该可以工作:

    ![
    function split(names)
        words = {}
        for word in names:gmatch("%w+") do table.insert(words, word) end
        for k, v in ipairs(words) do print(k, v) end
        return words
    end
    !]
    
    <N>=@lua{return split($0)}
    

    【讨论】:

    • 我试过了,但它不起作用。我将他们的网站示例原样复制到一个空文件中。当我尝试运行它时,我得到: ![ ***^ ***SyntaxError ***: ***invalid syntax。 ![ 无法识别
    • 你是怎么运行的?
    猜你喜欢
    • 1970-01-01
    • 2015-03-01
    • 2016-06-19
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多