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