You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

22 rivejä
765 B

  1. Ast_Node* built_in_add(Ast_Node* operands) {
  2. double sum = 0;
  3. while (operands->type == Ast_Node_Type_Cons_Cell) {
  4. // TODO(Felix): assert type
  5. sum += operands->value.cons_cell->first->value.number->value;
  6. operands = operands->value.cons_cell->rest;
  7. }
  8. return create_ast_node_number(sum);
  9. }
  10. Ast_Node* built_in_substract(Ast_Node* operands) {
  11. double diff = operands->value.cons_cell->first->value.number->value;
  12. operands = operands->value.cons_cell->rest;
  13. while (operands->type == Ast_Node_Type_Cons_Cell) {
  14. // TODO(Felix): assert type
  15. diff -= operands->value.cons_cell->first->value.number->value;
  16. operands = operands->value.cons_cell->rest;
  17. }
  18. return create_ast_node_number(diff);
  19. }