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); }
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); }
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); }
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); }