使用 ANTLR 解析 Lua 中特定函数中的 IF 语句。

我使用 Java 中 antlr 的 Lua.g 语法生成了一个 Lua 解析器。

我的 Lua 代码基本上看起来像这样:

function uniqueid_some_event (e)
 if (e:HasString("string1")) then
   -- do something
 end
 if (e:HasString("string2")) then
  -- do something
 end
end

我有成百上千这样的事件存在不同的文件中,用于特定的角色绑定。

现在我想解析这些文件,并收集每个文件中检查的条件 - 在上面的情况下 - 我想提取“string1”和“string2”作为事件触发器。(更准确地说,我想创建一个报告,仅显示每个文件的触发器)

我认为我需要在 Lua.g 中以某种方式修改我的逻辑,但我却迷失了,因为我在这里找不到任何文档 - 我看了一些 LuaEclise 它们基本上做了一些事情,但对我来说不起作用。

所以 - 是否可以在生成的 LuaParser 中添加一些 w3c DOM 返回值?或者类似于 getFunctions() 的东西,它返回所有找到的函数,并在每个函数中获取 getHasStringStatements(),它将返回条件?

点赞