Create a Boolean parser (continued)
JavaScript (ES6) 116 bytes

edit thx @user81655 for 3 bytes saved and a bug found



s=&gt;[...s].map(x=&gt;x&lt;2?v=m[x]:x&lt;6?m=[,,m[1]+m[0],0+v,v+1,v+(1^v)][x]:x&gt;6?v=o.pop()[v]:m=o.push(m)&amp;&amp;a,o=[v=a=m='01'])|v


Probably not the best approach, but no eval and no boolean operators, just truth tables.

Character used:


! -> 2
&amp; -> 3
| -> 4
^ -> 5
( -> 6
) -> 7


Test



f=s=&gt;[...s].map(x=&gt;x&lt;2?v=m[x]:x&lt;6?m=[,,m[1]+m[0],0+v,v+1,v+(1^v)][x]:x&gt;6?v=o.pop()[v]:m=o.push(m)&amp;&amp;a,o=[v=a=m='01'])|v

console.log=(...x)=&gt;O.textContent+=x+'\n'

test=[ ["1^((1|0&amp;0)^!(1&amp;!0&amp;1))",1] 
// be more careful, step by step
,["0&amp;0",0],["0&amp;1",0],["1&amp;0",0],["1&amp;1",1]
,["0|0",0],["0|1",1],["1|0",1],["1|1",1]
,["0^0",0],["0^1",1],["1^0",1],["1^1",0]
,["0&amp;!0",0],["0&amp;!1",0],["1&amp;!0",1],["1&amp;!1",0]
,["0|!0",1],["0|!1",0],["1|!0",1],["1|!1",1]
,["0^!0",1],["0^!1",0],["1^!0",0],["1^!1",1]
,["!0&amp;0",0],["!0&amp;1",1],["!1&amp;0",0],["!1&amp;1",0]
,["!0|0",1],["!0|1",1],["!1|0",0],["!1|1",1]
,["!0^0",1],["!0^1",0],["!1^0",0],["!1^1",1]
// nand, nor
,["!(0&amp;0)",1],["!(0&amp;1)",1],["!(1&amp;0)",1],["!(1&amp;1)",0]
,["!(0|0)",1],["!(0|1)",0],["!(1|0)",0],["!(1|1)",0]
     ]

test.forEach(([x,check]) =&gt; {
  // remap operators (each one on its line, just to be clear)
  var t = x.replace(/!/g,"2")
  t = t.replace(/&amp;/g,"3")
  t = t.replace(/\|/g,"4")
  t = t.replace(/\^/g,"5")
  t = t.replace(/\(/g,"6")
  t = t.replace(/\)/g,"7")
  r = f(t)
  console.log((r==check?'OK':'KO')+' '+x +' '+r)
})
&lt;pre id=O&gt;&lt;/pre&gt;