Ejemplo n.º 1
0
 def PATH(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'PATH', [])
     _token = self._peek('"/"', '"//"')
     if _token == '"/"':
         self._scan('"/"')
         result = _Location()
     else:  # == '"//"'
         self._scan('"//"')
         result = _AnyLocation()
     _token = self._peek('IDENTIFIER', 'WILDCARD')
     if _token == 'IDENTIFIER':
         IDENTIFIER = self._scan('IDENTIFIER')
         result.elementName = IDENTIFIER
     else:  # == 'WILDCARD'
         WILDCARD = self._scan('WILDCARD')
         result.elementName = None
     while self._peek('"\\["', 'END', '"/"', '"//"') == '"\\["':
         self._scan('"\\["')
         PREDICATE = self.PREDICATE(_context)
         result.predicates.append(PREDICATE)
         self._scan('"\\]"')
     if self._peek() not in ['"\\["', 'END', '"/"', '"//"']:
         raise SyntaxError(charpos=self._scanner.get_prev_char_pos(),
                           context=_context,
                           msg='Need one of ' +
                           ', '.join(['"\\["', 'END', '"/"', '"//"']))
     return result
 def PATH(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'PATH', [])
     _token = self._peek('"/"', '"//"')
     if _token == '"/"':
         self._scan('"/"')
         result = _Location()
     else: # == '"//"'
         self._scan('"//"')
         result = _AnyLocation()
     _token = self._peek('IDENTIFIER', 'WILDCARD')
     if _token == 'IDENTIFIER':
         IDENTIFIER = self._scan('IDENTIFIER')
         result.elementName = IDENTIFIER
     else: # == 'WILDCARD'
         WILDCARD = self._scan('WILDCARD')
         result.elementName = None
     while self._peek('"\\["', 'END', '"/"', '"//"') == '"\\["':
         self._scan('"\\["')
         PREDICATE = self.PREDICATE(_context)
         result.predicates.append(PREDICATE)
         self._scan('"\\]"')
     if self._peek() not in ['"\\["', 'END', '"/"', '"//"']:
         raise SyntaxError(charpos=self._scanner.get_prev_char_pos(), context=_context, msg='Need one of ' + ', '.join(['"\\["', 'END', '"/"', '"//"']))
     return result