示例#1
0
        private Expression CreateWord(IEnumerable <Expression> contents)
        {
            Expression word = String.Expressions.New();

            word = CompilerUtils.StringConcat(word, contents);
            word = word.StripConversions();
            word = Wrap(word);
            return(word.Cast <iObject>());
        }
示例#2
0
        public override Expression Compile()
        {
            var first    = String.Expressions.New();
            var contents = Node.Select(_ => _.Accept(Compiler));

            var body = CompilerUtils.StringConcat(first, contents);

            body = ((UnaryExpression)body).Operand;
            body = body.Cast <string>();

            var symbol = Symbol.Expressions.New(body);

            return(symbol.Cast <iObject>());
        }
示例#3
0
        public override Expression Compile()
        {
            var first = base.Compile();
            var count = Node.List.Count;

            if (count == 0)
            {
                return(first);
            }

            var contents = Node.Select(_ => _.Accept(Compiler));

            first = first.StripConversions();
            return(CompilerUtils.StringConcat(first, contents));
        }
示例#4
0
        public override Expression Compile()
        {
            foreach (var child in Node.Where(_ => _.Token?.Type == tSTRING_CONTENT))
            {
                // copy dedent value to children if dedents property is set in Node
                child.Token.MergeProperties(Node.Token);
            }

            if (IsSimpleContent())
            {
                return(Node[0].Accept(Compiler));
            }

            var count    = Node.List.Count;
            var contents = Node.Select(_ => _.Accept(Compiler));

            return(CompilerUtils.StringConcat(String.Expressions.New(), contents));
        }