code: def parse(self) -> bool:
          
          self.skip_ws()
          res = self._feature_disj()
          self.skip_ws()
          if not self.at_end():
              raise InvalidFeatureExpression(self)
          return res
docs: Parse and evaluate a complete feature expression.
  
          Raises:
              InvalidFeatureExpression: If the if-feature expression is not
                  syntactically correct.
              UnknownPrefix: If a prefix of a feature name is not declared.