2014-09-22 95 views
2

我假设这是不可能的,但我只是想知道如果你可以将表达式转换为字符串。是否可以将表达式转换为Lua中的字符串?

例如,下面将5条和五个一起

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

我在想,如果你能做到沿着以下线的东西。

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

我想知道,因为我正在制作一个图形计算器,并且要创建一个函数,它必须是一个字符串。我希望我可以使它更加人性化通过制作这样你就可以只输入一个表达式,比如x^2代替"x^2"

+2

你的输入读者几乎肯定会得到一个字符串......除非你直接给它一个原始的lua文件,并将lua解析为lua代码。你不能在lua中做你想要的*,但你不需要使用lua解析器来处理输入。 – 2014-09-22 01:55:51

+0

使用io.read()不会输入输入。他们实际上在lua文件中。 – David 2014-09-22 01:57:16

+0

所以你使用lua本身来解析表达式的文件?那么,你不能那样做。尽管你可以使用像metalua或你自己的解析器。 – 2014-09-22 13:11:26

回答

2

你想要做什么是一个表达式5 + 5转换为字符串"5 + 5"

AFAIK,你不能这样做在Lua。但是,您可以通过使用loadstring"5 + 5"转换为5 + 5来做相反的处理。希望它有帮助。

0

如果你有表达式作为一些Lua代码的一部分,你可以将该代码解析为抽象语法树(AST),然后将该AST转换为你需要的任何结构,这可能是一个字符串或函数(这可能会更方便您的图形计算器)。

有几个Lua解析器可以做到这一点(将Lua代码转换为AST并从AST生成Lua代码); Metalua(仅5.1版?仅字节码生成?)和TypedLua(5.2+)都可以做到这一点,还有一些其他Lua解析器列出了here

相关问题