public override void ExitFile(ArcaeaFileFormatParser.FileContext context)
 {
     foreach (var item in context.body().item())
     {
         IRawAffEvent @event = item.@event().value;
         if (@event != null)
         {
             if (@event is IRawAffItem)
             {
                 chart.items.Add(@event as IRawAffItem);
             }
             else
             {
                 chart.warning.Add($"第 {item.@event().Start.Line + lineOffset} 行第 {item.@event().Start.Column + 1} 列,不可作为物件使用的事件:{item.@event().GetText()}");
             }
         }
     }
 }
 /// <summary>
 /// Exit a parse tree produced by <see cref="ArcaeaFileFormatParser.file"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitFile([NotNull] ArcaeaFileFormatParser.FileContext context)
 {
 }