Example #1
0
    public void Tell(ITriggerMsg e)
    {
        // tell <nick> <message>
        var message =
            e.GetArg(out string destinationNick)
            .ToJoined(JoinedOptions.TrimExterior);

        if (ParseArgs.Success(destinationNick, message))
        {
            var inbox = inboxes.GetOrNew(destinationNick);

            if (inbox.Add(e.Nick, message))
            {
                e.Reply("Sending message to {0} when they're active. [{1}/{2}]",
                        destinationNick, inbox.MessagesCount, inbox.Capacity);

                inboxes.Save(inbox);
            }
            else
            {
                e.Reply("Sorry, {0}'s inbox is full!", destinationNick);
            }
        }
        // Short circuit tell to tell-read if not enough arguments.
        else
        {
            Read(e);
        }
    }
Example #2
0
        public override PluginArgs InputText(PluginArgs args)
        {
            if (args.Command.StartsWith("!google"))
            {
                String search = args.Command.Substring(8);
                search = search.Replace(" ", "%20");
                search = search.Replace("&", "&amp;");
                string url = "http://www.google.ca/search?q=" + search;

                args.Command = "/say " + args.Command;
                OnCommand(args);


                ParseArgs pa = new ParseArgs
                {
                    args = args,
                    url  = url,
                    self = true
                };

                BackgroundWorker bgw = new BackgroundWorker();
                bgw.DoWork += new DoWorkEventHandler(Bgw_DoWork);
                bgw.RunWorkerAsync(pa);

                //ParseGoogleResults(args, url, true);

                args.Command = "";
            }

            return(base.InputText(args));
        }
Example #3
0
        public IParse Parse(string s, ParseArgs args = null)
        {
            DeclensionFlags flags = ConvertToDeclensionFlags(args);
            var             parse = _client.Parse(s, flags);

            return(new Parse(parse));
        }
			protected override int InnerParse(ParseArgs args)
			{
				((MarkdownGrammar)args.Grammar).IndentLevel++;
				var match = base.InnerParse(args);
				((MarkdownGrammar)args.Grammar).IndentLevel--;
				return match;
			}
