示例#1
0
 /// <summary>
 /// Initializes a new instance of <see cref="RootPgnSyntax"/>.
 /// </summary>
 /// <param name="gameListSyntax">
 /// The syntax tree containing a list of PGN games.
 /// </param>
 /// <param name="errors">
 /// The collection of parse errors.
 /// </param>
 /// <exception cref="ArgumentNullException">
 /// <paramref name="gameListSyntax"/> and/or <paramref name="errors"/> is null.
 /// </exception>
 public RootPgnSyntax(GreenPgnGameListSyntax gameListSyntax, List <PgnErrorInfo> errors)
 {
     if (gameListSyntax == null)
     {
         throw new ArgumentNullException(nameof(gameListSyntax));
     }
     GameListSyntax = new PgnGameListSyntax(gameListSyntax);
     Errors         = errors ?? throw new ArgumentNullException(nameof(errors));
 }
示例#2
0
        internal PgnGameSyntax(PgnGameListSyntax parent, int parentIndex, GreenPgnGameSyntax green)
        {
            Parent      = parent;
            ParentIndex = parentIndex;
            Green       = green;

            tagSection = new SafeLazyObject <PgnTagSectionSyntax>(() => new PgnTagSectionSyntax(this, green.TagSection));
            plyList    = new SafeLazyObject <PgnPlyListSyntax>(() => new PgnPlyListSyntax(this, green.PlyList));

            if (green.GameResult != null)
            {
                lazyGameResultOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnGameResultWithTriviaSyntax>(
                    () => new PgnGameResultWithTriviaSyntax(this, Green.GameResult));
            }
            else
            {
                lazyGameResultOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnGameResultWithTriviaSyntax>(
                    this, green.TagSection.Length + green.PlyList.Length);
            }
        }