tipc
A TIP to LLVM compiler
|
Check if left hand side of assignment is an l-value. More...
#include <CheckAssignable.h>
Public Member Functions | |
CheckAssignable ()=default | |
virtual void | endVisit (ASTAssignStmt *element) override |
virtual void | endVisit (ASTRefExpr *element) override |
![]() | |
virtual bool | visit (ASTProgram *element) |
virtual void | endVisit (ASTProgram *element) |
virtual bool | visit (ASTFunction *element) |
virtual void | endVisit (ASTFunction *element) |
virtual bool | visit (ASTNumberExpr *element) |
virtual void | endVisit (ASTNumberExpr *element) |
virtual bool | visit (ASTVariableExpr *element) |
virtual void | endVisit (ASTVariableExpr *element) |
virtual bool | visit (ASTBinaryExpr *element) |
virtual void | endVisit (ASTBinaryExpr *element) |
virtual bool | visit (ASTInputExpr *element) |
virtual void | endVisit (ASTInputExpr *element) |
virtual bool | visit (ASTFunAppExpr *element) |
virtual void | endVisit (ASTFunAppExpr *element) |
virtual bool | visit (ASTAllocExpr *element) |
virtual void | endVisit (ASTAllocExpr *element) |
virtual bool | visit (ASTRefExpr *element) |
virtual bool | visit (ASTDeRefExpr *element) |
virtual void | endVisit (ASTDeRefExpr *element) |
virtual bool | visit (ASTNullExpr *element) |
virtual void | endVisit (ASTNullExpr *element) |
virtual bool | visit (ASTFieldExpr *element) |
virtual void | endVisit (ASTFieldExpr *element) |
virtual bool | visit (ASTRecordExpr *element) |
virtual void | endVisit (ASTRecordExpr *element) |
virtual bool | visit (ASTAccessExpr *element) |
virtual void | endVisit (ASTAccessExpr *element) |
virtual bool | visit (ASTDeclNode *element) |
virtual void | endVisit (ASTDeclNode *element) |
virtual bool | visit (ASTDeclStmt *element) |
virtual void | endVisit (ASTDeclStmt *element) |
virtual bool | visit (ASTAssignStmt *element) |
virtual bool | visit (ASTWhileStmt *element) |
virtual void | endVisit (ASTWhileStmt *element) |
virtual bool | visit (ASTIfStmt *element) |
virtual void | endVisit (ASTIfStmt *element) |
virtual bool | visit (ASTOutputStmt *element) |
virtual void | endVisit (ASTOutputStmt *element) |
virtual bool | visit (ASTReturnStmt *element) |
virtual void | endVisit (ASTReturnStmt *element) |
virtual bool | visit (ASTErrorStmt *element) |
virtual void | endVisit (ASTErrorStmt *element) |
virtual bool | visit (ASTBlockStmt *element) |
virtual void | endVisit (ASTBlockStmt *element) |
Static Public Member Functions | |
static void | check (ASTProgram *p) |
Check if left hand side of assignment is an l-value.
The left-hand side of an assignment statement must be able to express an l-value (i.e., an address). In TIP the only expressions that can be l-values are:
Assignability is also required when using the "&E" expression. We can only take the address of an expression if it has an l-value.
This weeding pass checks where l-value expressions are required and throws a SemanticError otherwise.
|
default |
|
static |
|
overridevirtual |
Reimplemented from ASTVisitor.
|
overridevirtual |
Reimplemented from ASTVisitor.