class_docstr: This is the central parsing class Jinja uses.  It's passed to
  extensions and can be used to parse expressions or statements.
class_docstr_tok: ["This","is","the","central","parsing","class","Jinja","uses",".","It","'s","passed","to","extensions","and","can","be","used","to","parse","expressions","or","statements","."]
code: def parse_condexpr(self) -> nodes.Expr:
      lineno = self.stream.current.lineno
      expr1 = self.parse_or()
      expr3: t.Optional[nodes.Expr]
  
      while self.stream.skip_if("name:if"):
          expr2 = self.parse_or()
          if self.stream.skip_if("name:else"):
              expr3 = self.parse_condexpr()
          else:
              expr3 = None
          expr1 = nodes.CondExpr(expr2, expr1, expr3, lineno=lineno)
          lineno = self.stream.current.lineno
      return expr1
  
imports: import typing
  import typing
  from .None import nodes
  from .exceptions import TemplateAssertionError
  from .exceptions import TemplateSyntaxError
  from .lexer import describe_token
  from .lexer import describe_token_expr
label_desc: Use image node_id 30 for calling the Parser obj's underlying member method code with example usage: obj.parse_condexpr() and returns: expr1