There are two functions you need to be aware of.

   1.  parseInfo *parse(char* cmdline);
      Takes in a string cmdline, and returns a pointer to a struct
parseInfo. The members of parseInfo can be seen in parse.h.  Commands
are always stored in the array CommArray. This can accommodate
multiple pipes. In commandType, command is the executable name and
VarList is the argv to pass to the program.  cmdline can end either
with '\n' or '\0'. 

   2.  void free_info(parseInfo *info);
      Frees the struct info. info was allocated inside parse. However,
I have to free it in shell.c because the shell code needs the info
struct. So I recommend that the students always call this function at
the end in the while loop before calling parse again. 

Convention:
   Maximum number of pipes: 		10
   File name size:      		40
   Maximum number of Args: 		10
   Maximum length of a command: 	80

I tried to make it as flexible as possible and can take arbitrary
number of spaces. However, I did not test all weird cases, so it
should work for the right formats. If the parser found some error, it
will always return NULL. 

The parser parses these symbols <, >, |, &.

I tested it with my shell.c. It should work at least for the commands
in the assignment. 