示例#1
0
        public void SequenceStart(string anchor, string tag)
        {
            var node = new YSequence(new YTag(tag));

            CurrentNode.Add(node);
            nodeStack.Push(node);
            SetAnchor(anchor, node);
        }
示例#2
0
            private static void GenerateSubTypeEvents(IntPtr pNativeEmitter, YSequence node, IDictionary <YNode, string> aliases, string anchor, HashSet <YNode> visited)
            {
                const int IMPLICIT = 1;

                GenerateEvent(pNativeEmitter, x => CreateEventSequenceStart((YamlEvent *)x, anchor, node.Tag.Value, IMPLICIT, YamlSequenceStyle.YAML_ANY_SEQUENCE_STYLE));
                foreach (var item in node.Sequence)
                {
                    GenerateNodeEvents(pNativeEmitter, item, aliases, visited);
                }
                GenerateEvent(pNativeEmitter, x => CreateEventSequenceEnd((YamlEvent *)x));
            }
        private YSequence GetSequenceValueDependent(ITokenizer tokenizer)
        {
            switch (tokenizer.Current.Value.Kind)
            {
            case TokenKind.Indent when tokenizer.Current.Next?.Value.Kind == TokenKind.SequenceValue:
            {
                var sequenceNode = new YSequence(YNodeStyle.Block);
                var items        = new List <YNode>();
                tokenizer.MoveNext();

                while (tokenizer.Current.Value.Kind != TokenKind.Unindent && tokenizer.Current.Value.Kind != TokenKind.Eof)
                {
                    if (tokenizer.Current.Value.Kind != TokenKind.SequenceValue)
                    {
                        throw ParseException.UnexpectedToken(tokenizer, TokenKind.SequenceValue);
                    }

                    tokenizer.MoveNext();
                    items.Add(this.GetNodeValue(tokenizer));
                }

                if (tokenizer.Current.Value.Kind == TokenKind.Unindent)
                {
                    tokenizer.MoveNext();
                }

                sequenceNode.Add(items.ToArray());

                return(sequenceNode);
            }

            case TokenKind.SequenceBegin:
            {
                var sequenceNode = new YSequence(YNodeStyle.Flow);
                var items        = new List <YNode>();
                tokenizer.MoveNext();

                do
                {
                    if (tokenizer.Current.Value.Kind == TokenKind.SequenceEnd)
                    {
                        break;
                    }

                    items.Add(this.GetNodeValue(tokenizer));
                } while (tokenizer.Current.Value.Kind == TokenKind.ItemDelimiter && tokenizer.MoveNext());

                if (tokenizer.Current.Value.Kind != TokenKind.SequenceEnd)
                {
                    throw ParseException.UnexpectedToken(tokenizer, TokenKind.SequenceEnd);
                }

                tokenizer.MoveNext();
                sequenceNode.Add(items.ToArray());

                return(sequenceNode);
            }

            default:
                return(null);
            }
        }
示例#4
0
 public void SequenceStart(string anchor, string tag)
 {
     var node = new YSequence(new YTag(tag));
     CurrentNode.Add(node);
     nodeStack.Push(node);
     SetAnchor(anchor, node);
 }
示例#5
0
 private static void GenerateSubTypeEvents(IntPtr pNativeEmitter, YSequence node, IDictionary<YNode, string> aliases, string anchor, HashSet<YNode> visited)
 {
     const int IMPLICIT = 1;
     GenerateEvent(pNativeEmitter, x => CreateEventSequenceStart((YamlEvent*)x, anchor, node.Tag.Value, IMPLICIT, YamlSequenceStyle.YAML_ANY_SEQUENCE_STYLE));
     foreach (var item in node.Sequence)
     {
         GenerateNodeEvents(pNativeEmitter, item, aliases, visited);
     }
     GenerateEvent(pNativeEmitter, x => CreateEventSequenceEnd((YamlEvent*)x));
 }