void compileDoWhileSt(void) { assert("Parsing a do..while statement ...."); // TODO eat(KW_DO); compileStatement(); eat(KW_WHILE); compileCondition(); assert("Do..While statement parsed ...."); void compileForSt(void) { Type* varType; Type *type; eat(KW_FOR); varType = compileLValue(); eat(SB_ASSIGN); type = compileExpression(); checkTypeEquality(varType, type); eat(KW_TO); type = compileExpression(); checkTypeEquality(varType, type); eat(KW_DO); compileStatement(); }
void compileAssignSt(void) { // TODO: parse the assignment and check type consistency Type* varType; Type* expType; varType=compileLValue(); eat(SB_ASSIGN); expType=compileExpression(); checkTypeEquality(varType, expType); }
void compileAssignSt(void) { // parse the assignment and check type consistency Type *lvalueType = NULL; Type *expType = NULL; lvalueType = compileLValue(); eat(SB_ASSIGN); expType = compileExpression(); checkTypeEquality(lvalueType, expType); }
void compileAssignSt(void) { Type* varType; Type* expType; varType = compileLValue(); eat(SB_ASSIGN); expType = compileExpression(); checkTypeEquality(varType, expType); }
void compileArgument(Object* param) { Type* type; if (param->paramAttrs->kind == PARAM_VALUE) { type = compileExpression(); checkTypeEquality(type, param->paramAttrs->type); } else { type = compileLValue(); checkTypeEquality(type, param->paramAttrs->type); } }
void compileAssignSt(void) { // TODO: Generate code for the assignment Type* varType; Type* expType; varType = compileLValue(); eat(SB_ASSIGN); expType = compileExpression(); checkTypeEquality(varType, expType); genST(); }
void compileArgument(Object* param) { // TODO: parse an argument, and check type consistency // If the corresponding parameter is a reference, the argument must be a lvalue Type* type; if (param->paramAttrs->kind == PARAM_VALUE) { type = compileExpression(); checkTypeEquality(type, param->paramAttrs->type); } else { type = compileLValue(); checkTypeEquality(type, param->paramAttrs->type); } }
void compileForSt(void) { CodeAddress beginLoop; Instruction* fjInstruction; Type* varType; Type *type; eat(KW_FOR); varType = compileLValue(); eat(SB_ASSIGN); genCV(); type = compileExpression(); checkTypeEquality(varType, type); genST(); genCV(); genLI(); beginLoop = getCurrentCodeAddress(); eat(KW_TO); type = compileExpression(); checkTypeEquality(varType, type); genLE(); fjInstruction = genFJ(DC_VALUE); eat(KW_DO); compileStatement(); genCV(); genCV(); genLI(); genLC(1); genAD(); genST(); genCV(); genLI(); genJ(beginLoop); updateFJ(fjInstruction, getCurrentCodeAddress()); genDCT(1); }
void compileForSt(void) { // DONE: Check type consistency of FOR's variable Type* varType; Type *type; eat(KW_FOR); varType = compileLValue(); eat(SB_ASSIGN); type = compileExpression(); checkTypeEquality(varType, type); eat(KW_TO); type = compileExpression(); checkTypeEquality(varType, type); eat(KW_DO); compileStatement(); }
void compileForSt(void) { // TODO: Check type consistency of FOR's variable Type* varType; Type *type; eat(KW_FOR); //eat(TK_IDENT); // check if the identifier is a variable //checkDeclaredVariable(currentToken->string); varType = compileLValue(); eat(SB_ASSIGN); type = compileExpression(); checkTypeEquality(varType, type); eat(KW_TO); type = compileExpression(); checkTypeEquality(varType, type); eat(KW_DO); compileStatement(); }
void compileAssignSt(void) { compileLValue(); eat(SB_ASSIGN); compileExpression(); }
void compileAssignSt(void) { // TODO: parse the assignment and check type consistency compileLValue(); eat(SB_ASSIGN); compileExpression(); }