Advertisement
Guest User

Untitled

a guest
Jul 13th, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. fn read_ahead(tok : Token, mut iterator : Vec<Token>) -> Option<ASTNode> {
  2. match tok {
  3. EOF => return None,
  4. RParen => return None,
  5. SchemeAtom(s) => return handle_atom(s),
  6. SchemeString(s) => return Some(StringLiteral(s)),
  7. LParen => {
  8. let mut list : Vec<ASTNode> = Vec::new();
  9. loop {
  10. let next = iterator.shift().unwrap();
  11. let next_is_rparen = match next { RParen => true, _ => false};
  12. if next_is_rparen {
  13. return Some(List(list));
  14. } else {
  15. match read_ahead(next, iterator) {
  16. None => return None,
  17. Some(tok_) => list.push(tok_),
  18. }
  19. }
  20. }
  21. }
  22. }
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement