bool IProductionVisitor <ClosureInfo, bool> .VisitMapping <TSource, TReturn>(MappingProduction <TSource, TReturn> mappingProduction, ClosureInfo arg) { if (arg.DotLocation == 0 && !mappingProduction.SourceProduction.IsTerminal) { arg.IsChanged = arg.LR0ItemSet.Add(new LR0Item(mappingProduction.SourceProduction.Info.Index, 0)) || arg.IsChanged; } return(arg.IsChanged); }
string IProductionVisitor <int, string> .VisitMapping <TSource, TReturn>(MappingProduction <TSource, TReturn> mappingProduction, int DotLocation) { if (DotLocation == 0) { return(mappingProduction.DebugName + " ::=." + mappingProduction.SourceProduction.DebugName); } else { return(mappingProduction.DebugName + " ::= " + mappingProduction.SourceProduction.DebugName + '.'); } }
bool IProductionVisitor <bool, bool> .VisitMapping <TSource, TReturn>(MappingProduction <TSource, TReturn> mappingProduction, bool IsChanged) { var source = mappingProduction.SourceProduction; IsChanged = mappingProduction.Info.First.UnionCheck(source.Info.First) || IsChanged; IsChanged = source.Info.Follow.UnionCheck(mappingProduction.Info.Follow) || IsChanged; if (mappingProduction.Info.IsNullable != source.Info.IsNullable) { mappingProduction.Info.IsNullable = source.Info.IsNullable; IsChanged = true; } return(IsChanged); }
IReadOnlyList <IProduction> IProductionVisitor <int, IReadOnlyList <IProduction> > .VisitMapping <TSource, TReturn>(MappingProduction <TSource, TReturn> mappingProduction, int DotLocation) { if (DotLocation == 0) { return(new IProduction[1] { mappingProduction.SourceProduction }); } else { return(s_empty); } }
List <IProduction> IProductionVisitor <List <IProduction>, List <IProduction> > .VisitMapping <TSource, TReturn>(MappingProduction <TSource, TReturn> mappingProduction, List <IProduction> Productions) { if (mappingProduction.Info != null) { return(Productions); } mappingProduction.Info = new ProductionInfo(); mappingProduction.SourceProduction.Accept(this, Productions); mappingProduction.Info.Index = Productions.Count; mappingProduction.Info.SymbolCount = 1; Productions.Add(mappingProduction); return(Productions); }
bool IProductionVisitor <Tuple <int, bool, ISet <LR0Item> >, bool> .VisitMapping <TSource, TReturn>(MappingProduction <TSource, TReturn> mappingProduction, Tuple <int, bool, ISet <LR0Item> > arg) { int DotLocation = arg.Item1; bool IsChanged = arg.Item2; ISet <LR0Item> LR0ItemSet = arg.Item3; if (DotLocation == 0 && !mappingProduction.SourceProduction.IsTerminal) { IsChanged = LR0ItemSet.Add(new LR0Item(mappingProduction.SourceProduction.Info.Index, 0)) || IsChanged; } return(IsChanged); }