<br>You could probably use a recursive descent parser with the standard library.<br><br>But if your management is OK with pyparsing, that might be easier, and a bit more clear as well.<br><br><div class="gmail_quote">On Wed, Jul 27, 2011 at 2:08 PM, Karim <span dir="ltr"><<a href="mailto:karim.liateni@free.fr">karim.liateni@free.fr</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><u></u>

  
    
  
  <div bgcolor="#ffffff" text="#000000">
    <br>
    Thank you Dan for answering.<br>
    <br>
    I ended with this and gave up with shlex:<br>
    <br>
    split = ['-option1', '[get_rule', 'A1', 'B2]', '-option2', '$VAR',
    '-option3', 'TAG']<br>
    <br>
    procedure_found = False<br>
    result          = []<br>
    <br>
    for token in split:<br>
        if not token.startswith('[') and not token.endswith(']') and not
    procedure_found:<br>
            result.append(token)<br>
        elif token.startswith('['):<br>
            procedure_found = True<br>
            _token = token<br>
        elif token.endswith(']'):<br>
            procedure_found = False<br>
            _token += ' ' + token<br>
            result.append(_token)<br>
        else:<br>
            _token += ' ' + token<br>
    <br>
    print split<br>
    print result<br>
    <br>
    which gives the desired values:<br>
    <br>
    ['-option1', '[get_rule', 'A1', 'B2]', '-option2', '$VAR',
    '-option3', 'TAG']<br>
    ['-option1', '[get_rule A1 B2]', '-option2', '$VAR', '-option3',
    'TAG']<br>
    <br>
    <br>
    Sure pyParsing seems to be pretty simple but my constraint is to use<br>
    standard lib (at maximum). To bad it is not part of python standard
    libs.<br>
    On the other hand, I will have to regroup expression like '-option1
    $VAL == $CONSTRAINT'<br>
    in ['-option1', '$VAL == $CONSTRAINT'].<br>
    <br>
    So it seems that I have no others choicse and have to use a parser
    like pyParsing.<br>
    <br>
    Regards<br><font color="#888888">
    Karim</font><div><div></div><div class="h5"><br>
    <br>
    On 07/27/2011 10:44 PM, Dan Stromberg wrote:
    <blockquote type="cite"><br>
      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.<br>
      <br>
      I've used pyparsing for stuff a bit similar to this.<br>
      <br>
      Or here's a list:<br>
      <a href="http://wiki.python.org/moin/LanguageParsing" target="_blank">http://wiki.python.org/moin/LanguageParsing</a><br>
      <br>
      <div class="gmail_quote">
        On Wed, Jul 27, 2011 at 12:30 PM, Karim <span dir="ltr"><<a href="mailto:karim.liateni@free.fr" target="_blank">karim.liateni@free.fr</a>></span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
          <br>
          Hello All,<br>
          <br>
          I would like to parse this TCL command line with shlex:<br>
          <br>
          '-option1 [get_rule A1 B2] -option2 $VAR -option3 TAG'<br>
          <br>
          And I want to get the splitted list:<br>
          <br>
          ['-option1', '[get_rule A1 B2]', '-option2',  '$VAR',
          '-option3',  'TAG']<br>
          <br>
          Then I will gather in tuple 2 by 2 the arguments.<br>
          <br>
          I tried to the shlec properties attributes 'quotes',
          'whitespace', etc...<br>
          <br>
          But I make 'choux blanc'.<br>
          <br>
          If somebody has complex experiences with  this module I am in.<br>
          <br>
          Cheers<br>
          Karim<br>
          <font color="#888888">
            -- <br>
            <a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a><br>
          </font></blockquote>
      </div>
      <br>
    </blockquote>
    <br>
  </div></div></div>

</blockquote></div><br>