factor => num factor => 2 term => factor term => 2 exp => term exp => 2 factor => num factor => 6 term => factor term => 6 factor => num factor => 6 term => factor term => 6 exp => term exp => 6 factor => num factor => 4 term => factor term => 4 factor => num factor => 7 term => term multiple factor term => 4 * 7 exp => exp plus term exp => 6 + 4*7 factor => num factor => 2 term => factor term => 2 exp => exp minus term exp => 6+4*7 - 2 factor => op_open exp op_close factor => ( 6+4*7-2 ) term => term multiple factor term => 6 * (6+4*7-2) exp => exp plus term exp => 2 + 6*(6+4*7-2) args => id args => a args => args split id args => a , b args => args split id args => a,b , c args => args split id args => a,b,c , d func => id op_open args op_close func => sin ( a,b,c,d ) factor => func factor => sin(a,b,c,d) term => factor term => sin(a,b,c,d) exp => exp plus term exp => 2+6*(6+4*7-2) + sin(a,b,c,d) func => id op_open op_close func => cos ( ) factor => func factor => cos() term => factor term => cos() factor => id factor => pi term => term multiple factor term => cos() * pi exp => exp plus term exp => 2+6*(6+4*7-2)+sin(a,b,c,d) + cos()*pi