Esempio n. 1
0
        public override object VisitFeature([NotNull] FeatureContext context)
        {
            Feature feature;

            if (context.port() != null)
            {
                //       Console.WriteLine("Visit port: " + context.port().ID());
                feature = new Feature(context.port().ID().GetText());
            }
            else if (context.role() != null)
            {
                //       Console.WriteLine("Visit role: " + context.role().ID());
                feature = new Feature(context.role().ID().GetText());
            }
            else if (context.execute() != null)
            {
                //   Console.WriteLine("Visit glue............. ");
                feature = new Feature("execute");
                // feature.process.Add((SysProcess)VisitGlue(context.glue()));
            }

            else
            {
                return(null);
            }


            if (context.sequence() != null)
            {
                //       Console.WriteLine("    event: " + printEvent(context.sequence().@event()));
                List <SysEvent> events = parseSequence(context.sequence().@event());
                foreach (var e in events)
                {
                    // if it is not a function but an event, concatenate name with role name
                    if (e is SysProcess && e.Name != feature.Name)
                    {
                        e.Name = feature.Name + "_" + e.Name;
                    }
                }
                feature.process.AddRange(events);
            }
            // parsing parameter of process Role
            if (context.paramdefs() != null &&
                context.paramdefs().ID() != null &&
                context.paramdefs().ID().Length > 0)
            {
                // Console.WriteLine("   params: " + context.paramdefs().ID()[0]);
                foreach (var i in context.paramdefs().ID())
                {
                    feature.Params.Add(i.GetText());
                }
            }
            return(feature);
        }