Ajuda com Álgebra Booleana

Preciso de uma ajuda para fazer o seguinte:

Crie um método iterativo que recebe uma string contendo uma expressão booleana e o valor de suas entradas e retorna um booleano indicando se a expressão é verdadeira ou falsa. Cada string de entrada é composta por um número inteiro n indicando o número de entradas da expressão booleana corrente. Em seguida, a string contém n valores binários (um para cada entrada) e a expressão booleana. Na saída padrão, para cada linha de entrada, escreva uma linha de saída com SIM / NÃO indicando se a expressão corrente é verdadeira ou falsa.

Exemplos de Strings de entrada:

2 0 0 and(not(A) , not(B))
2 0 1 and(not(A) , not(B))
2 1 0 and(not(A) , not(B))
2 1 1 and(not(A) , not(B))
2 0 0 not(and(A , B))
2 0 1 not(and(A , B))
2 1 0 not(and(A , B))
2 1 1 not(and(A , B))
3 0 0 0 and(or(A , B) , not(and(B , C)))
3 0 0 1 and(or(A , B) , not(and(B , C)))
3 0 1 0 and(or(A , B) , not(and(B , C)))
3 0 1 1 and(or(A , B) , not(and(B , C)))
3 1 0 0 and(or(A , B) , not(and(B , C)))
3 1 0 1 and(or(A , B) , not(and(B , C)))
3 1 1 0 and(or(A , B) , not(and(B , C)))
3 1 1 1 and(or(A , B) , not(and(B , C)))

Creio que para resolver essas expressões and, or e not, o mais simples seja você estudar como implementar um Parser Descendente Recursivo.