Exemplo n.º 1
0
        private static SExprComp wrap(SExprAtomic ha, SExprComp c, string o)
        {
            if (c.Atomics.Count != 2)
            {
                throw new VMException("it takes 2 arguments", ha);
            }
            SExprComp ret = new SExprComp();
            SExprComp op  = new SExprComp();

            ret.Atomics = c.Atomics.Take(1).ToList();

            op.Atomics.Add(new SExprAtomic(new SToken(SToken.TokenType.ATOMIC, o)));
            op.Atomics.Add(ret.Clone());
            op.Atomics.Add(c.Atomics.Skip(1).Take(1).First().Clone());

            ret.Atomics.Add(op);
            return(ret);
        }
Exemplo n.º 2
0
        private static SExprComp wrap(SExprAtomic ha, SExprComp c, bool inc)
        {
            if (c.Atomics.Count != 1)
            {
                throw new VMException("it takes 1 argument", ha);
            }
            SExprComp ret = new SExprComp();
            SExprComp op  = new SExprComp();

            ret.Atomics = c.Atomics.Take(1).ToList();

            op.Atomics.Add(new SExprAtomic(new SToken(SToken.TokenType.ATOMIC, inc ? "+" : "-")));
            op.Atomics.Add(ret.Clone());
            op.Atomics.Add(new SExprAtomic(new SToken(SToken.TokenType.NUMBER, new Decimal(1))));

            ret.Atomics.Add(op);
            return(ret);
        }