C++在编写脚本语言时如何处理类类型

C++ how to handle class types when writing a scripting language

本文关键字:处理 类型 何处理 脚本 语言 C++      更新时间:2023-10-16

我被这个问题困扰了一段时间,尽管我相信它可能很简单。我正在用c++编写一种简单的编程语言,但我无法找到在我的语言中处理变量类型的最佳方法。

例如,我可能有八种不同的变量类型,包括字符串、数字、布尔、表等!我需要知道在c++中存储这些的最佳方法,因为它们都是不同的类型,这意味着所有不同的类!不过,我会有八种以上的类型。该代码使用编译器基于行。请帮忙!

通常,您希望使用一种被称为"类型装箱"的技术。例如,PHP使用了以下内容(更像C语言):

enum class ScriptVarType {
    STRING,
    NUMBER,
};
struct ScriptVar {
    ScriptVarType type;
    union {
        std::string str;
        int num;
    };
};

如果所有类型都是类,也可以使用派生类。它们可以共享一个ScriptVar基类,您可以使用RTTI(或类似的)来获得实际类型,例如ScriptVarString

用户可定义的类型只需要有成员就可以定义所有用户部分。