Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
		public void InitializeItems(ParserInitializeArgs args)
		{
			foreach (var item in Items)
			{
				if (item != null)
					item.Initialize(args);
			}
		}
Exemplo n.º 6
0
 protected override void InnerInitialize(ParserInitializeArgs args)
 {
     if (Except != null)
     {
         Except.Initialize(args);
     }
     base.InnerInitialize(args);
 }
Exemplo n.º 7
0
 protected override void InnerInitialize(ParserInitializeArgs args)
 {
     base.InnerInitialize(args);
     if (Surrounding != null)
     {
         Surrounding.Initialize(args);
     }
 }
Exemplo n.º 8
0
 protected override void InnerInitialize(ParserInitializeArgs args)
 {
     base.InnerInitialize(args);
     if (_items.Count == 1)
     {
         singleItem = _items[0];
     }
 }
Exemplo n.º 9
0
			public override void Initialize(ParserInitializeArgs args)
			{
				base.Initialize(args);
				if (Surrounding != null && args.Push(this))
				{
					Surrounding.Initialize(args);
					args.Pop();
				}
			}
Exemplo n.º 10
0
		public override void Initialize(ParserInitializeArgs args)
		{
			base.Initialize(args);
			if (Inner != null && args.Push(this))
			{
				Inner.Initialize(args);
				args.Pop();
			}
		}
Exemplo n.º 11
0
 public override void Initialize(ParserInitializeArgs args)
 {
     base.Initialize(args);
     if (Surrounding != null && args.Push(this))
     {
         Surrounding.Initialize(args);
         args.Pop();
     }
 }
Exemplo n.º 12
0
 public override void Initialize(ParserInitializeArgs args)
 {
     base.Initialize(args);
     if (Except != null && args.Push(this))
     {
         Except.Initialize(args);
         args.Pop();
     }
 }
Exemplo n.º 13
0
 public override void Initialize(ParserInitializeArgs args)
 {
     base.Initialize(args);
     if (Except != null && args.Push(this))
     {
         Except.Initialize(args);
         args.Pop();
     }
 }
Exemplo n.º 14
0
 public void InitializeItems(ParserInitializeArgs args)
 {
     foreach (var item in Items)
     {
         if (item != null)
         {
             item.Initialize(args);
         }
     }
 }
Exemplo n.º 15
0
		public override void Initialize(ParserInitializeArgs args)
		{
			base.Initialize(args);
			if (args.Push(this))
			{
				skipMatches = this.Children().Any(r => r.Name != null);

				args.Pop();
			}
		}
Exemplo n.º 16
0
 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();
     }
 }
Exemplo n.º 17
0
        public override void Initialize(ParserInitializeArgs args)
        {
            base.Initialize(args);
            if (args.Push(this))
            {
                skipMatches = this.Children().Any(r => r.Name != null);

                args.Pop();
            }
        }
Exemplo n.º 18
0
 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();
     }
 }
Exemplo n.º 19
0
		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();
			}
		}
Exemplo n.º 20
0
		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();
			}
		}
Exemplo n.º 21
0
 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();
     }
 }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 23
0
 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);
 }
Exemplo n.º 24
0
 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();
     }
 }
Exemplo n.º 25
0
 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();
     }
 }
Exemplo n.º 26
0
 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();
     }
 }
Exemplo n.º 27
0
 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();
     }
 }
Exemplo n.º 28
0
 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());
         }
     }
 }
Exemplo n.º 29
0
		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();
			}
		}
Exemplo n.º 30
0
		public override void Initialize(ParserInitializeArgs args)
		{
			base.Initialize(args);
			caseSensitive = CaseSensitive ?? args.Grammar.CaseSensitive;
		}
Exemplo n.º 31
0
        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();
            }
        }
Exemplo n.º 32
0
 protected override void InnerInitialize(ParserInitializeArgs args)
 {
     skipMatches = this.Children.Any(r => r.Name != null);
     base.InnerInitialize(args);
 }
Exemplo n.º 33
0
 public override void Initialize(ParserInitializeArgs args)
 {
     base.Initialize(args);
     caseSensitive = CaseSensitive ?? args.Grammar.CaseSensitive;
 }
Exemplo n.º 34
0
 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();
     }
 }