我打算構建一個命令行工具。 我希望用戶輸入一個文本/字符串(函數/命令)。 然後,我的工具將這些字符串轉換爲C++函數/變量。如何將輸入字符串轉換爲函數()
[他們會跑我的自定義數據類型,我自己的函數,而不是運行系統功能]
例: 用戶類型
>> myVar = c(123,456,789)
我的工具就知道myVar
是變量名。和c(123,456,789)
是integer
的數組。並且它這些字符串轉換爲這樣的事情:
int myVar[] = {123,456,789};
和用戶可以調用一個函數太:
輸入:
>> myPrintf(myVar[0]);
輸出
<< 123
而且我的解決方案:我會BUIL一類,這可能是這樣的:
public class cVariable
{
public string varName; // the variable name
private varType; // the variable data-type
public string varData; // the value of this variable
}
而且我會用if/else
報表就知道我必須要運行的數據類型/功能。
但我認爲這種方式並不好。
您正在嘗試構建編譯器。祝你好運。 – SLaks 2013-03-08 02:10:53
考慮使用LLVM。 – SLaks 2013-03-08 02:11:22
你唯一真正的問題似乎是「如何將輸入字符串轉換爲函數()?」的標題。我建議'boost :: spirit'庫 - 這對您來說學習會有挑戰性,但是一旦您瞭解它,您就可以更輕鬆,更進一步地改進您的程序。如果你想快速開始,使用正則表達式可以幫助你測試賦值和函數調用,提取參數值等等。更基本的,你可以使用'sscanf()'。 「我認爲這種方式根本不好」 - 如果你解釋你的問題,人們可以發表評論。最明顯的評論是:使用ruby/perl/etc。 – 2013-03-08 02:13:08