void compileBlock2(void) { Object* typeObj; Type* actualType; if (lookAhead->tokenType == KW_TYPE) { eat(KW_TYPE); do { eat(TK_IDENT); checkFreshIdent(currentToken->string); typeObj = createTypeObject(currentToken->string); eat(SB_EQ); actualType = compileType(); typeObj->typeAttrs->actualType = actualType; declareObject(typeObj); eat(SB_SEMICOLON); } while (lookAhead->tokenType == TK_IDENT); compileBlock3(); } else compileBlock3(); }
void compileBlock2(void) { Object* typeObj; Type* actualType; if (lookAhead->tokenType == KW_TYPE) { eat(KW_TYPE); do { eat(TK_IDENT); // TODO: Check if a type identifier is fresh in the block checkFreshIdent(currentToken->string); // create a type object typeObj = createTypeObject(currentToken->string); eat(SB_EQ); // Get the actual type actualType = compileType(); typeObj->typeAttrs->actualType = actualType; // Declare the type object declareObject(typeObj); eat(SB_SEMICOLON); } while (lookAhead->tokenType == TK_IDENT); compileBlock3(); } else compileBlock3(); }
void compileBlock2(void) { if (lookAhead->tokenType == KW_TYPE) { eat(KW_TYPE); compileTypeDecl(); compileTypeDecls(); compileBlock3(); } else compileBlock3(); }
void compileBlock2(void) { // TODO: create and declare type objects# Object* obj = NULL; if (lookAhead->tokenType == KW_TYPE) { eat(KW_TYPE); do { eat(TK_IDENT); obj = createTypeObject(currentToken->string); eat(SB_EQ); obj->typeAttrs->actualType = compileType(); eat(SB_SEMICOLON); declareObject(obj); } while (lookAhead->tokenType == TK_IDENT); compileBlock3(); } else compileBlock3(); }