Struct BinOp

Inheritance Relationships

Base Type

Derived Type

Struct Documentation

struct BinOp : public AST::ASTNode

Subclassed by AST::BoolOp

Public Functions

BinOp(const std::string &sym, ASTNode *l, ASTNode *r)
~BinOp()
void print_original_src(unsigned int indent_depth = 0)
bool check_initialize_before_use(InitializedList &inits, InitializedList *all_inits, bool is_method)

Checks if the initialize before use test on the two subexpressions passes.

Return
True if the initialized before use test passes for both subexpressions.
Parameters
  • inits: Set of initialized variables.

virtual std::string generate_code(CodeGen::Settings &settings, unsigned indent_lvl, bool is_lhs) const

Binary operators are syntactic sugar for function cals. Therefore, turn a binary operator node in the tree into an object call.

Parameters
  • settings: Code generator settings
  • indent_lvl: Level of indentation

bool perform_type_inference(TypeCheck::Settings &settings, Quack::Class *parent_type)

Implements type inference for a single note in the AST.

Return
True if type inference was successful.
Parameters
  • st: Symbol table for the method
  • return_type: Return type from the block
  • parent_type: Type of the parent node. If parent node has no type, then BASE_CLASS.

Public Members

std::string opsym
ASTNode *left_
ASTNode *right_

Public Static Functions

static const std::string op_lookup(const std::string &op)

Helper function to get the method name that desugars the binary operator.

Return
Desugared method name.
Parameters
  • op: Binary operator value