我正在爲實驗性編程語言(教育性,趣味性...)編程解釋器 到目前爲止,一切進展順利(Tokenizer &解析器),但我得到實際運行標記化和解析代碼的部分數據結構存在大問題。C++:設計intepreter的概念性問題
我的編程語言基本上只具有兩種類型,int和串,和它們被表示成C++字符串(STD類)和整數
這裏是數據結構的短版,我使用周圍傳遞值:
enum DataType
{
Null,
Int,
String
}
class Symbol
{
public:
string identifier;
DataType type;
string stringValue;
int intValue;
}
我不能使用聯合,因爲字符串不允許我。
上面的這個結構開始讓我很頭疼。
我撒這樣的代碼隨處可見,以使其發揮作用,它開始成長不可維護:
if(mySymbol.type == Int)
{
mySymbol.intValue = 1234;
} else {
mySymbol.stringValue = "abcde";
}
我使用的變量符號數據結構,功能和一般的表示返回值在編程語言中的值。
- 有沒有更好的方法來解決這個問題?但願如此!
+1暗示'Boost.Variant',還要注意它的效率非常高。 – 2010-03-31 15:54:32