This keyword allows a child class to override the function.

Not Implemented Virtual Function

A not implemented function will equal = 0. Its a syntax quirk of C++

class ExprAST{
public:
	virtual ~ExprAST() {}
	virtual Value *codegen() = 0; // = 0 means not implemented
}