자작컴파일러 만들면서 공부중인데
예를 들어 ((와 ))로 감싸져야하는 문법이 있다 치자
설계는 렉서(토크나이징, 토큰 의미 추론) -> 파서(AST 생성)
각 단계는 이전의 출력을 입력으로 받음
만약 근데 입력으로 `((예아` 이걸 받으면 괄호가 안 닫혀서 완전한 문법이 아니잖음?
이때 렉서와 파서 중 이게 불완전한 문법이다, 따라서 플레인 텍스트로 처리한다라는걸 둘중 어디서 잡아야하는지 궁금함
이미 렉서단계에서 닫히는 괄호가 안나왔으니 렉서단에서 쭉 플레인으로 애초부터 처리해야할지
아님 렉서를 거치는거까지는 의미있는 토큰이라는 건 출력되지만 파서에서 이걸 받고 개소리라는 오류를 던지는건지
문자열 같은건 렉서 잘못같고 괄호라면 파서 잘못 같은데?
그건 파서의 책임임
렉서가 잘못하는 경우는 토큰을 제대로 못해낼때임 예시의 경우 (( 두개가 하나의 토큰인데 ( 이거랑 ( 이거 두개의 토큰으로 잘못분류한경우 렉서 잘못 , 짝을 맞춰서 닫아야하는데 안닫았는데도 통과시키면 파서 잘못 ㅋㅋ
파서
배가 고파서