| 55 | { |
| 56 | |
| 57 | std::pair<std::shared_ptr<AST const>, std::shared_ptr<AsmAnalysisInfo>> parse(std::string const& _source) |
| 58 | { |
| 59 | YulStack stack( |
| 60 | langutil::EVMVersion(), |
| 61 | std::nullopt, |
| 62 | solidity::frontend::OptimiserSettings::none(), |
| 63 | DebugInfoSelection::Default() |
| 64 | ); |
| 65 | if (stack.parseAndAnalyze("--INPUT--", _source)) |
| 66 | { |
| 67 | auto const* evmDialect = dynamic_cast<EVMDialect const*>(&stack.dialect()); |
| 68 | // TODO: Add EOF support |
| 69 | solUnimplementedAssert(evmDialect && !evmDialect->eofVersion(), "No EOF support for yulrun yet."); |
| 70 | yulAssert(!Error::hasErrorsWarningsOrInfos(stack.errors()), "Parsed successfully but had errors."); |
| 71 | return make_pair(stack.parserResult()->code(), stack.parserResult()->analysisInfo); |
| 72 | } |
| 73 | else |
| 74 | { |
| 75 | SourceReferenceFormatter(std::cout, stack, true, false).printErrorInformation(stack.errors()); |
| 76 | return {}; |
| 77 | } |
| 78 | } |
| 79 | |
| 80 | void interpret(std::string const& _source, bool _inspect, bool _disableExternalCalls) |
| 81 | { |