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