Lines Matching defs:EvalResult
64 EvalResult LHSResult;
74 EvalResult RHSResult;
116 class EvalResult {
118 EvalResult() : Value(0) {}
119 EvalResult(uint64_t Value) : Value(Value) {}
120 EvalResult(std::string ErrorMsg)
149 EvalResult unexpectedToken(StringRef TokenStart, StringRef SubExpr,
162 return EvalResult(std::move(ErrorMsg));
165 bool handleError(StringRef Expr, const EvalResult &R) const {
204 EvalResult computeBinOpResult(BinOpToken Op, const EvalResult &LHSResult,
205 const EvalResult &RHSResult) const {
210 return EvalResult(LHSResult.getValue() + RHSResult.getValue());
212 return EvalResult(LHSResult.getValue() - RHSResult.getValue());
214 return EvalResult(LHSResult.getValue() & RHSResult.getValue());
216 return EvalResult(LHSResult.getValue() | RHSResult.getValue());
218 return EvalResult(LHSResult.getValue() << RHSResult.getValue());
220 return EvalResult(LHSResult.getValue() >> RHSResult.getValue());
241 std::pair<EvalResult, StringRef> evalDecodeOperand(StringRef Expr) const {
250 EvalResult(("Cannot decode unknown symbol '" + Symbol + "'").str()),
259 EvalResult Number;
278 EvalResult OpIdxExpr;
292 EvalResult(("Couldn't decode instruction at '" + Symbol + "'").str()),
320 return {EvalResult(std::move(ErrMsg)), ""};
331 return {EvalResult(std::move(ErrMsg)), ""};
334 return std::make_pair(EvalResult(Op.getImm()), RemainingExpr);
343 std::pair<EvalResult, StringRef> evalNextPC(StringRef Expr,
353 EvalResult(("Cannot decode unknown symbol '" + Symbol + "'").str()),
365 EvalResult(("Couldn't decode instruction at '" + Symbol + "'").str()),
379 return std::make_pair(EvalResult(NextPC), RemainingExpr);
387 std::pair<EvalResult, StringRef>
429 return std::make_pair(EvalResult(ErrorMsg), "");
431 return std::make_pair(EvalResult(StubAddr), RemainingExpr);
434 std::pair<EvalResult, StringRef> evalSectionAddr(StringRef Expr,
468 return std::make_pair(EvalResult(ErrorMsg), "");
470 return std::make_pair(EvalResult(StubAddr), RemainingExpr);
476 std::pair<EvalResult, StringRef> evalIdentifierExpr(StringRef Expr,
502 return std::make_pair(EvalResult(ErrMsg), "");
512 return std::make_pair(EvalResult(Value), RemainingExpr);
535 std::pair<EvalResult, StringRef> evalNumberExpr(StringRef Expr) const {
545 return std::make_pair(EvalResult(Value), RemainingExpr);
551 std::pair<EvalResult, StringRef> evalParensExpr(StringRef Expr,
554 EvalResult SubExprResult;
571 std::pair<EvalResult, StringRef> evalLoadExpr(StringRef Expr) const {
577 return std::make_pair(EvalResult("Expected '{' following '*'."), "");
579 EvalResult ReadSizeExpr;
585 return std::make_pair(EvalResult("Invalid size for dereference."), "");
587 return std::make_pair(EvalResult("Missing '}' for dereference."), "");
592 EvalResult LoadAddrExprResult;
607 EvalResult(Checker.readMemoryAtAddr(LoadAddr, ReadSize)),
618 std::pair<EvalResult, StringRef> evalSimpleExpr(StringRef Expr,
620 EvalResult SubExprResult;
624 return std::make_pair(EvalResult("Unexpected end of expression"), "");
657 std::pair<EvalResult, StringRef>
658 evalSliceExpr(const std::pair<EvalResult, StringRef> &Ctx) const {
659 EvalResult SubExprResult;
666 EvalResult HighBitExpr;
677 EvalResult LowBitExpr;
692 return std::make_pair(EvalResult(SlicedValue), RemainingExpr);
701 std::pair<EvalResult, StringRef>
702 evalComplexExpr(const std::pair<EvalResult, StringRef> &LHSAndRemaining,
704 EvalResult LHSResult;
722 EvalResult RHSResult;
731 EvalResult ThisResult(computeBinOpResult(BinOp, LHSResult, RHSResult));