示例#1
0
        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);
 }
示例#3
0
 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));
     }
 }
示例#4
0
 /// <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)
 {
 }