shlex parsing

Dan Stromberg drsalists at gmail.com
Wed Jul 27 18:11:14 EDT 2011


You could probably use a recursive descent parser with the standard library.

But if your management is OK with pyparsing, that might be easier, and a bit
more clear as well.

On Wed, Jul 27, 2011 at 2:08 PM, Karim <karim.liateni at free.fr> wrote:

> **
>
> Thank you Dan for answering.
>
> I ended with this and gave up with shlex:
>
> split = ['-option1', '[get_rule', 'A1', 'B2]', '-option2', '$VAR',
> '-option3', 'TAG']
>
> procedure_found = False
> result          = []
>
> for token in split:
>     if not token.startswith('[') and not token.endswith(']') and not
> procedure_found:
>         result.append(token)
>     elif token.startswith('['):
>         procedure_found = True
>         _token = token
>     elif token.endswith(']'):
>         procedure_found = False
>         _token += ' ' + token
>         result.append(_token)
>     else:
>         _token += ' ' + token
>
> print split
> print result
>
> which gives the desired values:
>
> ['-option1', '[get_rule', 'A1', 'B2]', '-option2', '$VAR', '-option3',
> 'TAG']
> ['-option1', '[get_rule A1 B2]', '-option2', '$VAR', '-option3', 'TAG']
>
>
> Sure pyParsing seems to be pretty simple but my constraint is to use
> standard lib (at maximum). To bad it is not part of python standard libs.
> On the other hand, I will have to regroup expression like '-option1 $VAL ==
> $CONSTRAINT'
> in ['-option1', '$VAL == $CONSTRAINT'].
>
> So it seems that I have no others choicse and have to use a parser like
> pyParsing.
>
> Regards
> Karim
>
>
> On 07/27/2011 10:44 PM, Dan Stromberg wrote:
>
>
> I've not used the shlex module, but this feels more like an issue to
> address with a parser than for a lexical analyzer - or perhaps even both,
> since you're splitting on whitespace sometimes, and matching square brackets
> sometimes.
>
> I've used pyparsing for stuff a bit similar to this.
>
> Or here's a list:
> http://wiki.python.org/moin/LanguageParsing
>
>  On Wed, Jul 27, 2011 at 12:30 PM, Karim <karim.liateni at free.fr> wrote:
>
>>
>> Hello All,
>>
>> I would like to parse this TCL command line with shlex:
>>
>> '-option1 [get_rule A1 B2] -option2 $VAR -option3 TAG'
>>
>> And I want to get the splitted list:
>>
>> ['-option1', '[get_rule A1 B2]', '-option2',  '$VAR', '-option3',  'TAG']
>>
>> Then I will gather in tuple 2 by 2 the arguments.
>>
>> I tried to the shlec properties attributes 'quotes', 'whitespace', etc...
>>
>> But I make 'choux blanc'.
>>
>> If somebody has complex experiences with  this module I am in.
>>
>> Cheers
>> Karim
>>  --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20110727/08370388/attachment-0001.html>


More information about the Python-list mailing list