[Program_options] How to parse a command-line incrementally

Hi all, I'm looking to implement an "incremental" command-line parser using Boost.Program_options. The parser should be incremental in the sense that parsing should stop at the first unknown option or positional argument. At this point, my program would pick the next options description and continue parsing with that. This would proceed until the command-line has been parsed completely or the program is no longer interested in the remainder. The idea is to use this for a program that interfaces to a collection of commands that each support a set of actions. The program, commands and actions all have their own list of options, so you get command-lines like so prog [prog-opts] [cmd [cmd-opts] [act [act-opts]]] Eventually, I might want to throw in positional arguments for some or each of these as well. Any suggestions on how to achieve this? My main concerns are with the way Boost.Program_options wants to parse the whole command-line (when using allow_unregistered()) every time and with how to keep track of what still needs to be processed. Thanks in advance, -- Olaf Meeuwissen, LPIC-2 FLOSS Engineer -- AVASYS CORPORATION FSF Associate Member #1962 Help support software freedom http://www.fsf.org/jf?referrer=1962

Hi Olaf:
On 15/02/2012, Olaf Meeuwissen
The parser should be incremental in the sense that parsing should stop at the first unknown option or positional argument. At this point, my program would pick the next options description and continue parsing with that. This would proceed until the command-line has been parsed completely or the program is no longer interested in the remainder.
It seems you can make your first positional option multi-token, it will read the rest of command line. And call special function when this positional has been passed, your processing will be done inside this function. That can be done using "notifier" method of your option semantic (class typed_value). Regards, Dmitriy Matison.

Dmitriy Matison
Hi Olaf:
On 15/02/2012, Olaf Meeuwissen
wrote: The parser should be incremental in the sense that parsing should stop at the first unknown option or positional argument. At this point, my program would pick the next options description and continue parsing with that. This would proceed until the command-line has been parsed completely or the program is no longer interested in the remainder.
It seems you can make your first positional option multi-token, it will read the rest of command line. And call special function when this positional has been passed, your processing will be done inside this function. That can be done using "notifier" method of your option semantic (class typed_value).
Thanks for the suggestion, I'll have a look. I hadn't thought of using notifiers for this. -- Olaf Meeuwissen, LPIC-2 FLOSS Engineer -- AVASYS CORPORATION FSF Associate Member #1962 Help support software freedom http://www.fsf.org/jf?referrer=1962
participants (2)
-
Dmitriy Matison
-
Olaf Meeuwissen