Пример #1
0
void nameWhile(t_tree node)
{
	nameExpr(node->Node.While.Expr);

	nameStmnt(node->Node.While.Stmnt);

	nameStmnt(node->Node.Stmnt.Next);
}
Пример #2
0
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);
}
Пример #3
0
void nameFuncCallStmnt(t_tree node)
{
	checkIdUndefined(node->Node.FuncCallStmnt.FuncName, node->LineNr);
	nameActual(node->Node.FuncCallStmnt.Actuals, 1);
	
	nameStmnt(node->Node.Stmnt.Next);
}
Пример #4
0
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);
}
Пример #6
0
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);
}
Пример #8
0
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);
}
Пример #9
0
void nameLabel(t_tree node)
{
	checkIdExists(node->Node.Label.Id, node->LineNr, LABEL, NAME_TABLE_VARIABLE);
	nameStmnt(node->Node.Stmnt.Next);
}
Пример #10
0
void nameGoto(t_tree node)
{
	checkIdUndefined(node->Node.Goto.Id, node->LineNr);
	nameStmnt(node->Node.Stmnt.Next);
}
Пример #11
0
void nameAsm(t_tree node)
{
	nameStmnt(node->Node.Stmnt.Next);
}
Пример #12
0
void nameExit(t_tree node)
{
	nameStmnt(node->Node.Stmnt.Next);
}
Пример #13
0
void nameLoop(t_tree node)
{
	nameStmnt(node->Node.Loop.Stmnt);

	nameStmnt(node->Node.Stmnt.Next);
}
Пример #14
0
void nameWrite(t_tree node)
{
	nameExpr(node->Node.Write.Expr);

	nameStmnt(node->Node.Stmnt.Next);
}
Пример #15
0
void nameRead(t_tree node)
{
	checkIdUndefined(node->Node.Read.Id, node->LineNr);

	nameStmnt(node->Node.Stmnt.Next);
}