aboutsummaryrefslogtreecommitdiffstats
path: root/main.cpp
diff options
context:
space:
mode:
authorGav Wood <i@gavwood.com>2014-05-14 06:00:44 +0800
committerGav Wood <i@gavwood.com>2014-05-14 06:00:44 +0800
commit4ba389e4fc500795cf37fea815f118b52792bde4 (patch)
treef86b5fb318ec617a4242da889f4733ab3efbccb7 /main.cpp
parentebf6d65d9270368d1ad8864b06fcf299ac565df6 (diff)
downloaddexon-solidity-4ba389e4fc500795cf37fea815f118b52792bde4.tar.gz
dexon-solidity-4ba389e4fc500795cf37fea815f118b52792bde4.tar.zst
dexon-solidity-4ba389e4fc500795cf37fea815f118b52792bde4.zip
Fix padding.
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp46
1 files changed, 44 insertions, 2 deletions
diff --git a/main.cpp b/main.cpp
index 7a2b8ab6..2ca0ac18 100644
--- a/main.cpp
+++ b/main.cpp
@@ -21,8 +21,9 @@
*/
#include <boost/test/unit_test.hpp>
-
-// TODO: utilise the shared testdata.
+#include <boost/spirit/include/qi.hpp>
+#include <boost/spirit/include/phoenix.hpp>
+#include <boost/spirit/include/support_utree.hpp>
int trieTest();
int rlpTest();
@@ -33,11 +34,52 @@ int vmTest();
int hexPrefixTest();
int peerTest(int argc, char** argv);
+#include <libethcore/Log.h>
#include <libethereum/BlockInfo.h>
+using namespace std;
using namespace eth;
+namespace qi = boost::spirit::qi;
+namespace px = boost::phoenix;
+namespace sp = boost::spirit;
+
+template <typename Iterator> struct whitespace: qi::grammar<Iterator>
+{
+ qi::rule<Iterator> start;
+ whitespace(): whitespace::base_type(start)
+ {
+ start = *boost::spirit::standard::space;// | (';' >> *(boost::spirit::standard::char_ - qi::eol) >> qi::eol);
+ }
+};
+
+ostream& operator<<(ostream& _out, sp::utree const& _this)
+{
+ switch (_this.which())
+ {
+ case sp::utree_type::list_type: _out << "( "; for (auto const& i: _this) ::operator<<(_out, i) << " "; _out << ")"; break;
+ case sp::utree_type::int_type: _out << _this.get<int>(); break;
+ case sp::utree_type::string_type: _out << _this.get<string>(); break;
+ default: _out << "nil";
+ }
+ return _out;
+}
BOOST_AUTO_TEST_CASE(basic_tests)
{
+ cnote << "Hello";
+/*
+ auto symbol = qi::lexeme[+(~qi::char_(std::string(" ();\"\x01-\x1f\x7f") + '\0'))];
+ auto integer = qi::lexeme[ qi::no_case["#x"] >> qi::hex] | qi::lexeme[ qi::no_case["#o"] >> qi::oct] | qi::lexeme[-qi::no_case["#d"] >> qi::int_];
+ qi::rule<string::iterator, sp::utree()> atom = symbol | integer;
+ qi::rule<string::iterator, sp::utree()> list;
+ qi::rule<string::iterator, sp::utree()> element = atom | list;
+ list = '(' > *element > ')';
+
+ string input = "(suicide (caller))";
+ sp::utree out;
+
+ qi::parse(input.begin(), input.end(), element, out);
+ cnote << out;
+*/
/* RLPStream s;
BlockInfo::genesis().fillStream(s, false);
std::cout << RLP(s.out()) << std::endl;