public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); separator = Separator ?? args.Grammar.Separator; if (Items.Count == 0) throw new InvalidOperationException("There are no items in this sequence"); if (args.Push(this)) { var leftItem = Items[0]; if (leftItem != null) { foreach (var parent in args.RecursionFixes) { if (leftItem.IsLeftRecursive(parent)) { Items[0] = new EmptyParser(); break; } } } foreach (var item in Items.Where(r => r != null)) { item.Initialize(args); } if (Separator != null) Separator.Initialize(args); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); separator = Separator ?? args.Grammar.Separator; if (Items.Count == 0) { throw new InvalidOperationException("There are no items in this sequence"); } if (args.Push(this)) { var leftItem = Items[0]; if (leftItem != null) { foreach (var parent in args.RecursionFixes) { if (leftItem.IsLeftRecursive(parent)) { Items[0] = new EmptyParser(); break; } } } foreach (var item in Items.Where(r => r != null)) { item.Initialize(args); } if (Separator != null) { Separator.Initialize(args); } args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (ValueType != null) { #if CORECLR parseMethod = ValueType.GetTypeInfo().GetDeclaredMethods("Parse") .FirstOrDefault(x => { if (!x.IsStatic || !x.IsPublic) { return(false); } var parameters = x.GetParameters(); return(parameters.Length == 3 && parameters[0].ParameterType == typeof(string) && parameters[1].ParameterType == typeof(NumberStyles) && parameters[2].ParameterType == typeof(IFormatProvider)); }); #else parseMethod = ValueType.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string), typeof(NumberStyles), typeof(IFormatProvider) }, null); #endif } args.Pop(); } }
protected override void InnerInitialize(ParserInitializeArgs args) { if (Separator != null) { Separator.Initialize(args); } if (Until != null) { Until.Initialize(args); } separator = Separator ?? args.Grammar.Separator; skipUntilMatches = (Until != null && (Until.AddMatch || Until.Children.Any(r => r.AddMatch))); hasChildMatch = false; if (!AddMatch) { if (separator != null) { hasChildMatch |= separator.AddMatch || separator.Children.Any(r => r.AddMatch); } if (Inner != null) { hasChildMatch |= Inner.AddMatch || Inner.Children.Any(r => r.AddMatch); } } base.InnerInitialize(args); }
public void InitializeItems(ParserInitializeArgs args) { foreach (var item in Items) { if (item != null) item.Initialize(args); } }
protected override void InnerInitialize(ParserInitializeArgs args) { if (Except != null) { Except.Initialize(args); } base.InnerInitialize(args); }
protected override void InnerInitialize(ParserInitializeArgs args) { base.InnerInitialize(args); if (Surrounding != null) { Surrounding.Initialize(args); } }
protected override void InnerInitialize(ParserInitializeArgs args) { base.InnerInitialize(args); if (_items.Count == 1) { singleItem = _items[0]; } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (Surrounding != null && args.Push(this)) { Surrounding.Initialize(args); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (Inner != null && args.Push(this)) { Inner.Initialize(args); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (Surrounding != null && args.Push(this)) { Surrounding.Initialize(args); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (Except != null && args.Push(this)) { Except.Initialize(args); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (Except != null && args.Push(this)) { Except.Initialize(args); args.Pop(); } }
public void InitializeItems(ParserInitializeArgs args) { foreach (var item in Items) { if (item != null) { item.Initialize(args); } } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { skipMatches = this.Children().Any(r => r.Name != null); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (ValueType != null) parseMethod = ValueType.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string), typeof(NumberStyles) }, null); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { skipMatches = this.Children().Any(r => r.Name != null); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (ValueType != null) { parseMethod = ValueType.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string), typeof(NumberStyles) }, null); } args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (Separator != null) Separator.Initialize(args); if (Until != null) Until.Initialize(args); separator = Separator ?? args.Grammar.Separator; skipUntilMatches = (Until != null && (Until.Name != null || Until.Children().Any(r => r.Name != null))); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (ValueType != null) { var style = NumberStyles.None; if (AllowSign) style |= NumberStyles.AllowLeadingSign; if (AllowDecimal) style |= NumberStyles.AllowDecimalPoint; if (AllowExponent) style |= NumberStyles.AllowExponent; var numberFormat = Culture.NumberFormat; if (typeof(decimal) == ValueType) getValue = text => decimal.Parse(text, style, numberFormat); else if (typeof(Int16) == ValueType) getValue = text => Int16.Parse(text, style, numberFormat); else if (typeof(Int32) == ValueType) getValue = text => Int32.Parse(text, style, numberFormat); else if (typeof(Int64) == ValueType) getValue = text => Int64.Parse(text, style, numberFormat); else if (typeof(UInt16) == ValueType) getValue = text => UInt16.Parse(text, style, numberFormat); else if (typeof(UInt32) == ValueType) getValue = text => UInt32.Parse(text, style, numberFormat); else if (typeof(UInt64) == ValueType) getValue = text => UInt64.Parse(text, style, numberFormat); else if (typeof(double) == ValueType) getValue = text => double.Parse(text, style, numberFormat); else if (typeof(float) == ValueType) getValue = text => float.Parse(text, style, numberFormat); else { #if PCL var parameters = new [] { typeof(string), typeof(NumberStyles) }; var parseMethod = ValueType.GetTypeInfo().DeclaredMethods.FirstOrDefault(r => r.Name == "Parse" && r.GetParameters().Select(p => p.ParameterType).SequenceEqual(parameters)); #else var parseMethod = ValueType.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string), typeof(NumberStyles) }, null); #endif getValue = text => parseMethod.Invoke(null, new object[] { text, style }); } } args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { var first = new List <Parser>(); var second = new List <Parser>(); foreach (var item in Items) { if (item != null && item.IsLeftRecursive(new ParserContainsArgs(this))) { second.Add(item); args.RecursionFixes.Add(this); item.Initialize(args); args.RecursionFixes.Remove(this); } else { first.Add(item); if (item != null) { item.Initialize(args); } } } if (second.Count > 0) { Items.Clear(); var secondParser = second.Count > 1 ? new AlternativeParser(second) : second[0]; if (first.Count > 0) { var firstParser = first.Count > 1 ? new AlternativeParser(first) : first[0]; if (first.Count == 1 && first[0] == null) { Items.Add(-secondParser); } else { Items.Add(new SequenceParser(firstParser, -secondParser)); } } else { Items.Add(+secondParser); } } args.Pop(); } }
protected override void InnerInitialize(ParserInitializeArgs args) { separator = Separator ?? args.Grammar.Separator; if (Items.Count == 0) { throw new InvalidOperationException(string.Format("There are no items in this sequence {0}", DescriptiveName)); } if (Separator != null) { Separator.Initialize(args); } base.InnerInitialize(args); }
protected override void InnerInitialize(ParserInitializeArgs args) { if (Line != null) { Line.Initialize(args); } if (Start != null) { Start.Initialize(args); } if (End != null) { End.Initialize(args); } base.InnerInitialize(args); }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (Separator != null) { Separator.Initialize(args); } if (Until != null) { Until.Initialize(args); } separator = Separator ?? args.Grammar.Separator; skipUntilMatches = (Until != null && (Until.Name != null || Until.Children().Any(r => r.Name != null))); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { var first = new List<Parser>(); var second = new List<Parser>(); foreach (var item in Items) { if (item != null && item.IsLeftRecursive(new ParserContainsArgs(this))) { second.Add(item); args.RecursionFixes.Add(this); item.Initialize(args); args.RecursionFixes.Remove(this); } else { first.Add(item); if (item != null) item.Initialize(args); } } if (second.Count > 0) { Items.Clear(); var secondParser = second.Count > 1 ? new AlternativeParser(second) : second[0]; if (first.Count > 0) { var firstParser = first.Count > 1 ? new AlternativeParser(first) : first[0]; if (first.Count == 1 && first[0] == null) { Items.Add(-secondParser); } else Items.Add(new SequenceParser(firstParser, -secondParser)); } else Items.Add(+secondParser); } args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (line != null) { line.Initialize(args); } if (start != null) { start.Initialize(args); } if (end != null) { end.Initialize(args); } args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (Line != null) { Line.Initialize(args); } if (Start != null) { Start.Initialize(args); } if (End != null) { End.Initialize(args); } args.Pop(); } }
protected override void InnerInitialize(ParserInitializeArgs args) { base.InnerInitialize(args); if (TestCaseSensitive) { lookupCharacters = Characters; if (lookupCharacters.Length >= MinLookupCount) { characterLookup = new HashSet <char>(lookupCharacters); } } else { lookupCharacters = new char[Characters.Length]; for (int i = 0; i < Characters.Length; i++) { lookupCharacters[i] = char.ToLowerInvariant(Characters[i]); } if (lookupCharacters.Length >= MinLookupCount) { characterLookup = new HashSet <char>(lookupCharacters, new LowerCharComparer()); } } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (Line != null) Line.Initialize(args); if (Start != null) Start.Initialize(args); if (End != null) End.Initialize(args); args.Pop(); } }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); caseSensitive = CaseSensitive ?? args.Grammar.CaseSensitive; }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (ValueType != null) { var style = NumberStyles.None; if (AllowSign) { style |= NumberStyles.AllowLeadingSign; } if (AllowDecimal) { style |= NumberStyles.AllowDecimalPoint; } if (AllowExponent) { style |= NumberStyles.AllowExponent; } var numberFormat = Culture.NumberFormat; if (typeof(decimal) == ValueType) { getValue = text => decimal.Parse(text, style, numberFormat); } else if (typeof(Int16) == ValueType) { getValue = text => Int16.Parse(text, style, numberFormat); } else if (typeof(Int32) == ValueType) { getValue = text => Int32.Parse(text, style, numberFormat); } else if (typeof(Int64) == ValueType) { getValue = text => Int64.Parse(text, style, numberFormat); } else if (typeof(UInt16) == ValueType) { getValue = text => UInt16.Parse(text, style, numberFormat); } else if (typeof(UInt32) == ValueType) { getValue = text => UInt32.Parse(text, style, numberFormat); } else if (typeof(UInt64) == ValueType) { getValue = text => UInt64.Parse(text, style, numberFormat); } else if (typeof(double) == ValueType) { getValue = text => double.Parse(text, style, numberFormat); } else if (typeof(float) == ValueType) { getValue = text => float.Parse(text, style, numberFormat); } else { #if PCL var parameters = new [] { typeof(string), typeof(NumberStyles) }; var parseMethod = ValueType.GetTypeInfo().DeclaredMethods.FirstOrDefault(r => r.Name == "Parse" && r.GetParameters().Select(p => p.ParameterType).SequenceEqual(parameters)); #else var parseMethod = ValueType.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string), typeof(NumberStyles) }, null); #endif getValue = text => parseMethod.Invoke(null, new object[] { text, style }); } } args.Pop(); } }
protected override void InnerInitialize(ParserInitializeArgs args) { skipMatches = this.Children.Any(r => r.Name != null); base.InnerInitialize(args); }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); caseSensitive = CaseSensitive ?? args.Grammar.CaseSensitive; }
public override void Initialize(ParserInitializeArgs args) { base.Initialize(args); if (args.Push(this)) { if (line != null) line.Initialize(args); if (start != null) start.Initialize(args); if (end != null) end.Initialize(args); args.Pop(); } }