public override void Visit(GraphDeclEdgeNode node) { _symbolTable.SetCurrentNode(node); AllType vertexFromType = _symbolTable.RetrieveSymbol(node.VertexNameFrom, false) ?? AllType.UNKNOWNTYPE; AllType vertexToType = _symbolTable.RetrieveSymbol(node.VertexNameTo, false) ?? AllType.UNKNOWNTYPE; CheckAllowedCast(vertexFromType, vertexToType); foreach (KeyValuePair <string, AbstractNode> item in node.ValueList) { item.Value.Parent = node; item.Value.Accept(this); AllType? typeOfKey = _symbolTable.GetAttributeType(item.Key, AllType.EDGE); ExpressionNode expNode; if (item.Value is BoolComparisonNode) { expNode = (ExpressionNode)item.Value.Children[0]; } else { expNode = item.Value as ExpressionNode; } if (expNode is ExpressionNode) { if (typeOfKey != expNode.OverAllType) { _symbolTable.TypeExpressionMismatch(); } } } }