public SyntaxNode constructSyntaxNode(VisualNode e) { Debug.Log("Id of currentl constructing node is " + e.ID); SyntaxNode node = SyntaxNodeFactory.produce(e.ID); if (node is BlockNode) { if (node is IfNode) { //It should still retain while if is while IfNode ifBlock = (IfNode)node; BinaryOperationNode conditionalStatement = new BinaryOperationNode(); //Set it's attributes with fields in the operationVisual BlockVisual block = (BlockVisual)e; BinaryOperationVisual condition = (BinaryOperationVisual)block.condition; if (condition == null) { //Throw an exception } convertBinaryOperation((BinaryOperationNode)conditionalStatement, (BinaryOperationVisual)condition); ifBlock.SetCondition(conditionalStatement); } } else if (e is BinaryOperationVisual) { if (node is BinaryOperationNode) { convertBinaryOperation((BinaryOperationNode)node, (BinaryOperationVisual)e); } } //It should hold all it's changes. return(node); }
private void convertBinaryOperation(BinaryOperationNode node, BinaryOperationVisual binaryOperationVisual) { node.FirstOperand = binaryOperationVisual.firstOperand.text; node.SecondOperand = binaryOperationVisual.secondOperand.text; node.Operation = binaryOperationVisual.operators.options[binaryOperationVisual.operators.value].text; }