Ejemplo n.º 1
0
        protected IMaybe <int> getTerm(Block block, int index)
        {
            if (valueParser.Scan(source, index) && isNotWordOperator(valueParser.Value))
            {
                block.Add(valueParser.Verb);
                index = valueParser.Position;
                addPossibleParameter(valueParser.Value);
            }
            else
            {
                var name     = MangledName($"{FillInVariableParser.Index++}");
                var variable = new Variable(name);
                var push     = new Push(variable);
                block.Add(push);
                addPossibleParameter(variable);
            }

            while (sendMessageParser.Scan(source, index))
            {
                block.Add(sendMessageParser.Verb);
                index = sendMessageParser.Position;
            }

            return(index.Some());
        }
Ejemplo n.º 2
0
        public override Verb CreateVerb(string[] tokens)
        {
            Color(position, tokens[1].Length, IDEColor.EntityType.Whitespace);
            Color(tokens[2].Length, IDEColor.EntityType.Variable);
            var index = position + length - 1;

            if (parser.Scan(source, index))
            {
                var sendMessage = parser.Result.Verb;
                var block       = new Block
                {
                    new Push(new Variable(tokens[2])),
                    sendMessage
                };
                result.Value     = block;
                overridePosition = parser.Result.Position;
                return(new NullOp());
            }
            return(null);
        }