(&mut self)
| 1964 | I: TokenStream<'input, TF = LocalTokenFactory<'input>> + TidAble<'input>, |
| 1965 | { |
| 1966 | pub fn unary(&mut self) -> Result<Rc<UnaryContextAll<'input>>, ANTLRError> { |
| 1967 | let mut recog = self; |
| 1968 | let _parentctx = recog.ctx.take(); |
| 1969 | let mut _localctx = UnaryContextExt::new(_parentctx.clone(), recog.base.get_state()); |
| 1970 | recog.base.enter_rule(_localctx.clone(), 12, RULE_unary); |
| 1971 | let mut _localctx: Rc<UnaryContextAll> = _localctx; |
| 1972 | let mut _la: i32 = -1; |
| 1973 | let result: Result<(), ANTLRError> = (|| { |
| 1974 | let mut _alt: i32; |
| 1975 | recog.base.set_state(99); |
| 1976 | recog.err_handler.sync(&mut recog.base)?; |
| 1977 | match recog.interpreter.adaptive_predict(8, &mut recog.base)? { |
| 1978 | 1 => { |
| 1979 | let tmp = MemberExprContextExt::new(&**_localctx); |
| 1980 | recog.base.enter_outer_alt(Some(tmp.clone()), 1)?; |
| 1981 | _localctx = tmp; |
| 1982 | { |
| 1983 | /*InvokeRule member*/ |
| 1984 | recog.base.set_state(86); |
| 1985 | recog.member_rec(0)?; |
| 1986 | } |
| 1987 | } |
| 1988 | 2 => { |
| 1989 | let tmp = LogicalNotContextExt::new(&**_localctx); |
| 1990 | recog.base.enter_outer_alt(Some(tmp.clone()), 2)?; |
| 1991 | _localctx = tmp; |
| 1992 | { |
| 1993 | recog.base.set_state(88); |
| 1994 | recog.err_handler.sync(&mut recog.base)?; |
| 1995 | _la = recog.base.input.la(1); |
| 1996 | loop { |
| 1997 | { |
| 1998 | { |
| 1999 | recog.base.set_state(87); |
| 2000 | let tmp = recog |
| 2001 | .base |
| 2002 | .match_token(CEL_EXCLAM, &mut recog.err_handler)?; |
| 2003 | if let UnaryContextAll::LogicalNotContext(ctx) = |
| 2004 | cast_mut::<_, UnaryContextAll>(&mut _localctx) |
| 2005 | { |
| 2006 | ctx.s19 = Some(tmp.clone()); |
| 2007 | } else { |
| 2008 | unreachable!("cant cast"); |
| 2009 | } |
| 2010 | |
| 2011 | let temp = if let UnaryContextAll::LogicalNotContext(ctx) = |
| 2012 | cast_mut::<_, UnaryContextAll>(&mut _localctx) |
| 2013 | { |
| 2014 | ctx.s19.clone().unwrap() |
| 2015 | } else { |
| 2016 | unreachable!("cant cast"); |
| 2017 | }; |
| 2018 | if let UnaryContextAll::LogicalNotContext(ctx) = |
| 2019 | cast_mut::<_, UnaryContextAll>(&mut _localctx) |
| 2020 | { |
| 2021 | ctx.ops.push(temp); |
| 2022 | } else { |
| 2023 | unreachable!("cant cast"); |
no test coverage detected