2014-09-22 48 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

相關問題