16class StatementGenerator :
public Generator {
18 explicit StatementGenerator(
const SmithTarget &target) : Generator(target) {}
20 virtual ~StatementGenerator() =
default;
22 virtual IR::Statement *genStatement(
bool is_in_func);
26 virtual IR::BlockStatement *genBlockStatement(
bool is_in_func);
28 virtual IR::IfStatement *genConditionalStatement(
bool is_in_func);
30 static void removeLval(
const IR::Expression *left,
const IR::Type *type);
32 virtual IR::Statement *genAssignmentStatement();
34 virtual IR::Statement *genMethodCallExpression(
const IR::PathExpression *methodName,
35 const IR::ParameterList ¶ms);
37 virtual IR::Statement *genMethodCallStatement(
bool is_in_func);
39 virtual IR::Statement *genAssignmentOrMethodCallStatement(
bool is_in_func);
41 virtual IR::ExitStatement *genExitStatement();
43 virtual IR::SwitchStatement *genSwitchStatement();
45 IR::ReturnStatement *genReturnStatement(
const IR::Type *tp =
nullptr);