daily pastebin goal
41%
SHARE
TWEET

Untitled

a guest Jan 29th, 2018 53 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. using Sprache;
  6.  
  7. namespace Mnemosyne
  8. {
  9.     public static class Extension
  10.     {
  11.         public static void Each<T>(this IEnumerable<T> TSource, Action<T> Action)
  12.         {
  13.             if (Action != null) foreach (var TValue in TSource) Action.Invoke(TValue);
  14.         }
  15.     }
  16.  
  17.     class Program
  18.     {
  19.         static void PrintArgument((String Identifier, String Value) Argument, String Prefix)
  20.             => Console.WriteLine($"{Prefix}Argument: {Argument.Identifier}={Argument.Value}");
  21.  
  22.         static void PrintArgument((String Identifier, String Value) Argument)
  23.             => PrintArgument(Argument, "\t");
  24.  
  25.         static void Main(string[] args)
  26.         {
  27.             Parser<String> IdentifierParser = Parse.Letter.AtLeastOnce().Text();
  28.  
  29.             Parser<String> OptionParser =
  30.                 from OptionPrefix in Parse.Char('-').AtLeastOnce()
  31.                 from Value in IdentifierParser
  32.                 select Value;
  33.  
  34.             Parser<(String Identifier, String Value)> ArgumentParser =
  35.                 from Identifier in IdentifierParser
  36.                 from Separator in Parse.Char('=')
  37.                 from Value in Parse.LetterOrDigit.AtLeastOnce().Text()
  38.                 select ValueTuple.Create(Identifier, Value);
  39.  
  40.             Parser<IEnumerable<(String Identifier, String Value)>> ArgumentStreamParser =
  41.                 from Argument in ArgumentParser.DelimitedBy(Parse.WhiteSpace)
  42.                 select Argument;
  43.  
  44.             while (true)
  45.             {
  46.                 try
  47.                 {
  48.                     //Console.Write("Option Parser: ");
  49.                     //String Input = Console.ReadLine();
  50.  
  51.                     //Console.WriteLine(OptionParser.Parse(Input));
  52.  
  53.                     Console.Write("Argument Parser: ");
  54.                     var Input = Console.ReadLine();
  55.  
  56.                     //var (Identifier, Value) = ArgumentParser.Parse(Input);
  57.                     //Console.WriteLine($"Parsed: {Idenfifier}={Value}");
  58.  
  59.                     Console.Write("Argument(s): \n");
  60.                     ArgumentStreamParser.Parse(Input).Each(PrintArgument);
  61.                     Console.Write("\n");
  62.                 }
  63.  
  64.                 catch (Exception Ex)
  65.                 {
  66.                     Console.WriteLine(Ex.Message);
  67.                 }
  68.             }
  69.         }
  70.     }
  71. }
RAW Paste Data
Pastebin PRO WINTER Special!
Get 40% OFF Pastebin PRO accounts!
Top