There are three main phases during option parsing:
The Lexing phase deals with the escaping and quoting of special characters and splitting the command line string into a sequence of strings. The Parsing phase evaluates the sequence of strings from the lexing phase, and interprets them as options and arguments; this includes parsing arguments as necessary, e.g., converting a string argument “3” into the numeric argument value 3. The Validation phase determines if the options and arguments represent a valid command for the program to perform.
The Nito.KitchenSink.OptionParser library does not have a lexer, but does have a parser and hooks for validation. The easiest way to use the library is by calling a single method:
var options = OptionParser.Parse<MyOptionArguments>();
This single method wraps all the phases of the option parsing pipeline:
- The command line for the process is lexed using the default .NET lexing.
- The option and argument definitions are inferred from properties and attributes on the MyOptionArguments type.
- These definitions are used to parse the lexed command line, saving the results into properties on a default-constructed MyOptionsArguments object.
- Validation is performed on the MyOptionsArguments object, which is then returned.
Future posts will show how each of these steps may be configured (or replaced).