On 07/28/2011 12:11 AM, Dan Stromberg wrote:
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.
Yes, I thought to use str method partition in a recursive way but using
pyParsing still be easer.
Thanks
Cheers
On Wed, Jul 27, 2011 at 2:08 PM, Karim <karim.liat...@free.fr
<mailto:karim.liat...@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.liat...@free.fr
<mailto:karim.liat...@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
--
http://mail.python.org/mailman/listinfo/python-list