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

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -