Я программирую переводчик для экспериментального языка программирования (образовательный, веселый, ...)
Пока что все прошло хорошо (Tokenizer & Parser), но у меня возникает огромная проблема с некоторыми структурами данных в той части, которая фактически выполняет размеченный и проанализированный код.
Мой язык программирования в основном имеет только два типа, int и string, и они представлены в виде строк C ++ (класс std) и целых чисел
Вот краткая версия структуры данных, которую я использую для передачи значений:
enum DataType
{
Null,
Int,
String
}
class Symbol
{
public:
string identifier;
DataType type;
string stringValue;
int intValue;
}
Я не могу использовать union, потому что string не позволяет мне.
Эта структура выше вызывает у меня головную боль.
Мне нужно разбросать код по всему так, чтобы он работал, он начинает становиться неуправляемым:
if( mySymbol.type == Int )
{
mySymbol.intValue = 1234;
} else {
mySymbol.stringValue = "abcde";
}
Я использую структуру данных Symbol для переменных, возвращаемые значения для функций и общее представление значений на языке программирования.
- Есть ли лучший способ решить эту проблему? Я надеюсь на это!