public void compares_different_blocks() { var o1 = UnifiedBlock.Create( new UnifiedExpression[] { UnifiedBinaryExpression.Create( UnifiedVariableIdentifier.Create("n"), UnifiedBinaryOperator.Create( "=", UnifiedBinaryOperatorKind.Assign), UnifiedInt32Literal.Create(1)), UnifiedReturn.Create( UnifiedInt32Literal.Create(2)), }); var o2 = UnifiedBlock.Create( new UnifiedExpression[] { UnifiedBinaryExpression.Create( UnifiedVariableIdentifier.Create("n"), UnifiedBinaryOperator.Create( "=", UnifiedBinaryOperatorKind.Assign), UnifiedInt32Literal.Create(2)), UnifiedReturn.Create( UnifiedInt32Literal.Create(2)), }); Assert.That( StructuralEqualityComparer.StructuralEquals(o1, o2), Is.False); }
private static UnifiedExpression CreateReturn(XElement node) { Contract.Requires(node != null); Contract.Requires(node.Name() == "return"); return (UnifiedReturn.Create( CreateSmartExpresion(node.FirstElementOrDefault()))); }
public UnifiedElement VisitReturnStatement( ReturnStatement retStmt, object data) { var nExpr = retStmt.Expression; if (nExpr == null) { return(UnifiedReturn.Create()); } var uExpr = nExpr.TryAcceptForExpression(this); return(UnifiedReturn.Create(uExpr)); }
public static UnifiedExpression CreateJumpStatement(XElement node) { Contract.Requires(node != null); Contract.Requires(node.Name() == "jump_statement"); /* jump_statement * : 'goto' IDENTIFIER ';' * | 'continue' ';' * | 'break' ';' * | 'return' ';' * | 'return' expression ';' */ var firstElement = node.FirstElement(); switch (firstElement.Value) { case "goto": return (UnifiedGoto.Create( UnifiedLabelIdentifier.Create( node.NthElement(1).Value))); case "continue": return(UnifiedContinue.Create()); case "break": return(UnifiedBreak.Create()); case "return": var expression = node.Element("expression"); if (expression != null) { return (UnifiedReturn.Create( CreateExpression(expression).First())); } return(UnifiedReturn.Create()); default: throw new InvalidOperationException(); } }
public override bool Visit(UnifiedReturn element, VisitorArgument arg) { Writer.Write("return "); element.Value.TryAccept(this, arg); return(true); }
// Rerurnæ–‡(UnifiedReturn) public override bool Visit(UnifiedReturn element, VisitorArgument arg) { Writer.Write("return "); element.Value.TryAccept(this, arg); return true; }