[Tutor] shlex parsing

Karim karim.liateni at free.fr
Wed Jul 27 23:08:38 CEST 2011


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 
> <mailto: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/tutor/attachments/20110727/68c9286f/attachment-0001.html>


More information about the Tutor mailing list