コード例 #1
0
        public override Verb CreateVerb(string[] tokens)
        {
            Color(position, length, IDEColor.EntityType.Structures);
            var index = position + length;
            var block = OrangeCompiler.ParseBlock(source, ref index, ")");

            overridePosition = index;
            return(new CreateReadOnlyArray(block));
        }
コード例 #2
0
        public override Verb CreateVerb(string[] tokens)
        {
            Color(position, length, IDEColor.EntityType.Structure);
            var index = position + length;
            var block = OrangeCompiler.ParseBlock(source, ref index, "}");

            result.Value     = block;
            overridePosition = index;
            return(new NullOp());
        }
コード例 #3
0
ファイル: NewParser.cs プロジェクト: toddcoder/Orange2
        public override Verb CreateVerb(string[] tokens)
        {
            Color(position, tokens[1].Length, IDEColor.EntityType.Whitespaces);
            var className = tokens[2];

            Color(className.Length, IDEColor.EntityType.Variables);
            Color(tokens[3].Length, IDEColor.EntityType.Structures);
            var index = position + length;
            var block = OrangeCompiler.ParseBlock(source, ref index, "}");

            overridePosition = index;
            return(new SendNewMessage(className, block));
        }
コード例 #4
0
 public bool Parse(string source, ref int index, out Arguments arguments)
 {
     if (matcher.IsMatch(source.Substring(index), "^/s* '->' /s* '('"))
     {
         var length = matcher[0].Length;
         Parser.Color(index, length, IDEColor.EntityType.Structure);
         index += length;
         var block = OrangeCompiler.ParseBlock(source, ref index, ")");
         arguments = new Arguments(block);
         return(true);
     }
     arguments = null;
     return(false);
 }
コード例 #5
0
ファイル: XMLBegin.cs プロジェクト: toddcoder/Orange2
        public override void Render(StringWriter writer, string variableName)
        {
            Stack.Push(text);
            writer.Write($"|<{text}");
            if (attributes.IsNotEmpty())
            {
                var index = 0;
                var block = OrangeCompiler.ParseBlock(attributes, ref index, "");
                var value = block.Evaluate();
                if (value != null)
                {
                    switch (value.Type)
                    {
                    case Value.ValueType.Array:
                        var attributesText = getAttributes((Array)value.Resolve());
                        writer.WriteLine($" {attributesText}>|.write('{variableName}');");
                        break;

                    case Value.ValueType.KeyedValue:
                        var attributeText = getAttribute((KeyedValue)value);
                        writer.WriteLine($" {attributeText}>|.write('{variableName}');");
                        break;

                    default:
                        writer.WriteLine($">|.write('{variableName}');");
                        break;
                    }
                }
                else
                {
                    writer.WriteLine($">|.write('{variableName}');");
                }
            }
            else
            {
                writer.WriteLine($">|.write('{variableName}');");
            }
        }