我正在为实验性编程语言(教育性,趣味性...)编程解释器 到目前为止,一切进展顺利(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