Changeset 1500


Ignore:
Timestamp:
Feb 7, 2014 3:47:42 PM (8 years ago)
Author:
jemian
Message:

refactor to use enclosed list parser, refs #57

File:
1 edited

Legend:

Unmodified
Added
Removed
  • topdoc/trunk/src/topdoc/database.py

    r1498 r1500  
    183183                if tok['tokStr'] in ('record', 'grecord'):
    184184                    # record specification: this defines a PV
    185                     rtyp, name = self.get_2_in_parentheses(tokenLog)
     185                    tokenLog.nextActionable()
     186                    rtyp, name = parse_to_list(tokenLog)
    186187                    pv = Pv(rtyp, name, self.filename, line_number)
    187188                    self.pv[name] = pv
    188189                elif tok['tokStr'] in ('alias'):
    189190                    # alias(record_name, alias_name)
    190                     alias_name, record_name = self.get_2_in_parentheses(tokenLog)
     191                    tokenLog.nextActionable()
     192                    alias_name, record_name = parse_to_list(tokenLog)
    191193                    if record_name in self.pv:
    192194                        self.pv[record_name].setAlias(alias_name)
     
    197199                        raise DatabaseException, msg
    198200            tok = tokenLog.nextActionable()
    199             if tok['tokName'] == 'OP' and tok['tokStr'] == '{':
     201            if token_key(tok) == 'OP {':
    200202                # field, info, &/or alias specifications
    201203                self._parse_record_content(tokenLog, pv)
     
    208210            if tok['tokName'] == 'NAME':
    209211                if tok['tokStr'] in ('field'):
    210                     field, value = self.get_2_in_parentheses(tokenLog)
     212                    tokenLog.nextActionable()
     213                    field, value = parse_to_list(tokenLog)
    211214                    pv.setField(field, value)
    212215                elif tok['tokStr'] in ('info'):
    213                     info, value = self.get_2_in_parentheses(tokenLog)
     216                    tokenLog.nextActionable()
     217                    info, value = parse_to_list(tokenLog)
    214218                    pv.setInfo(info, value)
    215219                elif tok['tokStr'] in ('alias'):
    216                     value = self.get_1_in_parentheses(tokenLog)
     220                    tokenLog.nextActionable()
     221                    value = parse_to_list(tokenLog)[0]
    217222                    pv.setAlias(value)
    218223                elif tok['tokStr'] in ('include'):
     
    236241        return count
    237242
    238     def get_1_in_parentheses(self, tokenLog):
    239         '''parse "(v)" and return v'''
    240         tokenLog.nextActionable()   # (
    241         tok = tokenLog.nextActionable()
    242         v = tok['tokStr']
    243         tokenLog.nextActionable()   # )
    244         return strip_quotes(v)
    245 
    246     def get_2_in_parentheses(self, tokenLog):
    247         '''parse "(v1, v2)" and return v1, v2 as a tuple'''
    248         tokenLog.nextActionable()   # (
    249         tok = tokenLog.nextActionable()
    250         v1 = tok['tokStr']
    251         tokenLog.nextActionable()   # ,
    252         tok = tokenLog.nextActionable()
    253         v2 = tok['tokStr']
    254         tokenLog.nextActionable()   # )
    255         return strip_quotes(v1), strip_quotes(v2)
    256 
    257243    def getPvNames(self, macros = {}):
    258244        '''
     
    275261        def re_mac(v):
    276262            return replaceMacros( v, **macros )
     263       
    277264        result = {re_mac(key): {field: re_mac(re_mac(value))
    278265                            for field, value in fieldDict.items()}
Note: See TracChangeset for help on using the changeset viewer.