Grammar:
* word = string + !' '
* shortname = -char
* longname = --{char[] : char[i] != '=' , char[i] != ' '}
* basicname = shortname || longname
* reduction = longname.substr(0,k) : there are no two longnames with that
substr
* optname = basicname || reduction
* arg = word || "string" // argument must be represented as single element
of argv[] or right part of assignment
* option = optname || optname arg || optname=word
* optiongroup = -char[]
* operand = word
* end = "--"
* commandline = utility_name [option...] [operand ...] [optiongroup ...]
[end operand ...]
Errors:
* invalid option - optname
* missing arg - optname
* invalid arg - optname , argname
* bad usage (incorrect usage of lib)
|