Skip to content

Commit

Permalink
...
Browse files Browse the repository at this point in the history
  • Loading branch information
vczh committed Apr 6, 2014
1 parent c30cc3a commit e12e464
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 114 deletions.
24 changes: 2 additions & 22 deletions Development/Source/Ast/TinymoeAst.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ namespace tinymoe
void Accept(AstVisitor* visitor)override;
virtual void Accept(AstExpressionVisitor* visitor) = 0;
virtual void RoughlyOptimize(AstExpression::Ptr& replacement) = 0;
virtual void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used) = 0;
};

class AstStatement : public AstNode
Expand All @@ -70,7 +69,6 @@ namespace tinymoe
void Accept(AstVisitor* visitor)override;
virtual void Accept(AstStatementVisitor* visitor) = 0;
virtual void RoughlyOptimize(AstStatement::Ptr& replacement) = 0;
virtual void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used, AstStatement::Ptr& replacement) = 0;
};

class AstDeclaration : public AstNode
Expand Down Expand Up @@ -151,7 +149,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstIntegerExpression : public AstExpression
Expand All @@ -161,7 +158,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstFloatExpression : public AstExpression
Expand All @@ -171,7 +167,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstStringExpression : public AstExpression
Expand All @@ -181,7 +176,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstExternalSymbolExpression : public AstExpression
Expand All @@ -191,7 +185,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstReferenceExpression : public AstExpression
Expand All @@ -203,7 +196,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstNewTypeExpression : public AstExpression
Expand All @@ -214,7 +206,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstTestTypeExpression : public AstExpression
Expand All @@ -225,7 +216,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstNewArrayExpression : public AstExpression
Expand All @@ -235,7 +225,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstNewArrayLiteralExpression : public AstExpression
Expand All @@ -245,7 +234,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstArrayLengthExpression : public AstExpression
Expand All @@ -255,7 +243,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstArrayAccessExpression : public AstExpression
Expand All @@ -266,7 +253,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstFieldAccessExpression : public AstExpression
Expand All @@ -277,7 +263,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstInvokeExpression : public AstExpression
Expand All @@ -288,7 +273,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

class AstLambdaExpression : public AstExpression
Expand All @@ -299,7 +283,6 @@ namespace tinymoe

void Accept(AstExpressionVisitor* visitor)override;
void RoughlyOptimize(AstExpression::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used)override;
};

/*************************************************************
Expand All @@ -313,7 +296,6 @@ namespace tinymoe

void Accept(AstStatementVisitor* visitor)override;
void RoughlyOptimize(AstStatement::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used, AstStatement::Ptr& replacement)override;
};

class AstExpressionStatement : public AstStatement
Expand All @@ -323,7 +305,6 @@ namespace tinymoe

void Accept(AstStatementVisitor* visitor)override;
void RoughlyOptimize(AstStatement::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used, AstStatement::Ptr& replacement)override;
};

class AstDeclarationStatement : public AstStatement
Expand All @@ -333,7 +314,6 @@ namespace tinymoe

void Accept(AstStatementVisitor* visitor)override;
void RoughlyOptimize(AstStatement::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used, AstStatement::Ptr& replacement)override;
};

class AstAssignmentStatement : public AstStatement
Expand All @@ -347,7 +327,6 @@ namespace tinymoe

void Accept(AstStatementVisitor* visitor)override;
void RoughlyOptimize(AstStatement::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used, AstStatement::Ptr& replacement)override;
};


Expand All @@ -360,7 +339,6 @@ namespace tinymoe

void Accept(AstStatementVisitor* visitor)override;
void RoughlyOptimize(AstStatement::Ptr& replacement)override;
void RemoveUnnecessaryVariables(set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used, AstStatement::Ptr& replacement)override;
};

/*************************************************************
Expand Down Expand Up @@ -496,6 +474,8 @@ namespace tinymoe
extern void CollectUsedVariables(AstStatement::Ptr node, set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used);
extern void ExpandBlock(AstStatement::Ptr node, AstStatement::List& stats, bool lastStatement);
extern AstDeclaration::Ptr GetRootLeftValue(AstExpression::Ptr node);
extern void RemoveUnnecessaryVariables(AstExpression::Ptr node, set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used);
extern void RemoveUnnecessaryVariables(AstStatement::Ptr node, set<shared_ptr<AstDeclaration>>& defined, set<shared_ptr<AstDeclaration>>& used, AstStatement::Ptr& replacement);
}
}

Expand Down
Loading

0 comments on commit e12e464

Please sign in to comment.