История изменений
Исправление Int64, (текущая версия) :
Можно ноду «|» указывать флаг, что я по этому пути уже ходил, и выбирать другой при следующем обходе. Пример:
class OrAST: public ExprAST {
int passes = 0;
ExprAST *lhs;
ExprAST *rhs;
Result *getValue() {
++passes;
if (passes % 2 == 0)
return rhs->getValue();
else
return lhs->getValue();
}
}
Исправление Int64, :
Можно ноду «|» указывать флаг, что я по этому пути уже ходил, и выбирать другой при следующем обходе. Пример:
class OrAST: public ExprAST {
int passes = 0;
ExprAST *lhs;
ExprAST *rhs;
Result *getValue() {
++passes;
if (passes % 2 == 0)
return rhs->getValue();
else
return lhs->getValues();
}
}
Исправление Int64, :
Можно ноду «|» указывать флаг, что я по этому пути уже ходил, и выбирать другой при следующем обходе. Пример:
class OrAST: public ExprAST {
int passes = 0;
ExprAST *lhs;
ExprAST *rhs;
Result *getValue() {
passes++;
if (passes % 2 == 0)
return rhs->getValue();
else
return lhs->getValues();
}
}
Исходная версия Int64, :
Можно ноду «|» указывать флаг, что я по этому пути уже ходил. И выбирать другой при следующем обходе. Пример:
class OrAST: public ExprAST {
int passes = 0;
ExprAST *lhs;
ExprAST *rhs;
Result *getValue() {
passes++;
if (passes % 2 == 0)
return rhs->getValue();
else
return lhs->getValues();
}
}