diff options
author | chriseth <chris@ethereum.org> | 2018-11-04 16:34:21 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2018-11-27 22:59:57 +0800 |
commit | e016cb99e679c53708ca7294442e04f80df477cc (patch) | |
tree | 61a504d270afc93edc87d84134808a53e26959e7 /libsolidity/interface | |
parent | 5e55cb17299e1c8f9a685637703e9bd956cfc826 (diff) | |
download | dexon-solidity-e016cb99e679c53708ca7294442e04f80df477cc.tar dexon-solidity-e016cb99e679c53708ca7294442e04f80df477cc.tar.gz dexon-solidity-e016cb99e679c53708ca7294442e04f80df477cc.tar.bz2 dexon-solidity-e016cb99e679c53708ca7294442e04f80df477cc.tar.lz dexon-solidity-e016cb99e679c53708ca7294442e04f80df477cc.tar.xz dexon-solidity-e016cb99e679c53708ca7294442e04f80df477cc.tar.zst dexon-solidity-e016cb99e679c53708ca7294442e04f80df477cc.zip |
Yul objects.
Diffstat (limited to 'libsolidity/interface')
-rw-r--r-- | libsolidity/interface/AssemblyStack.cpp | 14 | ||||
-rw-r--r-- | libsolidity/interface/AssemblyStack.h | 10 |
2 files changed, 6 insertions, 18 deletions
diff --git a/libsolidity/interface/AssemblyStack.cpp b/libsolidity/interface/AssemblyStack.cpp index 31959d93..ef4e32b0 100644 --- a/libsolidity/interface/AssemblyStack.cpp +++ b/libsolidity/interface/AssemblyStack.cpp @@ -30,6 +30,7 @@ #include <libyul/AsmCodeGen.h> #include <libyul/backends/evm/EVMCodeTransform.h> #include <libyul/backends/evm/EVMAssembly.h> +#include <libyul/YulObjectParser.h> #include <libevmasm/Assembly.h> @@ -69,7 +70,7 @@ bool AssemblyStack::parseAndAnalyze(std::string const& _sourceName, std::string m_errors.clear(); m_analysisSuccessful = false; m_scanner = make_shared<Scanner>(CharStream(_source), _sourceName); - m_parserResult = yul::Parser(m_errorReporter, languageToAsmFlavour(m_language)).parse(m_scanner, false); + m_parserResult = yul::YulObjectParser(m_errorReporter, languageToAsmFlavour(m_language)).parse(m_scanner, false); if (!m_errorReporter.errors().empty()) return false; solAssert(m_parserResult, ""); @@ -77,17 +78,6 @@ bool AssemblyStack::parseAndAnalyze(std::string const& _sourceName, std::string return analyzeParsed(); } -bool AssemblyStack::analyze(yul::Block const& _block, Scanner const* _scanner) -{ - m_errors.clear(); - m_analysisSuccessful = false; - if (_scanner) - m_scanner = make_shared<Scanner>(*_scanner); - m_parserResult = make_shared<yul::Block>(_block); - - return analyzeParsed(); -} - bool AssemblyStack::analyzeParsed() { m_analysisInfo = make_shared<yul::AsmAnalysisInfo>(); diff --git a/libsolidity/interface/AssemblyStack.h b/libsolidity/interface/AssemblyStack.h index 03b811db..b89faca0 100644 --- a/libsolidity/interface/AssemblyStack.h +++ b/libsolidity/interface/AssemblyStack.h @@ -24,6 +24,9 @@ #include <liblangutil/ErrorReporter.h> #include <liblangutil/EVMVersion.h> +#include <libyul/YulObject.h> +#include <libyul/YulObjectParser.h> + #include <libevmasm/LinkerObject.h> #include <string> @@ -72,10 +75,6 @@ public: /// Multiple calls overwrite the previous state. bool parseAndAnalyze(std::string const& _sourceName, std::string const& _source); - /// Runs analysis step on the supplied block, returns false if input cannot be assembled. - /// Multiple calls overwrite the previous state. - bool analyze(yul::Block const& _block, langutil::Scanner const* _scanner = nullptr); - /// Run the assembly step (should only be called after parseAndAnalyze). MachineAssemblyObject assemble(Machine _machine) const; @@ -94,8 +93,7 @@ private: std::shared_ptr<langutil::Scanner> m_scanner; bool m_analysisSuccessful = false; - std::shared_ptr<yul::Block> m_parserResult; - std::shared_ptr<yul::AsmAnalysisInfo> m_analysisInfo; + std::shared_ptr<yul::YulObject> m_parserResult; langutil::ErrorList m_errors; langutil::ErrorReporter m_errorReporter; }; |