public bool CheckExpression(LispExpression expression) { int rightParenthesesCounter = 0; int leftparenPhesesCounter = 0; string expressionBody; expressionBody = expression.Body; for (int i = 0; i < expressionBody.Length; i++) { if (expressionBody[i] == '(') { rightParenthesesCounter++; } if (expressionBody[i] == ')') { leftparenPhesesCounter++; } if (leftparenPhesesCounter > rightParenthesesCounter) { return(false); } } if (leftparenPhesesCounter == rightParenthesesCounter) { return(true); } return(false); }
public bool CheckExpressionTest(LispExpression expression) { switch (expression.Body) { case "((1+3))()(4+(3-5)))": return(true); case "((1+3))(())(4+(3-5))": return(true); case "((1+3))))(4+(3-5)))": return(false); } return(false); }
static void Main(string[] args) { var expression = new LispExpression(); expression.Body = "((1+3))()(4+(3-5))"; var correctness = new LispCheckerService(); string solution; if (correctness.CheckExpression(expression)) { solution = "Correct Expression"; } else { solution = "Wrong Expression"; } var testExpressionTrue = new LispExpression(); testExpressionTrue.Body = "((1+3))(())(4+(3-5))"; var testExpressionWrong = new LispExpression(); testExpressionWrong.Body = "((1+3))))(4+(3-5)))"; if (correctness.AssertResults(correctness.CheckExpression(testExpressionTrue), correctness.CheckExpressionTest(testExpressionTrue))) { Console.WriteLine("Unit Test with ((1+3))(())(4+(3-5)) is successfull"); } if (correctness.AssertResults(correctness.CheckExpression(testExpressionWrong), correctness.CheckExpressionTest(testExpressionWrong))) { Console.WriteLine("Unit Test with ((1+3))))(4+(3-5))) is successfull"); } Console.Write("LispExpression: "); Console.Write(expression.Body); Console.Write(" is "); Console.Write(solution); }
public LispVariableDefinition1(LispVariable var, LispExpression expr) { this.variable = var; this.expression = expr; }
public LispApplication(LispExpression applier, IEnumerable <LispExpression> applicants) { this.applier = applier; this.applicants = applicants; }
public LispSet(LispVariable var, LispExpression expr) { this.variable = var; this.expression = expr; }
public LispIf3(LispExpression expr1, LispExpression expr2, LispExpression expr3) { this.expression1 = expr1; this.expression2 = expr2; this.expression3 = expr3; }
public LispIf2(LispExpression expr1, LispExpression expr2) { this.expression1 = expr1; this.expression2 = expr2; }