Add and and or to the interpreter. These are new precedence levels -- or binds loosest, and binds tighter, both looser than comparisons. Rename expression() to comparison(). Write and_expr() and or_expr(). The new expression() calls or_expr():
expression -> or_expr -> and_expr -> comparison -> add_sub -> term -> factor
and: both sides nonzero -> 1, else 0. or: either side nonzero -> 1, else 0. Not short-circuiting -- both sides always evaluate.