http://isilab.kaist.ac.kr/files/File/public_html/guide/lexyacc/lecture_lexyacc3.htm