Advertisement
Guest User

Untitled

a guest
Jul 26th, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. static EXP_type evaluate_sequence(PAI_type Expressions)
  2. { sEQ_type sequence_thread;
  3. CNT_type continuation;
  4. EXP_type expression;
  5. PAI_type expressions;
  6. TAG_type tag;
  7. expression = Expressions->car;
  8. expressions = Expressions->cdr;
  9. tag = Tag_of(expressions);
  10. switch (tag)
  11. { case NUL_tag:
  12. return evaluate_expression(expression);
  13. case PAI_tag:
  14. // If the previous continuation was a continue_sequence we can reuse it.
  15. continuation = Thread_Peek();
  16. if(continuation->cfn == Continue_sequence)
  17. {
  18. sequence_thread = (sEQ_type)continuation;
  19. sequence_thread->exs = expressions;
  20. }
  21. else
  22. {
  23. continuation = Thread_Push(Continue_sequence,
  24. sEQ_size);
  25. sequence_thread = (sEQ_type)continuation;
  26. sequence_thread->exs = expressions;
  27. }
  28. return evaluate_expression(expression);
  29. }
  30. return Main_Error_Text(ITF_error_string,
  31. Main_Sequence_String); }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement