문제
- Configuration file 내부에 있는 세미콜론(;)은
[지시자] [값] [;]
라는 형식을 지켜야 함
- 여기서
;
이 있어야 하는데 없는 경우와 ;
이 없어야 하는데 있는 경우 모두를 예외 처리해야 함
해결 과정
; 이 없어야 하는데 있는 경우 유효성 검사
std::string directive
라는 변수를 두어 파싱 과정에서 지시자가 나오면 해당 변수에 저장
- 그 다음 나오는 토큰들은
std::vector<std::string> args
에 저장
- 만약
;
이 등장하면 저장된 지시자가 있는지 확인
;
이 빈 문자열(“”)이면 유효하지 않다는 예외를 throw
- 빈 문자열이 아니면 해당 directive 와 args 를 매칭하여 개수 유효성 검사를 실행한 후에 저장
; 이 있어야 하는데 없는 경우 유효성 검사
ft_bool hasSemicolonPrev
이라는 변수를 두어 이전 토큰에 세미 콜론이 있었는지 여부를 저장
- 만약에
directive
, location
, }
가 등장했는데 이전 토큰이 세미콜론이 아니었다면 예외를 throw