Proof that this language supports all Boolean expressions: 

 

bfactor=> bfactor

bfactor=> bfactor

           => TRUE

           => FALSE

 

 

bfactor r=>bfactor

bfactor=>bfactor

            => not bfactor

           => not bfactor

           => not TRUE

           => not FALSE

nor: 

 nand:

bfactor => not bfactor

bfactor => not bfactor

            => not ( bexpr )

            => not ( bexpr )

            => not ( bexpr or bterm )

            => not ( bterm )

            => not ( bterm or bterm )

            => not ( bterm and bfactor )

            => not ( bfactor or bterm )

            => not ( bfactor and bfactor )

            => not ( true or bterm )

            => not ( true and bfactor )

            => not ( true or bfactor )

            => not ( true and false )

            => not ( true or false )

 

 xor:

xnor: 

bexpr => bexpr or bterm

bexpr => bexpr or bterm

          => bterm or bterm

          => bterm or bterm

          => bfactor or bterm

          => bfactor or bterm

          => ( bexpr ) or bterm

          => ( bexpr ) or bterm

          => ( bterm ) or bterm

          => ( bterm and bfactor ) or bterm

          => ( bterm and bfactor ) or bterm

          => ( bfactor and bfactor ) or bterm

          => ( bfactor and bfactor ) or bterm

          => ( true and bfactor ) or bterm

          => ( true and bfactor ) or bterm

          => ( true and false ) or bterm

          => ( true and false ) or bterm

          => ( true and false ) or bfactor

          => ( true and false ) or bfactor

          => ( true and false ) or ( bexpr )

          => ( true and false ) or ( bexpr )

          => ( true and false ) or ( bexpr or bterm )

          => ( true and false ) or ( bexpr or bterm )

          => ( true and false ) or ( bterm or bterm )

          => ( true and false ) or ( bterm or bterm )

          => ( true and false ) or ( bfactor or bterm )

          => ( true and false ) or ( bfactor or bfactor )

          => ( true and false ) or ( false or bterm )

          => ( true and false ) or ( false and bfactor )

          => ( true and false ) or ( false or bfactor )

          => ( true and false ) or ( false and true )

          => ( true and false ) or ( false or true )

 

 

NOT is implemented by bfactor

OR is implemented by bterm

AND is implemented by bexpr