| 6688 | |
| 6689 | static class Parser implements IParser{ |
| 6690 | public Expr parse(C context, Object frms) { |
| 6691 | ISeq forms = (ISeq) frms; |
| 6692 | if(Util.equals(RT.first(forms), DO)) |
| 6693 | forms = RT.next(forms); |
| 6694 | PersistentVector exprs = PersistentVector.EMPTY; |
| 6695 | for(; forms != null; forms = forms.next()) |
| 6696 | { |
| 6697 | Expr e = (context != C.EVAL && |
| 6698 | (context == C.STATEMENT || forms.next() != null)) ? |
| 6699 | analyze(C.STATEMENT, forms.first()) |
| 6700 | : |
| 6701 | analyze(context, forms.first()); |
| 6702 | exprs = exprs.cons(e); |
| 6703 | } |
| 6704 | if(exprs.count() == 0) |
| 6705 | exprs = exprs.cons(NIL_EXPR); |
| 6706 | return new BodyExpr(exprs); |
| 6707 | } |
| 6708 | } |
| 6709 | |
| 6710 | public Object eval() { |