Lua中是否可以将表达式转换为字符串?

我假设这不可能,但我只是想知道是否可以将表达式转换为字符串。

例如,以下代码将五和五相加:

print(tostring(5 + 5)) --> 10

我想知道是否可以做出如下操作。

print(tostring(5 + 5)) --> 5 + 5

我想知道这个问题,因为我正在制作一个绘图计算器,要创建一个函数,它必须是一个字符串。我希望可以使其更加用户友好,例如通过输入x ^ 2,而不是"x ^ 2"

点赞
用户1380332
用户1380332

你想做的是将表达式 5 + 5 转化为字符串 "5 + 5"

据我所知,在 Lua 中无法实现该转换。不过,你可以通过使用 loadstring 将字符串 "5 + 5" 转化为 5 + 5。希望有所帮助。

2014-09-22 02:17:22
用户1442917
用户1442917

如果你将表达式作为 Lua 代码的一部分,你可以将该代码解析成类似抽象语法树 (AST) 的结构,并将该 AST 转换成你需要的任何结构,可以是字符串或函数(这可能更适用于你的图形计算器)。

有几个可以做到这一点的 Lua 解析器(将 Lua 代码转换成 AST 并从 AST 生成 Lua 代码);Metalua(仅限 5.1?仅限字节码生成?)和 TypedLua(5.2+)都可以做到,还有一些其他的 Lua 解析器可以在这里找到。

2014-09-22 17:57:30