code: def choice(self, other):
          '''(|) This combinator implements choice. The parser p | q first applies p.
          If it succeeds, the value of p is returned.
          If p fails **without consuming any input**, parser q is tried.
          NOTICE: without backtrack.'''
          @Parser
          def choice_parser(text, index):
              res = self(text, index)
              return res if res.status or res.index != index else other(text, index)
          return choice_parsef choice(self, other):
          '''(|) This combinator implements choice. The parser p | q first applies p.
          If it succeeds, the value of p is returned.
          If p fails **without consuming any input**, parser q is tried.
          NOTICE: without backtrack.'''
          @Parser
          def choice_parser(text, index):
              res = self(text, index)
              return res if res.status or res.index != index else other(text, index)
          return choice_parser
docs: (|) This combinator implements choice. The parser p | q first applies p.
          If it succeeds, the value of p is returned.
          If p fails **without consuming any input**, parser q is tried.
          NOTICE: without backtrack.