public string MixedExpressionSimpleArithmetic() { // Expression: 2 * 3 + 10 var translationUnit = BinaryExpressionTranslationUnit.Create( BinaryExpressionTranslationUnit.Create( LiteralTranslationUnit <int> .Create(2), LiteralTranslationUnit <int> .Create(3), OperatorToken.Multiplication), LiteralTranslationUnit <int> .Create(10), OperatorToken.Addition); return(translationUnit.Translate()); }
public void IntegerDivide() { ITranslationUnit number1 = Expressions.RandomIntegerLiteral; ITranslationUnit number2 = Expressions.RandomIntegerLiteral; ITranslationUnit translationUnit = BinaryExpressionTranslationUnit.Create(number1, number2, OperatorToken.Divide); string typescript = translationUnit.Translate(); new Utils.FileWriter(TestSuite.Context).WriteToFile(typescript, string.Format("{0}.Code", nameof(this.IntegerDivide)), Utils.FileType.TypeScript); Assert.AreEqual(string.Format("{0} / {1}", number1.Translate(), number2.Translate()), typescript, "Expression does not match expected!"); }
private static ITranslationUnit BuildBinaryExpressionTranslationUnit(BinaryExpressionSyntax expression, SemanticModel semanticModel) { OperatorToken token = OperatorToken.Undefined; switch (expression.Kind()) { case SyntaxKind.AddExpression: token = OperatorToken.Addition; break; case SyntaxKind.MultiplyExpression: token = OperatorToken.Multiplication; break; case SyntaxKind.DivideExpression: token = OperatorToken.Divide; break; case SyntaxKind.SubtractExpression: token = OperatorToken.Subtraction; break; case SyntaxKind.EqualsExpression: token = OperatorToken.LogicalEquals; break; case SyntaxKind.NotEqualsExpression: token = OperatorToken.NotEquals; break; } if (token == OperatorToken.Undefined) { throw new InvalidOperationException("Binary operator could not be detected!"); } BinaryExpression binaryExpressionHelper = new BinaryExpression(expression, semanticModel); ITranslationUnit leftHandOperand = new ExpressionTranslationUnitBuilder(binaryExpressionHelper.LeftHandOperand, semanticModel).Build(); ITranslationUnit rightHandOperand = new ExpressionTranslationUnitBuilder(binaryExpressionHelper.RightHandOperand, semanticModel).Build(); return(BinaryExpressionTranslationUnit.Create(leftHandOperand, rightHandOperand, token)); }
public string MixedExpressionSimpleParentheticArithmetic() { // Expression: 2 * 3 + 100++ * (200 - 300) var translationUnit = BinaryExpressionTranslationUnit.Create( BinaryExpressionTranslationUnit.Create( LiteralTranslationUnit <int> .Create(2), LiteralTranslationUnit <int> .Create(3), OperatorToken.Multiplication), BinaryExpressionTranslationUnit.Create( UnaryExpressionTranslationUnit.Create( LiteralTranslationUnit <int> .Create(100), OperatorToken.Increment, UnaryExpressionTranslationUnit.UnaryPosition.Postfix), ParenthesizedExpressionTranslationUnit.Create( BinaryExpressionTranslationUnit.Create( LiteralTranslationUnit <int> .Create(200), LiteralTranslationUnit <int> .Create(300), OperatorToken.Subtraction)), OperatorToken.Multiplication), OperatorToken.Addition); return(translationUnit.Translate()); }
/// <summary> /// /// </summary> /// <param name="operatorToken"></param> /// <param name="number1"></param> /// <param name="number2"></param> /// <returns></returns> public static ITranslationUnit BuildExpressionTranslationUnit(OperatorToken operatorToken, int number1, int number2) { return(BinaryExpressionTranslationUnit.Create( LiteralTranslationUnit <int> .Create(number1), LiteralTranslationUnit <int> .Create(number2), operatorToken)); }