Changeset 3017


Ignore:
Timestamp:
Sep 16, 2010 6:27:20 PM (9 years ago)
Author:
wehart
Message:

Allowing for indexing with quoted strings. Including a new test
for this case.

Location:
coopr.pyomo/trunk/coopr/pyomo
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • coopr.pyomo/trunk/coopr/pyomo/data/parse_datacmds.py

    r2998 r3017  
    5555    "WORD",
    5656    "WORDWITHINDEX",
     57    "WORDWITHSQUOTEDINDEX",
     58    "WORDWITHDQUOTEDINDEX",
    5759    "STRING",
    5860    "QUOTEDSTRING",
     
    9395    return t
    9496
     97def t_WORDWITHSQUOTEDINDEX(t):
     98    r'[a-zA-Z_0-9][a-zA-Z_0-9\.\-]*\[\'[a-zA-Z_0-9\.\-,\* ]*\'\]'
     99    t.type = reserved.get(t.value,'WORDWITHSQUOTEDINDEX')    # Check for reserved words
     100    return t
     101
     102def t_WORDWITHDQUOTEDINDEX(t):
     103    r'[a-zA-Z_0-9][a-zA-Z_0-9\.\-]*\["[a-zA-Z_0-9\.\-,\* ]*"\]'
     104    t.type = reserved.get(t.value,'WORDWITHDQUOTEDINDEX')    # Check for reserved words
     105    return t
     106
    95107def t_WORD(t):
    96108    r'[a-zA-Z_0-9][a-zA-Z_0-9\.+\-]*'
     
    184196                 | SET WORDWITHINDEX COLONEQ setdecl SEMICOLON
    185197                 | SET WORDWITHINDEX COLONEQ SEMICOLON
     198                 | SET WORDWITHSQUOTEDINDEX COLONEQ setdecl SEMICOLON
     199                 | SET WORDWITHSQUOTEDINDEX COLONEQ SEMICOLON
     200                 | SET WORDWITHDQUOTEDINDEX COLONEQ setdecl SEMICOLON
     201                 | SET WORDWITHDQUOTEDINDEX COLONEQ SEMICOLON
    186202                 | PARAM items COLONEQ paramdecl SEMICOLON
    187203                 | IMPORT importdecl SEMICOLON
     
    322338    '''item : WORD
    323339            | WORDWITHINDEX
     340            | WORDWITHSQUOTEDINDEX
     341            | WORDWITHDQUOTEDINDEX
    324342            | NONWORD
    325343            | STRING
  • coopr.pyomo/trunk/coopr/pyomo/data/process_data.py

    r3016 r3017  
    383383               ans.append(tmp)
    384384             except ValueError:
    385                ans.append(val)
     385               if val[0] == "'" or val[0] == '"':
     386                    ans.append(val[1:-1])
     387               else:
     388                    ans.append(val)
    386389        if pyomo.debug("reader"):               #pragma:nocover
    387390           print "DEBUG: _data_eval(end)",ans
  • coopr.pyomo/trunk/coopr/pyomo/tests/unit/test_set.py

    r3016 r3017  
    21372137        self.instance = self.model.create(currdir+"setA.dat")
    21382138        self.failUnlessEqual( len(self.instance.E), 5)
     2139
     2140    def test_io10(self):
     2141        OUTPUT=open(currdir+"setA.dat","w")
     2142        print >>OUTPUT, "data;"
     2143        print >>OUTPUT, "set A := 'A1 x' ' A2' \"A3\";"
     2144        print >>OUTPUT, "set F['A1 x'] := 1 3 5;"
     2145        print >>OUTPUT, "set F[\" A2\"] := 2 4 6;"
     2146        print >>OUTPUT, "set F['A3'] := 3 5 7;"
     2147        print >>OUTPUT, "end;"
     2148        OUTPUT.close()
     2149        self.model.A = Set()
     2150        self.model.F = Set(self.model.A)
     2151        self.instance = self.model.create(currdir+"setA.dat")
     2152        self.failUnlessEqual( self.instance.F.dim(), 1)
     2153        self.failUnlessEqual( len(self.instance.F.keys()), 3)
     2154        self.failUnlessEqual( len(self.instance.F['A1 x']), 3)
    21392155
    21402156
Note: See TracChangeset for help on using the changeset viewer.