void nameWhile(t_tree node) { nameExpr(node->Node.While.Expr); nameStmnt(node->Node.While.Stmnt); nameStmnt(node->Node.Stmnt.Next); }
void nameIf(t_tree node) { nameExpr(node->Node.If.Expr); nameStmnt(node->Node.If.Then); if (node->Node.If.Else != NULL) nameStmnt(node->Node.If.Else); nameStmnt(node->Node.Stmnt.Next); }
void nameFuncCallStmnt(t_tree node) { checkIdUndefined(node->Node.FuncCallStmnt.FuncName, node->LineNr); nameActual(node->Node.FuncCallStmnt.Actuals, 1); nameStmnt(node->Node.Stmnt.Next); }
void nameReturn(t_tree node) { if (node->Node.Return.Expr != NULL) nameExpr(node->Node.Return.Expr); nameStmnt(node->Node.Stmnt.Next); }
void nameFunction(t_tree node) { if (node == NULL) return; if (nameCurrentPrimitive != NULL) { if (strcmp(node->Node.Function.Name, "main") == 0) { replaceString(&node->Node.Function.Name, nameCurrentPrimitive->Node.Primitive.Name); node->Node.Function.Variables = nameCurrentPrimitive->Node.Primitive.Variables; nameCurrentPrimitive->Node.Primitive.Variables = NULL; namePrimitiveVariables(node->Node.Function.Variables); } else joinStrings(&node->Node.Function.Name, nameCurrentPrimitive->Node.Primitive.Name, node->Node.Function.Name); } checkIdExists(node->Node.Function.Name, node->LineNr, node->Node.Function.Type, NAME_TABLE_FUNCTION); scope = FindId(node->Node.Function.Name, scope); nameVariable(node->Node.Function.Variables); nameStmnt(node->Node.Function.Stmnts); scope = scope->parent; namePrimitive(node->Node.Function.Next); }
void nameAssign(t_tree node) { checkIdUndefined(node->Node.Assign.Id, node->LineNr); nameExpr(node->Node.Assign.Expr); nameStmnt(node->Node.Stmnt.Next); }
void nameFuncCallStmnt(t_tree node) { if (nameCurrentPrimitive == NULL) checkIdUndefined(node->Node.FuncCallStmnt.FuncName, node->LineNr); else checkIdUndefinedInPrimitive(&node->Node.FuncCallStmnt.FuncName, node->LineNr); nameActual(node->Node.FuncCallStmnt.Actuals, 1); nameStmnt(node->Node.Stmnt.Next); }
void nameFunction(t_tree node) { if (node == NULL) return; checkIdExists(node->Node.Function.Name, node->LineNr, node->Node.Function.Type, NAME_TABLE_FUNCTION); scope = FindId(node->Node.Function.Name, scope); nameVariable(node->Node.Function.Variables); nameStmnt(node->Node.Function.Stmnts); scope = scope->parent; nameFunction(node->Node.Function.Next); }
void nameLabel(t_tree node) { checkIdExists(node->Node.Label.Id, node->LineNr, LABEL, NAME_TABLE_VARIABLE); nameStmnt(node->Node.Stmnt.Next); }
void nameGoto(t_tree node) { checkIdUndefined(node->Node.Goto.Id, node->LineNr); nameStmnt(node->Node.Stmnt.Next); }
void nameAsm(t_tree node) { nameStmnt(node->Node.Stmnt.Next); }
void nameExit(t_tree node) { nameStmnt(node->Node.Stmnt.Next); }
void nameLoop(t_tree node) { nameStmnt(node->Node.Loop.Stmnt); nameStmnt(node->Node.Stmnt.Next); }
void nameWrite(t_tree node) { nameExpr(node->Node.Write.Expr); nameStmnt(node->Node.Stmnt.Next); }
void nameRead(t_tree node) { checkIdUndefined(node->Node.Read.Id, node->LineNr); nameStmnt(node->Node.Stmnt.Next); }