Example #5
0
        static void Main(string[] args)
        {
            var log = new SIR.Common.Log.Logger("SIR.Sync", new Common.Log.LoggerConfig()
            {
                Console = new Common.Log.LoggerConfig.ConsoleConfig()
                {
                    ShowInConsole = true
                }
            });

            try
            {
                log.Info("== Inicio de Procesamiento de SIR.Sync ==");
                log.Info($"Version: {System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}");
                log.Info($"Command: {AppDomain.CurrentDomain.FriendlyName} {string.Join(' ', args)}");

                var optionsRes = new ParseArgs().Parse <Arguments>(args);
                if (optionsRes.ExistsErrorMessages)
                {
                    log.Log(optionsRes);
                    Console.ReadLine();
                    return;
                }
                var options = optionsRes.Data;

                if (options.ShowHelp)
                {
                    Console.WriteLine("Listado de Parámetros válidos para la aplicación");
                    Console.WriteLine(new ParseArgs().GetHelpText <Arguments>());
                    return;
                }

                var config = Newtonsoft.Json.JsonConvert.DeserializeObject <Application>(System.IO.File.ReadAllText("SIR.Sync.Config.json"));

                if (options.ProcesarSync)
                {
                    var procesador = new BLL.ProcesadorSync(log, config);

                    procesador.ProcesarNotificaciones(options.FechaDesde, options.FechaHasta);
                    procesador.ProcesarAnulaciones(options.FechaDesde, options.FechaHasta);
                    procesador.ProcesarVencimientos();
                    procesador.ProcesarNotificacionesPE();
                }

                if (options.ProcesarRendicion)
                {
                    var procesador = new BLL.ProcesadorRendiciones(log, config);

                    procesador.ProcesarRendicionDAI(options.FechaRendicion, options.DiasRendicion);
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            finally
            {
                log.Info("== Fin de Procesamiento de SIR.Sync ==");
            }
        }
Example #6
0
        protected override int InnerParse(ParseArgs args)
        {
            var scanner = args.Scanner;
            var pos     = scanner.Position;
            int ch      = scanner.ReadChar();

            if (ch != -1)
            {
                if (ch == '\n')
                {
                    return(1);
                }
                if (ch == '\r')
                {
                    ch = scanner.ReadChar();
                    if (ch == -1)
                    {
                        return(1);
                    }
                    if (ch == '\n')
                    {
                        return(2);
                    }
                    scanner.Position = pos + 1;
                    return(1);
                }
            }

            scanner.Position = pos;
            return(-1);
        }
Example #7
0
        protected override int InnerParse(ParseArgs args)
        {
            var scanner = args.Scanner;
            var length  = 0;
            var pos     = scanner.Position;
            var ch      = scanner.ReadChar();

            for (int i = 0; i < _items.Count; i++)
            {
                var item  = _items[i];
                var count = 0;
                while (ch != -1 && item.Test((char)ch))
                {
                    length++;
                    count++;
                    ch = scanner.ReadChar();
                    if (count >= item.Maximum)
                    {
                        break;
                    }
                }
                if (count < item.Minimum)
                {
                    scanner.Position = pos;
                    return(-1);
                }
            }
            scanner.Position = pos + length;
            return(length);
        }
Example #8
0
    void Say(ITriggerMsg e)
    {
        var    rest    = e.GetArg(out string channel);
        string message = null;

        // say [channel] <message>
        // Send message to specified channel.
        if (channel.StartsWith("#", StringComparison.Ordinal))
        {
            message = rest.ToJoined();
        }
        // say <message>
        // Send message to current channel.
        if (!message.HasValue())
        {
            channel = e.Channel;
            message = e.MessageWithoutTrigger();
        }

        if (ParseArgs.Success(channel, message) && Say(channel, message))
        {
            string origin = string.Empty;
            if (e.Channel != null)
            {
                origin = '/' + e.Channel;
            }

            log.Message("Say: {0}{1} -> {2}", e.Nick, origin, channel);
        }
    }
Example #9
0
        protected override int InnerParse(ParseArgs args)
        {
            var scanner = args.Scanner;
            var pos     = scanner.Position;
            int match   = -1;

            if (Start != null)
            {
                match = Start.Parse(args);
            }
            if (match < 0)
            {
                if (Line == null)
                {
                    return(-1);
                }
                match = Line.Parse(args);
                if (match < 0)
                {
                    return(-1);
                }
                for (;;)
                {
                    match = eol.Parse(args);
                    if (match >= 0)
                    {
                        break;
                    }
                    if (scanner.Advance(1) < 0)
                    {
                        break;
                    }
                }
                if (match < 0)
                {
                    return(-1);
                }
                scanner.Advance(-match);
                return(scanner.Position - pos + 1);
            }
            for (;;)
            {
                match = End.Parse(args);
                if (match >= 0)
                {
                    break;
                }
                if (scanner.Advance(1) < 0)
                {
                    break;
                }
            }

            if (match >= 0)
            {
                return(scanner.Position - pos + 1);
            }

            return(-1);
        }
Example #10
0
 protected override int InnerParse(ParseArgs args)
 {
     if (TrueValues != null)
     {
         for (int i = 0; i < TrueValues.Length; i++)
         {
             var val = TrueValues[i];
             if (args.Scanner.ReadString(val, caseSensitive))
             {
                 return(val.Length);
             }
         }
     }
     if (FalseValues != null)
     {
         for (int i = 0; i < FalseValues.Length; i++)
         {
             var val = FalseValues[i];
             if (args.Scanner.ReadString(val, caseSensitive))
             {
                 return(val.Length);
             }
         }
     }
     return(-1);
 }
		protected override int InnerParse(ParseArgs args)
		{
			var scanner = args.Scanner;
			var length = 0;
			var pos = scanner.Position;
			var ch = scanner.ReadChar();
			for (int i = 0; i < _items.Count; i++)
			{
				var item = _items[i];
				var count = 0;
				while (ch != -1 && item.Test((char)ch))
				{
					length++;
					count++;
					ch = scanner.ReadChar();
					if (count >= item.Maximum)
						break;
				}
				if (count < item.Minimum)
				{
					scanner.Position = pos;
					return -1;
				}
			}
			scanner.Position = pos + length;
			return length;
		}
Example #12
0
        static void Main(string[] args)
        {
            var log = new Logger("SIR.BcoCiudad", new LoggerConfig()
            {
                Console = new LoggerConfig.ConsoleConfig()
                {
                    ShowInConsole = true
                }
            });

            try
            {
                log.Info("== Inicio de Procesamiento de SIR.BcoCiudad ==");
                log.Info($"Version: {System.Reflection.Assembly.GetExecutingAssembly().GetName().Version}");
                log.Info($"Command: {AppDomain.CurrentDomain.FriendlyName} {string.Join(' ', args)}");

                var optionsRes = new ParseArgs().Parse <Arguments>(args);
                if (optionsRes.ExistsErrorMessages)
                {
                    log.Log(optionsRes);
                    Console.ReadLine();
                    return;
                }
                var options = optionsRes.Data;

                if (options.ShowHelp)
                {
                    Console.WriteLine("Listado de Parámetros válidos para la aplicación");
                    Console.WriteLine(new ParseArgs().GetHelpText <Arguments>());
                    return;
                }

                var config = Newtonsoft.Json.JsonConvert.DeserializeObject <Application>(System.IO.File.ReadAllText("SIR.BcoCiudad.Config.json"));

                var processor = Factory.GetBcoCiudadService(log, config);
                if (options.ProcesarArchivo)
                {
                    processor.ProcesarArchivos(options.Reprocesar);
                }

                if (options.Exportacion)
                {
                    processor.ExportarBUI();
                }

                if (options.Notificaciones)
                {
                    Factory.GetNotificacionService(log, config).ProcesarNotificaciones();
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            finally
            {
                log.Info("== Fin de Procesamiento de SIR.BcoCiudad ==");
            }
        }
        public void ShouldParseArgs()
        {
            ParseArgs pa = new ParseArgs(new string[] { "from", "to" });

            pa.IsValid.Should().BeTrue();
            pa.Replace.Should().Be("from");
            pa.With.Should().Be("to");
        }
Example #14
0
 protected override int InnerParse(ParseArgs args)
 {
     if (groupParser != null)
     {
         return(groupParser.Parse(args));
     }
     return(-1);
 }
Example #15
0
 protected override int InnerParse(ParseArgs args)
 {
     if (Inner != null)
     {
         return(Inner.Parse(args));
     }
     return(0);
 }
 ValidateExampleParametersElseShowHelpTextAndExit(string[] args)
 {
     ShowHelpTextAndExitImmediatelyIf(args.Length == 0);
     ShowHelpTextAndExitImmediatelyIf(HelpOptions.Contains(args[0].TrimStart('/').TrimStart('-')));
     var(someFiles, someKeys) = ParseArgs.GetSomeFileNamesAndKeys(args);
     ShowHelpTextAndExitImmediatelyIf(someFiles.Length == 0 && someKeys.Count == 0);
     return(someFiles, someKeys);
 }
Example #17
0
            protected override int InnerParse(ParseArgs args)
            {
                ((MarkdownGrammar)args.Grammar).IndentLevel++;
                var match = base.InnerParse(args);

                ((MarkdownGrammar)args.Grammar).IndentLevel--;
                return(match);
            }
Example #18
0
    public void Timer(ITriggerMsg e)
    {
        var timers = ircTimers.GetTimers(e.Nick);
        var rest   = e.GetArg(out string command, toLower: true);

        // timer
        if (!command.HasValue())
        {
            EmitDescriptions(timers.Descriptions(), e);
            return;
        }

        // timer <delta> [index]
        // Delta is +N or -N
        char deltaSign = command[0];

        if (deltaSign == '+' || deltaSign == '-')
        {
            TimerChange(
                ParseIdx(rest.GetArg(), 0),
                ParseTs(command),
                e, timers
                );
        }

        // timer stop [index]
        else if (command == "stop")
        {
            TimerStop(
                ParseIdx(rest.GetArg(), -1),
                e, timers
                );
        }

        // timer change <index> <delta>
        else if (command == "change")
        {
            var args = rest.GetArgs(2);
            if (ParseArgs.Success(args))
            {
                TimerChange(
                    ParseIdx(args[0], -1),
                    ParseTs(args[1]),
                    e, timers
                    );
            }
        }

        // timer <duration> [message]
        else
        {
            TimerStart(
                ParseTs(command),
                rest.ToJoined(JoinedOptions.TrimExterior),
                e, timers
                );
        }
    }
 public void ParseArgsForMerge(params string[] args)
 {
     var(command, files, mergefields) = ParseArgs.FromStringArray(args);
     command.ShouldBe(Program.Command.Merge);
     files[0].Item1.Name.ShouldBe(args[0]);
     files[0].Item2.Name.ShouldBe(args[1]);
     mergefields["a"].ShouldNotBeNull().ShouldBe("b");
     mergefields["aa"].ShouldNotBeNull().ShouldBe("bb");
 }
        public void SemiSimpleQuote_Test()
        {
            var input          = "\"test value \"aaaaaa\" dog\"";
            var expectedOutput = "test value \"aaaaaa\" dog";
            var parsed         = ParseArgs.Parse(input);

            Assert.AreEqual(1, parsed.Count);
            Assert.AreEqual(expectedOutput, parsed[0]);
        }
Example #21
0
 protected override int InnerParse(ParseArgs args)
 {
     var pos = args.Scanner.Position;
     var match = Except.Parse(args);
     if (match < 0)
         return base.InnerParse(args);
     args.Scanner.Position = pos;
     return -1;
 }
Example #22
0
		protected override int InnerParse(ParseArgs args)
		{
			if (inBold)
				return -1;
			inBold = true;
			var match = base.InnerParse(args);
			inBold = false;
			return match;
		}
Example #23
0
        protected override int InnerParse(ParseArgs args)
        {
            var scanner = args.Scanner;
            int count   = 0;
            var pos     = scanner.Position;
            int length  = 0;

            while (count < Maximum)
            {
                int curPos = scanner.Position;
                int stopMatch;
                if (skipMatches)
                {
                    args.Push();
                    stopMatch = Inner.Parse(args);
                    args.PopFailed();
                }
                else
                {
                    stopMatch = Inner.Parse(args);
                }
                if (stopMatch >= 0)
                {
                    if (Capture)
                    {
                        length += stopMatch;
                    }
                    else if (!Skip)
                    {
                        scanner.Position = curPos;
                    }
                    break;
                }

                var ofs = scanner.Advance(1);
                if (ofs >= 0)
                {
                    length++;
                    count++;
                }
                else
                {
                    scanner.Position = curPos;
                    break;
                }
            }

            if (count < Minimum)
            {
                scanner.Position = pos;
                return(-1);
            }

            return(length);
        }
Example #24
0
        protected override int InnerParse(ParseArgs args)
        {
            object tagsObject;

            if (!args.Properties.TryGetValue(tagKey, out tagsObject))
            {
                args.Properties[tagKey] = tagsObject = new HashSet <string>();
            }
            var tags = (HashSet <string>)tagsObject;
            var pos  = args.Scanner.Position;

            if (AllowWithDifferentPosition)
            {
                if (!string.IsNullOrEmpty(ExcludeTag) && tags.Contains(ExcludeTag + pos))
                {
                    return(-1);
                }
                if (!string.IsNullOrEmpty(IncludeTag) && !tags.Contains(IncludeTag + pos))
                {
                    return(-1);
                }

                if (!string.IsNullOrEmpty(AddTag))
                {
                    tags.Add(AddTag + pos);
                    var ret = base.InnerParse(args);
                    tags.Remove(AddTag);
                    return(ret);
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(ExcludeTag) && tags.Contains(ExcludeTag))
                {
                    return(-1);
                }

                if (!string.IsNullOrEmpty(IncludeTag) && !tags.Contains(IncludeTag))
                {
                    return(-1);
                }

                if (!string.IsNullOrEmpty(AddTag))
                {
                    var added = tags.Add(AddTag);
                    var ret   = base.InnerParse(args);
                    if (added)
                    {
                        tags.Remove(AddTag);
                    }
                    return(ret);
                }
            }
            return(base.InnerParse(args));
        }
		protected override int InnerParse(ParseArgs args)
		{
			var pos = args.Scanner.Position;
			var match = Inner.Parse(args);
			if (match >= 0)
			{
				args.Scanner.Position = pos;
				return Inverse ? -1 : 0;
			}
			return Inverse ? 0 : -1;
		}
Example #26
0
 /// <summary>
 /// Parses the arguments into the supplied instance.
 /// </summary>
 /// <param name="source"></param>
 /// <param name="input"></param>
 /// <returns></returns>
 public ISettingParserResult Parse(TSource source, ParseArgs input)
 {
     return(Parse(input, (setting, value) =>
     {
         var result = setting.TrySetValue(source, value);
         if (result.IsSuccess)
         {
             SetSettings.GetValue(source, x => new HashSet <IStaticSetting <TSource> >()).Add(setting);
         }
         return result;
     }));
 }
Example #27
0
        protected override int InnerParse(ParseArgs args)
        {
            var pos    = args.Scanner.Position;
            var length = 0;
            var count  = Items.Count;

            if (separator != null)
            {
                var parser     = Items[0];
                var childMatch = parser.Parse(args);
                if (childMatch < 0)
                {
                    return(childMatch);
                }

                length += childMatch;
                for (int i = 1; i < count; i++)
                {
                    var sepMatch = separator.Parse(args);
                    if (sepMatch >= 0)
                    {
                        parser     = Items[i];
                        childMatch = parser.Parse(args);
                        if (childMatch > 0)
                        {
                            length += childMatch + sepMatch;
                            continue;
                        }
                        else if (childMatch == 0)
                        {
                            continue;
                        }
                    }
                    // failed
                    args.Scanner.Position = pos;
                    return(-1);
                }
                return(length);
            }
            for (int i = 0; i < count; i++)
            {
                var parser     = Items[i];
                var childMatch = parser.Parse(args);
                if (childMatch >= 0)
                {
                    length += childMatch;
                    continue;
                }
                args.Scanner.Position = pos;
                return(-1);
            }
            return(length);
        }
 public void ParseArgsForShowXml(params string[] args)
 {
     var(command, files, mergefields) = ParseArgs.FromStringArray(args);
     command.ShouldBe(Program.Command.ShowXml);
     files[0].Item1.Name.ShouldBe(args[1]);
     files[0].Item2.Name.ShouldBe(args[1]);
     files[1].Item1.Name.ShouldBe(args[2]);
     files[1].Item2.Name.ShouldBe(args[2]);
     files[2].Item1.Name.ShouldBe(args[3]);
     files[2].Item2.Name.ShouldBe(args[3]);
     files.Length.ShouldBe(args.Length - 1);
 }
Example #29
0
        protected override int InnerParse(ParseArgs args)
        {
            var pos   = args.Scanner.Position;
            var match = Except.Parse(args);

            if (match < 0)
            {
                return(base.InnerParse(args));
            }
            args.Scanner.Position = pos;
            return(-1);
        }
Example #30
0
        protected override int InnerParse(ParseArgs args)
        {
            if (inBold)
            {
                return(-1);
            }
            inBold = true;
            var match = base.InnerParse(args);

            inBold = false;
            return(match);
        }
Example #31
0
        protected override int InnerParse(ParseArgs args)
        {
            var pos   = args.Scanner.Position;
            var match = Inner.Parse(args);

            if (match >= 0)
            {
                args.Scanner.Position = pos;
                return(Inverse ? -1 : 0);
            }
            return(Inverse ? 0 : -1);
        }
Example #32
0
 /// <summary>
 /// Parses the arguments into the parent.
 /// </summary>
 /// <param name="input"></param>
 /// <returns>The results of this parsing.</returns>
 public ISettingParserResult Parse(ParseArgs input)
 {
     return(Parse(input, (setting, value) =>
     {
         var result = setting.TrySetValue(value);
         if (result.IsSuccess)
         {
             SetSettings.Add(setting);
         }
         return result;
     }));
 }
Example #33
0
        protected override int InnerParse(ParseArgs args)
        {
            var count = Items.Count;

            if (HasNamedChildren)
            {
                args.Push();
                for (int i = 0; i < count; i++)
                {
                    var parser = Items[i];
                    if (parser != null)
                    {
                        var match = parser.Parse(args);
                        if (match < 0)
                        {
                            args.ClearMatches();
                        }
                        else
                        {
                            args.PopSuccess();
                            return(match);
                        }
                    }
                    else
                    {
                        args.PopFailed();
                        return(0);
                    }
                }
                args.PopFailed();
            }
            else
            {
                for (int i = 0; i < count; i++)
                {
                    var parser = Items[i];
                    if (parser != null)
                    {
                        var match = parser.Parse(args);
                        if (match >= 0)
                        {
                            return(match);
                        }
                    }
                    else
                    {
                        return(0);
                    }
                }
            }
            return(-1);
        }
		protected override int InnerParse(ParseArgs args)
		{
			var pos = args.Scanner.Position;
			var length = 0;
			var count = Items.Count;
			if (separator != null)
			{
				var parser = Items[0];
				var childMatch = parser.Parse(args);
				if (childMatch < 0)
				{
					return childMatch;
				}

				length += childMatch;
				for (int i = 1; i < count; i++)
				{
					var sepMatch = separator.Parse(args);
					if (sepMatch >= 0)
					{
						parser = Items[i];
						childMatch = parser.Parse(args);
						if (childMatch > 0)
						{
							length += childMatch + sepMatch;
							continue;
						}
						else if (childMatch == 0)
						{
							continue;
						}
					}
					// failed
					args.Scanner.Position = pos;
					return -1;
				}
				return length;
			}
			for (int i = 0; i < count; i++)
			{
				var parser = Items[i];
				var childMatch = parser.Parse(args);
				if (childMatch >= 0)
				{
					length += childMatch;
					continue;
				}
				args.Scanner.Position = pos;
				return -1;
			}
			return length;
		}
Example #35
0
        protected override int InnerParse(ParseArgs args)
        {
            parserLookup = new Dictionary <string, Parser>(StringComparer.OrdinalIgnoreCase);
            if (DefineCommonNonTerminals)
            {
                parserLookup["letter or digit"] = Terminals.LetterOrDigit;
                parserLookup["letter"]          = Terminals.Letter;
                parserLookup["decimal digit"]   = Terminals.Digit;
                parserLookup["character"]       = Terminals.AnyChar;
            }

            return(base.InnerParse(args));
        }
Example #36
0
		protected override int InnerParse(ParseArgs args)
		{
			object tagsObject;
			if (!args.Properties.TryGetValue(tagKey, out tagsObject))
			{
				args.Properties[tagKey] = tagsObject = new HashSet<string>();
			}
			var tags = (HashSet<string>)tagsObject;
			var pos = args.Scanner.Position;
			if (AllowWithDifferentPosition)
			{
				if (!string.IsNullOrEmpty(ExcludeTag) && tags.Contains(ExcludeTag + pos))
				{
					return -1;
				}
				if (!string.IsNullOrEmpty(IncludeTag) && !tags.Contains(IncludeTag + pos))
				{
					return -1;
				}

				if (!string.IsNullOrEmpty(AddTag))
				{
					tags.Add(AddTag + pos);
					var ret = base.InnerParse(args);
					tags.Remove(AddTag);
					return ret;
				}
			}
			else
			{
				if (!string.IsNullOrEmpty(ExcludeTag) && tags.Contains(ExcludeTag))
				{
					return -1;
				}

				if (!string.IsNullOrEmpty(IncludeTag) && !tags.Contains(IncludeTag))
				{
					return -1;
				}

				if (!string.IsNullOrEmpty(AddTag))
				{
					var added = tags.Add(AddTag);
					var ret = base.InnerParse(args);
					if (added)
						tags.Remove(AddTag);
					return ret;
				}
			}
			return base.InnerParse(args);
		}
        protected override int InnerParse(ParseArgs args)
        {
            int codePoint;

            if (!args.Scanner.IsEof && TryGetCodePoint(args.Scanner, out codePoint))
            {
                if (Test(codePoint) != Inverse)
                {
                    return 2;
                }
            }

            return -1;
        }
Example #38
0
 protected override int InnerParse(ParseArgs args)
 {
     var scanner = args.Scanner;
     int ch = scanner.ReadChar();
     if (ch != -1)
     {
         if (Test((char)ch) != Inverse)
         {
             return 1;
         }
         scanner.Position--;
     }
     return -1;
 }
Example #39
0
		protected override int InnerParse(ParseArgs args)
		{
			var scanner = args.Scanner;
			var pos = scanner.Position;
			int match = -1;
			if (Start != null)
			{
				match = Start.Parse(args);
			}
			if (match < 0)
			{
				if (Line == null)
					return -1;
				match = Line.Parse(args);
				if (match < 0)
					return -1;
				for (;;)
				{
					match = eol.Parse(args);
					if (match >= 0)
						break;
					if (scanner.Advance(1) < 0)
						break;
				}
				if (match < 0)
					return -1;
				scanner.Advance(-match);
				return scanner.Position - pos + 1;
			}
			for (;;)
			{
				match = End.Parse(args);
				if (match >= 0)
					break;
				if (scanner.Advance(1) < 0)
					break;
			}

			if (match >= 0)
				return scanner.Position - pos + 1;

			return -1;
		}
		protected override int InnerParse(ParseArgs args)
		{
			if (TrueValues != null)
			{
				for (int i = 0; i < TrueValues.Length; i++)
				{
					var val = TrueValues[i];
					if (args.Scanner.ReadString(val, caseSensitive))
						return val.Length;
				}
			}
			if (FalseValues != null)
			{
				for (int i = 0; i < FalseValues.Length; i++)
				{
					var val = FalseValues[i];
					if (args.Scanner.ReadString(val, caseSensitive))
						return val.Length;
				}
			}
			return -1;
		}
		protected override int InnerParse(ParseArgs args)
		{
			if (!HasNamedChildren)
			{
				var match = Inner.Parse(args);

				return match < 0 ? 0 : match;
			}
			else
			{
				args.Push();
				var match = Inner.Parse(args);

				if (match >= 0)
				{
					args.PopSuccess();
					return match;
				}
				args.PopFailed();
				return 0;
			}
		}
Example #42
0
			protected override int InnerParse(ParseArgs args)
			{
				var scanner = args.Scanner;
				var pos = scanner.Position;
				var length = Surrounding.Parse(args);
				if (length >= 0)
				{
					var str = scanner.Substring(pos, length);
					while (!scanner.ReadString(str, true))
					{
						if (scanner.Advance(1) < 0)
						{
							scanner.Position = pos;
							return -1;
						}
						length++;
					}
					length += str.Length;
					return length;
				}
				return -1;
			}
Example #43
0
		protected override int InnerParse(ParseArgs args)
		{
			var scanner = args.Scanner;
			var pos = scanner.Position;
			int ch = scanner.ReadChar();
			if (ch != -1)
			{
				if (ch == '\n')
					return 1;
				if (ch == '\r')
				{
					ch = scanner.ReadChar();
					if (ch == -1)
						return 1;
					if (ch == '\n')
						return 2;
					scanner.Position = pos + 1;
					return 1;
				}
			}

			scanner.Position = pos;
			return -1;
		}
		protected override int InnerParse(ParseArgs args)
		{
			return base.InnerParse(args);
		}
Example #45
0
		protected override int InnerParse(ParseArgs args)
		{
			var pos = args.Scanner.Position;
			return pos <= 0 ? 0 : -1;
		}
		protected override int InnerParse(ParseArgs args)
		{
			var pos = args.Scanner.Advance(1);
			return pos < 0 ? -1 : 1;
		}
Example #47
0
		protected override int InnerParse(ParseArgs args)
		{
			parserLookup = new Dictionary<string, Parser>(StringComparer.InvariantCultureIgnoreCase);
			if (DefineCommonNonTerminals)
			{
				parserLookup["letter or digit"] = Terminals.LetterOrDigit;
				parserLookup["letter"] = Terminals.Letter;
				parserLookup["decimal digit"] = Terminals.Digit;
				parserLookup["character"] = Terminals.AnyChar;
			}

			return base.InnerParse(args);
		}
Example #48
0
		protected override int InnerParse(ParseArgs args)
		{
			definition = new GoldDefinition();
			return base.InnerParse(args);
		}
Example #49
0
		protected override int InnerParse(ParseArgs args)
		{
			parserLookup = new Dictionary<string, Parser>();
			return base.InnerParse(args);
		}
Example #50
0
		protected override int InnerParse(ParseArgs args)
		{
			return 0;
		}
Example #51
0
        protected override int InnerParse(ParseArgs args)
        {
            int length = 1;
            var scanner = args.Scanner;
            var pos = scanner.Position;
            int ch;

            if (AllowQuoted)
            {
                ch = scanner.ReadChar();
                if (ch == -1)
                    return -1;

                var quoteIndex = quoteCharString.IndexOf((char)ch);
                if (quoteIndex >= 0)
                {
                    char quote = endQuoteCharString[quoteIndex];
                    bool isEscape = false;
                    ch = scanner.ReadChar();
                    while (ch != -1)
                    {
                        length++;
                        if (AllowEscapeCharacters && ch == '\\')
                            isEscape = true;
                        else if (!isEscape)
                        {
                            if (ch == quote)
                            {
                                if (!AllowDoubleQuote || scanner.Peek() != quote)
                                    return length;
                                isEscape = true;
                            }
                        }
                        else
                            isEscape = false;

                        ch = scanner.ReadChar();
                    }
                }

                length = 0;
                scanner.Position = pos;
            }

            if (AllowNonQuoted && NonQuotedLetter != null)
            {
                var m = NonQuotedLetter.Parse(args);
                while (m > 0)
                {
                    length += m;
                    m = NonQuotedLetter.Parse(args);
                }
                if (length > 0)
                    return length;
            }

            return -1;
        }
		protected override int InnerParse(ParseArgs args)
		{
			var scanner = args.Scanner;
			var pos = scanner.Position;
			int length = 0;
			int ch;

			ch = scanner.ReadChar();
			length++;
			if (ch == '<')
			{
				ch = scanner.ReadChar();
				length++;
				if (ch == '!')
				{
					length = 7;
					// read comment
					if (scanner.ReadString("--", true))
					{
						while (!scanner.ReadString("-->", true))
						{
							if (scanner.ReadChar() == -1)
							{
								scanner.Position = pos;
								return -1;
							}
							length++;
						}
						return length;
					}
					scanner.Position = pos;
					return -1;
				}
				tagNameBuilder.Clear();
				var first = true;
				while (ch != -1 && char.IsLetter((char)ch))
				{
					if (first && !char.IsLetter((char)ch))
					{
						scanner.Position = pos;
						return -1;
					}
					first = false;
					tagNameBuilder.Append((char)ch);
					ch = scanner.ReadChar();
					length++;
				}
				if (ch == ' ' || ch == '>' || ch == '/')
				{
					var isVoid = voidTags.Contains(tagNameBuilder.ToString());
					int prev = ch;
					while (ch != '>' && ch != -1)
					{
						prev = ch;
						if (ch == '\'' || ch == '"')
						{
							var quote = ch;
							ch = scanner.ReadChar();
							length++;
							while (ch != quote && ch != -1)
							{
								if (ch == '\n')
								{
									scanner.Position = pos;
									return -1;
								}
								ch = scanner.ReadChar();
								length++;
							}
						}
						ch = scanner.ReadChar();
						length++;
					}
					if (ch != '>')
					{
						scanner.Position = pos;
						return -1;
					}
					if (isVoid || prev == '/') // self closing, or a tag with no content
					{
						return length;
					}

					// now, read till the end tag
					if (MatchContent && Name != null)
						args.Push();
					var start = pos + length;
					var contentLength = 0;
					tagNameBuilder.Insert(0, "</");
					tagNameBuilder.Append(">");
					var tagName = tagNameBuilder.ToString();
					while (!scanner.ReadString(tagName, true))
					{
						ch = scanner.Peek();
						if (ch == '<')
						{
							if (MatchContent && contentLength > 0)
							{
								args.AddMatch(this, start, contentLength, "content");
							}
							var inner = Parse(args);
							if (inner < 0)
							{
								scanner.Position = pos;
								return -1;
							}
							length += inner;
							start = pos + length;
							contentLength = 0;
							continue;
						}
							if (scanner.Advance(1) >= 0)
						{
							length++;
							contentLength++;
						}
						else
						{
							scanner.Position = pos;
							return -1;
						}
					}
					length += tagName.Length;
					if (MatchContent)
					{
						if (contentLength > 0)
						{
							args.AddMatch(this, start, contentLength, "content");
						}
						if (Name != null)
							args.PopMatch(this, pos, length);
					}
					return length;
				}
			}
			scanner.Position = pos;
			return -1;
		}
Example #53
0
		protected override int InnerParse(ParseArgs args)
		{
			return !args.Scanner.IsEof ? -1 : 0;
		}
Example #54
0
 protected override int InnerParse(ParseArgs args)
 {
     if (groupParser != null)
         return groupParser.Parse(args);
     return -1;
 }
Example #55
0
        protected override int InnerParse(ParseArgs args)
        {
            var scanner = args.Scanner;
            var len = 0;
            int ch;
            var pos = scanner.Position;
            if (AllowSign)
            {
                ch = scanner.ReadChar();
                if (ch == -1)
                {
                    return -1;
                }
                if (ch == '-' || ch == '+')
                {
                    len++;
                    ch = scanner.ReadChar();
                }
            }
            else
                ch = scanner.ReadChar();

            bool foundNumber = false;
            bool hasDecimal = false;
            bool hasExponent = false;
            do
            {
                if (char.IsDigit((char)ch))
                {
                    foundNumber = true;
                }
                else if (AllowDecimal && !hasDecimal && ch == DecimalSeparator)
                {
                    hasDecimal = true;
                }
                else if (hasExponent && (ch == '+' || ch == '-'))
                {
                }
                else if (AllowExponent && !hasExponent && (ch == 'E' || ch == 'e'))
                {
                    hasExponent = true;
                    hasDecimal = true; // no decimals after exponent
                }
                else if (!foundNumber)
                {
                    scanner.Position = pos;
                    return -1;
                }
                else
                    break;
                len++;
                ch = scanner.ReadChar();
            }
            while (ch != -1);
            scanner.Position = pos + len;
            return len;
        }