(&mut self)
| 654 | I: TokenStream<'input, TF = LocalTokenFactory<'input>> + TidAble<'input>, |
| 655 | { |
| 656 | pub fn expr(&mut self) -> Result<Rc<ExprContextAll<'input>>, ANTLRError> { |
| 657 | let mut recog = self; |
| 658 | let _parentctx = recog.ctx.take(); |
| 659 | let mut _localctx = ExprContextExt::new(_parentctx.clone(), recog.base.get_state()); |
| 660 | recog.base.enter_rule(_localctx.clone(), 2, RULE_expr); |
| 661 | let mut _localctx: Rc<ExprContextAll> = _localctx; |
| 662 | let mut _la: i32 = -1; |
| 663 | let result: Result<(), ANTLRError> = (|| { |
| 664 | //recog.base.enter_outer_alt(_localctx.clone(), 1)?; |
| 665 | recog.base.enter_outer_alt(None, 1)?; |
| 666 | { |
| 667 | /*InvokeRule conditionalOr*/ |
| 668 | recog.base.set_state(37); |
| 669 | let tmp = recog.conditionalOr()?; |
| 670 | cast_mut::<_, ExprContext>(&mut _localctx).e = Some(tmp.clone()); |
| 671 | |
| 672 | recog.base.set_state(43); |
| 673 | recog.err_handler.sync(&mut recog.base)?; |
| 674 | _la = recog.base.input.la(1); |
| 675 | if _la == CEL_QUESTIONMARK { |
| 676 | { |
| 677 | recog.base.set_state(38); |
| 678 | let tmp = recog |
| 679 | .base |
| 680 | .match_token(CEL_QUESTIONMARK, &mut recog.err_handler)?; |
| 681 | cast_mut::<_, ExprContext>(&mut _localctx).op = Some(tmp.clone()); |
| 682 | |
| 683 | /*InvokeRule conditionalOr*/ |
| 684 | recog.base.set_state(39); |
| 685 | let tmp = recog.conditionalOr()?; |
| 686 | cast_mut::<_, ExprContext>(&mut _localctx).e1 = Some(tmp.clone()); |
| 687 | |
| 688 | recog.base.set_state(40); |
| 689 | recog.base.match_token(CEL_COLON, &mut recog.err_handler)?; |
| 690 | |
| 691 | /*InvokeRule expr*/ |
| 692 | recog.base.set_state(41); |
| 693 | let tmp = recog.expr()?; |
| 694 | cast_mut::<_, ExprContext>(&mut _localctx).e2 = Some(tmp.clone()); |
| 695 | } |
| 696 | } |
| 697 | } |
| 698 | Ok(()) |
| 699 | })(); |
| 700 | match result { |
| 701 | Ok(_) => {} |
| 702 | Err(e @ ANTLRError::FallThrough(_)) => return Err(e), |
| 703 | Err(ref re) => { |
| 704 | //_localctx.exception = re; |
| 705 | recog.err_handler.report_error(&mut recog.base, re); |
| 706 | recog.err_handler.recover(&mut recog.base, re)?; |
| 707 | } |
| 708 | } |
| 709 | recog.base.exit_rule()?; |
| 710 | |
| 711 | Ok(_localctx) |
| 712 | } |
| 713 | } |
no test coverage detected