void compileFuncDecl(void) { Object* funcObj; Type* returnType; eat(KW_FUNCTION); eat(TK_IDENT); // TODO: Check if a function identifier is fresh in the block checkFreshIdent(currentToken->string); // create the function object funcObj = createFunctionObject(currentToken->string); // declare the function object declareObject(funcObj); // enter the function's block enterBlock(funcObj->funcAttrs->scope); // parse the function's parameters compileParams(); eat(SB_COLON); // get the funtion's return type returnType = compileBasicType(); funcObj->funcAttrs->returnType = returnType; eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); // exit the function block exitBlock(); }
void compileFuncDecl(void) { Object* funcObj; Type* returnType; eat(KW_FUNCTION); eat(TK_IDENT); checkFreshIdent(currentToken->string); funcObj = createFunctionObject(currentToken->string); declareObject(funcObj); enterBlock(funcObj->funcAttrs->scope); compileParams(); eat(SB_COLON); returnType = compileBasicType(); funcObj->funcAttrs->returnType = returnType; eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); exitBlock(); }
void compileProcDecl(void) { assert("Parsing a procedure ...."); eat(KW_PROCEDURE); eat(TK_IDENT); compileParams(); eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); assert("Procedure parsed ...."); }
void compileFuncDecl(void) { assert("Parsing a function ...."); eat(KW_FUNCTION); eat(TK_IDENT); compileParams(); eat(SB_COLON); compileBasicType(); eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); assert("Function parsed ...."); }
void compileProcDecl(void) { // TODO: create and declare a procedure object// Object* obj=NULL; eat(KW_PROCEDURE); eat(TK_IDENT); obj = createProcedureObject(currentToken->string); enterBlock(obj->procAttrs->scope); compileParams(); eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); exitBlock(); declareObject(obj); }
void compileProcDecl(void) { Object* procObj; eat(KW_PROCEDURE); eat(TK_IDENT); checkFreshIdent(currentToken->string); procObj = createProcedureObject(currentToken->string); declareObject(procObj); enterBlock(procObj->procAttrs->scope); compileParams(); eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); exitBlock(); }
void compileFuncDecl(void) { // TODO: create and declare a function object# Object* obj=NULL; eat(KW_FUNCTION); eat(TK_IDENT); obj = createFunctionObject(currentToken->string); enterBlock(obj->funcAttrs->scope); compileParams(); eat(SB_COLON); obj->funcAttrs->returnType = compileBasicType(); eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); exitBlock(); declareObject(obj); }
void compileProcDecl(void) { Object* procObj; eat(KW_PROCEDURE); eat(TK_IDENT); // TODO: Check if a procedure identifier is fresh in the block checkFreshIdent(currentToken->string); // create a procedure object procObj = createProcedureObject(currentToken->string); // declare the procedure object declareObject(procObj); // enter the procedure's block enterBlock(procObj->procAttrs->scope); // parse the procedure's parameters compileParams(); eat(SB_SEMICOLON); compileBlock(); eat(SB_SEMICOLON); // exit the block exitBlock(); }