public PftGroupStatement(PftParser.GroupStatementContext node) : base(node) { PftNonGrouped subTree = new PftNonGrouped(node.nonGrouped()); Children.Add(subTree); // TODO: просматривать также ссылки на глобальные переменные List <PftFieldReference> refs = subTree .GetDescendants <PftFieldReference>(); if (refs.Count != 0) { Field = refs[0]; Tag = Field.Field.Field; foreach (PftFieldReference fld in refs) { if (fld.Field.Field == Tag) { fld.Group = this; } } } // ѕомечаем все чувствительные элементы формата // как вход¤щие в повтор¤ющуюс¤ группу. subTree .GetDescendants <PftGroupItem>() .ForEach(item => item.Group = this); }
public PftGroupStatement ( PftParser.GroupStatementContext context ) { DiscoverChildren(context); }
public PftStatement(PftParser.StatementContext node) : base(node) { PftParser.GroupStatementContext groupStatementContext = node.groupStatement(); if (groupStatementContext == null) { Children.Add(new PftNonGrouped(node.nonGrouped())); } else { Children.Add(new PftGroupStatement(groupStatementContext)); } }
/// <summary> /// Exit a parse tree produced by <see cref="PftParser.groupStatement"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitGroupStatement([NotNull] PftParser.GroupStatementContext context) { }