(&mut self, s: &str)
| 507 | } |
| 508 | |
| 509 | fn parse_spec_op(&mut self, s: &str) -> Result<SpecOp> { |
| 510 | let pos = self.pos(); |
| 511 | match s { |
| 512 | "=" => Ok(SpecOp::Eq), |
| 513 | "and" => Ok(SpecOp::And), |
| 514 | "not" => Ok(SpecOp::Not), |
| 515 | "=>" => Ok(SpecOp::Imp), |
| 516 | "or" => Ok(SpecOp::Or), |
| 517 | "<=" => Ok(SpecOp::Lte), |
| 518 | "<" => Ok(SpecOp::Lt), |
| 519 | ">=" => Ok(SpecOp::Gte), |
| 520 | ">" => Ok(SpecOp::Gt), |
| 521 | "bvnot" => Ok(SpecOp::BVNot), |
| 522 | "bvand" => Ok(SpecOp::BVAnd), |
| 523 | "bvor" => Ok(SpecOp::BVOr), |
| 524 | "bvxor" => Ok(SpecOp::BVXor), |
| 525 | "bvneg" => Ok(SpecOp::BVNeg), |
| 526 | "bvadd" => Ok(SpecOp::BVAdd), |
| 527 | "bvsub" => Ok(SpecOp::BVSub), |
| 528 | "bvmul" => Ok(SpecOp::BVMul), |
| 529 | "bvudiv" => Ok(SpecOp::BVUdiv), |
| 530 | "bvurem" => Ok(SpecOp::BVUrem), |
| 531 | "bvsdiv" => Ok(SpecOp::BVSdiv), |
| 532 | "bvsrem" => Ok(SpecOp::BVSrem), |
| 533 | "bvshl" => Ok(SpecOp::BVShl), |
| 534 | "bvlshr" => Ok(SpecOp::BVLshr), |
| 535 | "bvashr" => Ok(SpecOp::BVAshr), |
| 536 | "bvsaddo" => Ok(SpecOp::BVSaddo), |
| 537 | "bvule" => Ok(SpecOp::BVUle), |
| 538 | "bvult" => Ok(SpecOp::BVUlt), |
| 539 | "bvugt" => Ok(SpecOp::BVUgt), |
| 540 | "bvuge" => Ok(SpecOp::BVUge), |
| 541 | "bvslt" => Ok(SpecOp::BVSlt), |
| 542 | "bvsle" => Ok(SpecOp::BVSle), |
| 543 | "bvsgt" => Ok(SpecOp::BVSgt), |
| 544 | "bvsge" => Ok(SpecOp::BVSge), |
| 545 | "rotr" => Ok(SpecOp::Rotr), |
| 546 | "rotl" => Ok(SpecOp::Rotl), |
| 547 | "extract" => Ok(SpecOp::Extract), |
| 548 | "zero_ext" => Ok(SpecOp::ZeroExt), |
| 549 | "sign_ext" => Ok(SpecOp::SignExt), |
| 550 | "concat" => Ok(SpecOp::Concat), |
| 551 | "conv_to" => Ok(SpecOp::ConvTo), |
| 552 | "int2bv" => Ok(SpecOp::Int2BV), |
| 553 | "bv2int" => Ok(SpecOp::BV2Int), |
| 554 | "widthof" => Ok(SpecOp::WidthOf), |
| 555 | "if" => Ok(SpecOp::If), |
| 556 | "switch" => Ok(SpecOp::Switch), |
| 557 | "subs" => Ok(SpecOp::Subs), |
| 558 | "popcnt" => Ok(SpecOp::Popcnt), |
| 559 | "rev" => Ok(SpecOp::Rev), |
| 560 | "cls" => Ok(SpecOp::Cls), |
| 561 | "clz" => Ok(SpecOp::Clz), |
| 562 | "load_effect" => Ok(SpecOp::LoadEffect), |
| 563 | "store_effect" => Ok(SpecOp::StoreEffect), |
| 564 | x => Err(self.error(pos, format!("Not a valid spec operator: {x}"))), |
| 565 | } |
| 566 | } |
no test coverage detected