Exemple #1
0
        public virtual void Init(LanguageInitData InitData)
        {
            Language.GlobalHandlers.Foreach(x => SkippingHandlers.Add(x));

            if (Children != null)
            {
                for (var i = Children.Count - 1; i >= 0; i--)
                {
                    Children[i].Init(InitData);
                }
            }

            if (NewLineLeft != null)
            {
                OnlyLeft = Helper.GetStrings(NewLineLeft, NewLineRight);
            }

            if (NewLineRight != null)
            {
                OnlyRight = Helper.GetStrings(NewLineRight, NewLineLeft);
            }

            if (Children != null)
            {
                InitRecognizers(InitData);
            }

            OnlyLeftSkip     = Helper.GetSkipList(OnlyLeft, Operators);
            OnlyRightSkip    = Helper.GetSkipList(OnlyRight, Operators);
            NewLineLeftSkip  = Helper.GetSkipList(NewLineLeft, Operators);
            NewLineRightSkip = Helper.GetSkipList(NewLineRight, Operators);
        }
Exemple #2
0
        protected void InitRecognizers(LanguageInitData InitData)
        {
            var AllOperators    = new List <string>();
            var AllNewLineLeft  = new List <string>();
            var AllNewLineRight = new List <string>();
            var AllOnlyLeft     = new List <string>();
            var AllOnlyRight    = new List <string>();

            for (var i = Children.Count - 1; i >= 0; i--)
            {
                var Rec = Children[i];
                if (Rec.Operators != null)
                {
                    if ((Flags & LanguageNodeFlags.FindSkipFromAll) != 0)
                    {
                        Rec.Skip = Helper.GetSkipList(Rec.Operators, InitData.SkipFromAll);
                    }
                    else
                    {
                        Rec.Skip = Helper.GetSkipList(Rec.Operators, InitData.SkipList);
                    }

                    InitData.SkipList.AddRange(Rec.Operators);
                    if ((Rec.Flags & LanguageNodeFlags.NotOpRecongizer) == 0)
                    {
                        AllOperators.AddRange(Rec.Operators);
                    }
                }

                if (Rec.NewLineLeft != null)
                {
                    AllNewLineLeft.AddRange(Rec.NewLineLeft);
                }
                if (Rec.NewLineRight != null)
                {
                    AllNewLineRight.AddRange(Rec.NewLineRight);
                }
                if (Rec.OnlyLeft != null)
                {
                    AllOnlyLeft.AddRange(Rec.OnlyLeft);
                }
                if (Rec.OnlyRight != null)
                {
                    AllOnlyRight.AddRange(Rec.OnlyRight);
                }
            }

            Operators    = Helper.ToArrayWithoutSame(AllOperators);
            NewLineLeft  = Helper.ToArrayWithoutSame(AllNewLineLeft);
            NewLineRight = Helper.ToArrayWithoutSame(AllNewLineRight);
            OnlyLeft     = Helper.ToArrayWithoutSame(AllOnlyLeft);
            OnlyRight    = Helper.ToArrayWithoutSame(AllOnlyRight);
        }
Exemple #3
0
        public void Init(LanguageInitData InitData)
        {
            ExprRecognizers = Root.GetObjectsStoreable <IExprRecognizer>(false);
            IdRecognizers   = Root.GetObjectsStoreable <IIdRecognizer>(false);
            CommRecognizers = Root.GetObjectsStoreable <ICommRecognizer>(false);
            ModRecognizers  = Root.GetObjectsStoreable <IModRecognizer>(false);
            NameGenerators  = Root.GetObjectsStoreable <INameGenerator>(false);
            GlobalHandlers  = Root.GetObjectsStoreable <IResultSkippingHandler>(false);

            ParameterRecognizer = Root.GetObject <IParameterRecognizer>();
            GenericRecognizer   = Root.GetObject <IGenericRecognizer>();
            GroupRecognizer     = Root.GetObject <IGroupRecognizer>();
            Root.Init(InitData);
        }
Exemple #4
0
        public void Init()
        {
            var InitData = new LanguageInitData();

            InitData.SkipList = new List <string>();

            var AllOps = new List <string>();

            Root.ForEach(x =>
            {
                if (x.Operators != null)
                {
                    AllOps.AddRange(x.Operators);
                }
            });

            InitData.SkipFromAll = Helper.ToArrayWithoutSame(AllOps);
            Init(InitData);
        }