aboutsummaryrefslogtreecommitdiffstats
path: root/AST.cpp
diff options
context:
space:
mode:
authorChristian <c@ethdev.com>2014-10-10 22:37:54 +0800
committerChristian <c@ethdev.com>2014-10-10 22:47:21 +0800
commit98bdd7429974521946a1aa3bffa038fc515f745c (patch)
tree12736aca5ed657e6aebff050b7d663ed0da3df71 /AST.cpp
parent924f7c62bdcb203f42514d298f15570ff53d2bac (diff)
downloaddexon-solidity-98bdd7429974521946a1aa3bffa038fc515f745c.tar.gz
dexon-solidity-98bdd7429974521946a1aa3bffa038fc515f745c.tar.zst
dexon-solidity-98bdd7429974521946a1aa3bffa038fc515f745c.zip
AST printer and command line tool, some fixes.
Diffstat (limited to 'AST.cpp')
-rw-r--r--AST.cpp232
1 files changed, 232 insertions, 0 deletions
diff --git a/AST.cpp b/AST.cpp
index 76e1ff44..e0775c6c 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -21,3 +21,235 @@
*/
#include <libsolidity/AST.h>
+#include <libsolidity/ASTVisitor.h>
+
+namespace dev {
+namespace solidity {
+
+void ContractDefinition::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ listAccept(m_definedStructs, _visitor);
+ listAccept(m_stateVariables, _visitor);
+ listAccept(m_definedFunctions, _visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void StructDefinition::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ listAccept(m_members, _visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void ParameterList::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ listAccept(m_parameters, _visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void FunctionDefinition::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_parameters->accept(_visitor);
+ if (m_returnParameters)
+ m_returnParameters->accept(_visitor);
+ m_body->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void VariableDeclaration::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ if (m_type)
+ m_type->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void TypeName::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void ElementaryTypeName::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void UserDefinedTypeName::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void Mapping::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_keyType->accept(_visitor);
+ m_valueType->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void Statement::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void Block::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ listAccept(m_statements, _visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void IfStatement::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_condition->accept(_visitor);
+ m_trueBody->accept(_visitor);
+ if (m_falseBody)
+ m_falseBody->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void BreakableStatement::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void WhileStatement::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_condition->accept(_visitor);
+ m_body->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void Continue::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void Break::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void Return::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ if (m_expression)
+ m_expression->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void VariableDefinition::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_variable->accept(_visitor);
+ if (m_value)
+ m_value->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void Expression::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void Assignment::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_leftHandSide->accept(_visitor);
+ m_rightHandSide->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void UnaryOperation::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_subExpression->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void BinaryOperation::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_left->accept(_visitor);
+ m_right->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void FunctionCall::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_expression->accept(_visitor);
+ listAccept(m_arguments, _visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void MemberAccess::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_expression->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void IndexAccess::accept(ASTVisitor& _visitor)
+{
+ if (_visitor.visit(*this)) {
+ m_base->accept(_visitor);
+ m_index->accept(_visitor);
+ }
+ _visitor.endVisit(*this);
+}
+
+void PrimaryExpression::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void Identifier::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void ElementaryTypeNameExpression::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+void Literal::accept(ASTVisitor& _visitor)
+{
+ _visitor.visit(*this);
+ _visitor.endVisit(*this);
+}
+
+} }