Структурировать объекты в deque — lisp / схема интерпретатора

У меня были проблемы с созданием экземпляров новых структур внутри deque в c ++. Это моя собственная попытка интерпретатора LISP / схемы.

Вот код, который я имею ниже:

void store_info(stack_block *tree, deque<string> tokens){

cout << "level: " << counter << "\n";

while(temp != tokens.size()){
if(tokens[temp] == "("){
tree->lvl.push_back(tokens[temp]);
temp = temp + 1;
counter = counter + 1;
tree->branches.push_back(createstack());
store_info(tree2->branches.back(), tokens, index); //recursive call
}
else if(tokens[temp] == ")"){
tree->lvl.push_back(tokens[temp]);
temp = temp + 1;
return;
}
else {
tree->lvl.push_back(tokens[temp]);
temp++;
}
}

Tokens — это тип deque, содержащий строки, которые разбиты на разные токены

{«(«, «define», «function», «(«, «x», «y», «)», «)»}

где запятые разделяют токены. Переменные temp и counter являются глобальными целочисленными значениями.
Переменная дерева представляет собой такую ​​структуру (с глобальным отображением) в заголовочном файле:

    struct stack_block{ //holds the nested situations
deque<string> lvl;
deque<stack_block*> branches;
};

stack_block* createstack(){
stack_block *result = new stack_block;
return result;
};

int temp = 0;
int counter = 0;

Я пытался получить такие результаты:

./program
Level 1: ( define function (
Level 2: x y))

или же

./program
Level 1: define function (x y)
Level 2: xy)

Когда я на самом деле получаю это:

EVAL
Level 1:define function ( )

Вот как я печатаю следующую информацию:

string evaluate(deque<string> tokens, variables *functions, string u_input, stack_block *tree){

deque<stack_block*>::iterator j;
deque<string>::iterator i;
int k = 1;

cout << "\nEVAL\n";

for(j = tree->branches.begin(); j != tree->branches.end(); j++){
printf("Level %d:" , k);
for(i = (*j)->lvl.begin(); i != (*j)->lvl.end(); i++){
cout << *i << " ";
}
cout << "\n";
k++;
}

return "Something went wrong";
}

Эта функция оценки в настоящее время недостаточно развита, пока я не смогу правильно проанализировать вводимые пользователем данные.

У кого-нибудь есть предложения? Любой совет приветствуется

Если вас интересует основная функция, то это просто функция, анализирующая вводимые пользователем данные, и вызывающая функцию, которая приводит к удалению токенизированных строк.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]