Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn read_ahead(tok : Token, mut iterator : Vec<Token>) -> Option<ASTNode> {
- match tok {
- EOF => return None,
- RParen => return None,
- SchemeAtom(s) => return handle_atom(s),
- SchemeString(s) => return Some(StringLiteral(s)),
- LParen => {
- let mut list : Vec<ASTNode> = Vec::new();
- loop {
- let next = iterator.shift().unwrap();
- let next_is_rparen = match next { RParen => true, _ => false};
- if next_is_rparen {
- return Some(List(list));
- } else {
- match read_ahead(next, iterator) {
- None => return None,
- Some(tok_) => list.push(tok_),
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement