SHARE
TWEET
Untitled
a guest
Jan 29th, 2018
53
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Sprache;
- namespace Mnemosyne
- {
- public static class Extension
- {
- public static void Each<T>(this IEnumerable<T> TSource, Action<T> Action)
- {
- if (Action != null) foreach (var TValue in TSource) Action.Invoke(TValue);
- }
- }
- class Program
- {
- static void PrintArgument((String Identifier, String Value) Argument, String Prefix)
- => Console.WriteLine($"{Prefix}Argument: {Argument.Identifier}={Argument.Value}");
- static void PrintArgument((String Identifier, String Value) Argument)
- => PrintArgument(Argument, "\t");
- static void Main(string[] args)
- {
- Parser<String> IdentifierParser = Parse.Letter.AtLeastOnce().Text();
- Parser<String> OptionParser =
- from OptionPrefix in Parse.Char('-').AtLeastOnce()
- from Value in IdentifierParser
- select Value;
- Parser<(String Identifier, String Value)> ArgumentParser =
- from Identifier in IdentifierParser
- from Separator in Parse.Char('=')
- from Value in Parse.LetterOrDigit.AtLeastOnce().Text()
- select ValueTuple.Create(Identifier, Value);
- Parser<IEnumerable<(String Identifier, String Value)>> ArgumentStreamParser =
- from Argument in ArgumentParser.DelimitedBy(Parse.WhiteSpace)
- select Argument;
- while (true)
- {
- try
- {
- //Console.Write("Option Parser: ");
- //String Input = Console.ReadLine();
- //Console.WriteLine(OptionParser.Parse(Input));
- Console.Write("Argument Parser: ");
- var Input = Console.ReadLine();
- //var (Identifier, Value) = ArgumentParser.Parse(Input);
- //Console.WriteLine($"Parsed: {Idenfifier}={Value}");
- Console.Write("Argument(s): \n");
- ArgumentStreamParser.Parse(Input).Each(PrintArgument);
- Console.Write("\n");
- }
- catch (Exception Ex)
- {
- Console.WriteLine(Ex.Message);
- }
- }
- }
- }
- }
RAW Paste Data

