diff options
Diffstat (limited to 'libsolidity/inlineasm/AsmStack.cpp')
-rw-r--r-- | libsolidity/inlineasm/AsmStack.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/libsolidity/inlineasm/AsmStack.cpp b/libsolidity/inlineasm/AsmStack.cpp index b8e0e857..266136a1 100644 --- a/libsolidity/inlineasm/AsmStack.cpp +++ b/libsolidity/inlineasm/AsmStack.cpp @@ -21,12 +21,18 @@ */ #include <libsolidity/inlineasm/AsmStack.h> -#include <memory> -#include <libevmasm/Assembly.h> -#include <libevmasm/SourceLocation.h> -#include <libsolidity/parsing/Scanner.h> + #include <libsolidity/inlineasm/AsmParser.h> #include <libsolidity/inlineasm/AsmCodeGen.h> +#include <libsolidity/inlineasm/AsmPrinter.h> +#include <libsolidity/inlineasm/AsmAnalysis.h> + +#include <libsolidity/parsing/Scanner.h> + +#include <libevmasm/Assembly.h> +#include <libevmasm/SourceLocation.h> + +#include <memory> using namespace std; using namespace dev; @@ -40,8 +46,15 @@ bool InlineAssemblyStack::parse(shared_ptr<Scanner> const& _scanner) auto result = parser.parse(_scanner); if (!result) return false; + *m_parserResult = std::move(*result); - return true; + AsmAnalyzer::Scopes scopes; + return (AsmAnalyzer(scopes, m_errors))(*m_parserResult); +} + +string InlineAssemblyStack::toString() +{ + return AsmPrinter()(*m_parserResult); } eth::Assembly InlineAssemblyStack::assemble() |