use yacc for parsing