Hi guys, I am trying to write a simple command line parser.
My question is what is the better way to handle optional command.
for example
like shell command in linux
(1)ls -a -l
(2)ls -l
(3)ls
(4)ls -a
(5)ls -a -l -s
are all valid command

When I confront this, I always stuck into multiple if ,else if ,else if conditions
Code:
if() {
...
} else if (){
...
} else if (){
...
} else if (){

}
And each block have very similar codes.
And so many selections code just because of the order of command can exchange.


Given a specific eg.
assume
print a b c d is a valid command.
and order doesn't matter.
a b c d is optional
what I will write will become
Code:
if (a) {
   if(b) {
       if (c) {
            if(d)   //   print a b c d
            else  // print a b d 
       }
       else{
            if (d)  // print a b d
            else  // print a b
       }
   }
    else {
         if (c)
         .....
   }
}
else {

}

A really stupid solution... because if there is n optional command.
I have to at most handle 2^n selections code.

Could anyone suggest a better idea?