Converting string expression to boolean logic - C# -
i want convert string expression real boolean expression.
the expression below input (string):
"(!a && b && c) || (a && !b && c) || (a && b && !c) || (a && b && c)" the variables a, b , c have boolean values (true or false).
how can transforming string expression, replace logic values , validate using c#?
if don't want use available libraries parse string need separate characters , implement logic based on comparison. example have "a || b", can loop though each character , decide appropriate operation based on char == '|'. more complex situation i'd use stack keep track of each results, 1 can handle && , || without parentheses:
public bool converttobool(string op, bool a, bool b) { var st = new stack<bool>(); var oparray = op.tochararray(); var orflag = false; var andflag = false; (var = 0; < oparray.length; i++) { bool top; switch (oparray[i]) { case '|': i++; orflag = true; break; case '&': i++; andflag = true; break; case 'a': if (orflag) { top = st.pop(); st.push(top || a); orflag = false; } else if (andflag) { top = st.pop(); st.push(top && a); andflag = false; continue; } st.push(a); break; case 'b': if (orflag) { top = st.pop(); st.push(top && b); orflag = false; } else if (andflag) { top = st.pop(); st.push(top && b); andflag = false; continue; } st.push(b); break; } } return st.pop(); }
Comments
Post a Comment