译员在C中输入

时间:2010-05-29 10:03:38

标签: c interpreter typing

我正在开发一名翻译,我有一些问题。

我最近看到一个小型的C解释器,它使用了一个非常简单的结构,如下所示,用于语言中的所有对象/值:

struct Object
{
    ubyte type;
    ubyte value;
};

这个结构可以包含解释器正在使用的语言中使用的字符串,整数,布尔和列表(我认为)。

  • 如何让这个Object结构保存所有这些类型?

2 个答案:

答案 0 :(得分:2)

  

如何让这个Object结构保存所有这些类型?

它不保存它只保存对其他地方存储的值的ID /引用的值。

答案 1 :(得分:1)

最有可能的是,它像sbi建议的那样完成,因此解释器的结构看起来更像:

struct Object
{
    ubyte type;
    void* value;
};

实际值将在堆上的某处分配,并且在构造对象时,解释器会在ubyte type中记录类型。稍后,函数会使用object.type注意类型,并将值替换为该类型的值,或者只是假设它是正确的类型,如下所示:

useObjectAsString(Object toUse) 
{
    char* data = (char*)toUse.value;
}

如果您想要实现几种类型,也可以尝试使用union.

相关问题