public static Expr Parse(ParserContext pcon, IPersistentVector form) { ParserContext pconToUse = pcon.EvEx(); bool constant = true; IPersistentVector args = PersistentVector.EMPTY; for (int i = 0; i < form.count(); i++ ) { Expr v = Compiler.Analyze(pconToUse, form.nth(i)); args = (IPersistentVector)args.cons(v); if ( !(v is LiteralExpr) ) constant = false; } Expr ret = new VectorExpr(args); if ( form is IObj && ((IObj)form).meta() != null ) return Compiler.OptionallyGenerateMetaInit(pcon,form, ret); else if ( constant ) { IPersistentVector rv = PersistentVector.EMPTY; for ( int i=0; i<args.count(); i++ ) { LiteralExpr ve = (LiteralExpr)args.nth(i); rv = (IPersistentVector)rv.cons(ve.Val); } return new ConstantExpr(rv); } else return ret; }
public static Expr Parse(IPersistentVector form) { IPersistentVector args = PersistentVector.EMPTY; for (int i = 0; i < form.count(); i++ ) args = (IPersistentVector)args.cons(Compiler.GenerateAST(form.nth(i),false)); Expr ret = new VectorExpr(args); return Compiler.OptionallyGenerateMetaInit(form, ret); }
public static Expr Parse(IPersistentVector form) { IPersistentVector args = PersistentVector.EMPTY; for (int i = 0; i < form.count(); i++) { args = (IPersistentVector)args.cons(Compiler.GenerateAST(form.nth(i))); } Expr ret = new VectorExpr(args); return(Compiler.OptionallyGenerateMetaInit(form, ret)); }
public static Expr Parse(ParserContext pcon, IPersistentVector form) { ParserContext pconToUse = pcon.EvalOrExpr(); bool constant = true; IPersistentVector args = PersistentVector.EMPTY; for (int i = 0; i < form.count(); i++) { Expr v = Compiler.Analyze(pconToUse, form.nth(i)); args = (IPersistentVector)args.cons(v); if (!(v is LiteralExpr)) { constant = false; } } Expr ret = new VectorExpr(args); IObj iobjForm = form as IObj; if (iobjForm != null && iobjForm.meta() != null) { return(Compiler.OptionallyGenerateMetaInit(pcon, form, ret)); } else if (constant) { IPersistentVector rv = PersistentVector.EMPTY; for (int i = 0; i < args.count(); i++) { LiteralExpr ve = (LiteralExpr)args.nth(i); rv = (IPersistentVector)rv.cons(ve.Val); } return(new ConstantExpr(rv)); } else { return(ret); } }
public static Expr Parse(ParserContext pcon, IPersistentVector form) { ParserContext pconToUse = pcon.EvalOrExpr(); bool constant = true; IPersistentVector args = PersistentVector.EMPTY; for (int i = 0; i < form.count(); i++) { Expr v = Compiler.Analyze(pconToUse, form.nth(i)); args = (IPersistentVector)args.cons(v); if (!(v is LiteralExpr)) { constant = false; } } Expr ret = new VectorExpr(args); if (form is IObj iobjForm && iobjForm.meta() != null) { return(Compiler.OptionallyGenerateMetaInit(pcon, form, ret)); }