MCPcopy Create free account
hub / github.com/cel-rust/cel-rust / relation_rec

Method relation_rec

cel/src/parser/gen/celparser.rs:1226–1320  ·  view source on GitHub ↗
(&mut self, _p: i32)

Source from the content-addressed store, hash-verified

1224 }
1225
1226 fn relation_rec(&mut self, _p: i32) -> Result<Rc<RelationContextAll<'input>>, ANTLRError> {
1227 let recog = self;
1228 let _parentctx = recog.ctx.take();
1229 let _parentState = recog.base.get_state();
1230 let mut _localctx = RelationContextExt::new(_parentctx.clone(), recog.base.get_state());
1231 recog
1232 .base
1233 .enter_recursion_rule(_localctx.clone(), 8, RULE_relation, _p);
1234 let mut _localctx: Rc<RelationContextAll> = _localctx;
1235 let mut _prevctx = _localctx.clone();
1236 let _startState = 8;
1237 let mut _la: i32 = -1;
1238 let result: Result<(), ANTLRError> = (|| {
1239 let mut _alt: i32;
1240 //recog.base.enter_outer_alt(_localctx.clone(), 1)?;
1241 recog.base.enter_outer_alt(None, 1)?;
1242 {
1243 {
1244 /*InvokeRule calc*/
1245 recog.base.set_state(62);
1246 recog.calc_rec(0)?;
1247 }
1248 let tmp = recog.input.lt(-1).cloned();
1249 recog.ctx.as_ref().unwrap().set_stop(tmp);
1250 recog.base.set_state(69);
1251 recog.err_handler.sync(&mut recog.base)?;
1252 _alt = recog.interpreter.adaptive_predict(3, &mut recog.base)?;
1253 while { _alt != 2 && _alt != INVALID_ALT } {
1254 if _alt == 1 {
1255 recog.trigger_exit_rule_event()?;
1256 _prevctx = _localctx.clone();
1257 {
1258 {
1259 /*recRuleAltStartAction*/
1260 let mut tmp =
1261 RelationContextExt::new(_parentctx.clone(), _parentState);
1262 recog.push_new_recursion_context(
1263 tmp.clone(),
1264 _startState,
1265 RULE_relation,
1266 )?;
1267 _localctx = tmp;
1268 recog.base.set_state(64);
1269 if !({
1270 let _localctx = Some(_localctx.clone());
1271 recog.precpred(None, 1)
1272 }) {
1273 Err(FailedPredicateError::new(
1274 &mut recog.base,
1275 Some("recog.precpred(None, 1)".to_owned()),
1276 None,
1277 ))?;
1278 }
1279 recog.base.set_state(65);
1280 cast_mut::<_, RelationContext>(&mut _localctx).op =
1281 recog.base.input.lt(1).cloned();
1282
1283 _la = recog.base.input.la(1);

Callers 2

conditionalAndMethod · 0.80
relationMethod · 0.80

Calls 4

cloneMethod · 0.80
calc_recMethod · 0.80
report_errorMethod · 0.80
to_ownedMethod · 0.45

Tested by

no test coverage detected