YACC/LEX를 활용한 전자계산기 코딩
과제를 해결한 과정을 정리한 글로 부정확하거나 비효율적일 수 있습니다! YACC란? Yet Another Compiler Compiler 또 다른 컴파일러 컴파일러라는 뜻이다. 즉 컴파일러를 컴파일해주는 것이란 뜻인데 이게 무슨 말일까? 결론부터 말하자면 구문분석 후 구문에 따른 동작을 지시하기 위한 프로그램이다. 나는 중국식냉면을 먹었다. 라는 문장에서 주어 수식어 목적어 동사를 구별해서 아~ 에벱이 중국식냉면을 먹었구나 하고 이해시켜주기 위한 것이라고 할 수 있다. 그럼 계산기에서 구문분석이란 뭘까? 3+2*(1-4)라는 식을 생각해보자 컴퓨터에게 이 문자들은 그저 하나하나의 문자일뿐 수식의 의미를 가지지 않으며 무엇을 어떠한 순서로 계산해야 할지도 모른다. 다만 우리가 실제로 쓰는 프로그래밍언어에는 이 전자계산기와 같은 구문분석프로그램이 들어가 있어서 인식해줄 뿐이다. 그럼 그 구문분석이 어떻게 이뤄지는지 보도록 하는 것이 이번의 과제였다. ...