렉서까지는 생각보다 너무 간단한거야 근데 파서 들어가고 나니까 레이어를 3단 이상으로 씌워놔서 도대체 내부적으로 무슨 짓을 하고있는지 너무 답답함
이럴 땐 추상화가 너무너무 싫어짐 C 코드는 이런 게 없는데
분석 좀 더 쉽게하는 방법 없나 코드가 너무 어려우면 gdb 로 원하는 함수 브레이크 포인트 걸고 백트레이스 하는 방법 뿐인가
캐싱 기능 하나만 해도 일반 캐싱하고 헤더 인클루드 스택하고 짬뽕돼있고 이래가지고 머가리 터지겠다 난 너무 애기였구나
이럴 땐 추상화가 너무너무 싫어짐 C 코드는 이런 게 없는데
분석 좀 더 쉽게하는 방법 없나 코드가 너무 어려우면 gdb 로 원하는 함수 브레이크 포인트 걸고 백트레이스 하는 방법 뿐인가
캐싱 기능 하나만 해도 일반 캐싱하고 헤더 인클루드 스택하고 짬뽕돼있고 이래가지고 머가리 터지겠다 난 너무 애기였구나
컴파일할때 -pg 옵션 주고 uftrace 로 실행하면 콜트리 쫙 뽑아줌.
strace 말고 실제 내부 함수 호출도 보여주는게 역시 있었구나 진짜 고맙다
검색해봤는데 이거 한국인이 만든거네 와 국뽕 오지게 맞았다
어우.. 난 못할듯
진짜 오랜만에 와 이건 좀 막막한데 라는 감정을 느꼈음 추상화가 너무 잘 돼있으면 쓰는 사람은 편한데 내부 시스템 보면 진짜 숨 막힘
당연히 프로덕션 스펙 툴체인이면 온갖 테크닉들 발라놔서 분석하기 어렵겠지
테크닉보다도 막 clang 구조 자체가 전처리기가 렉서 핵심역할도 맡고 이 전처리기를 감싸는 전처리기 렉서에다가 매크로 전용 토큰 렉서가 있고 이러니까 가지 따라가는게 끝도 없음 ㅋㅋㅋㅋㅋ AST 생성은 도대체 어디서 일어나는지를 모르겠더라
그게 그말임 뭐 레퍼런스 코드처럼 사람들 보기좋게 짜는게 목적이 아니니까 2배로 보기 좆같아져도 컴파일 20% 빨라지면 그냥 넣는거지
그러니까 니가 뭐 파서 기술같은걸 배우고 싶은거면 번지수가 잘못된거고 그런 테크닉들 보고 싶은거면 괜찮을듯
rustc 는 clang 에 비하면 진짜 훨 보기 편하더라고
rustc는 문서화를 기가막히게 해놓긴 했는데 그래도 좀 좆같음
원래는 파서의 국룰? 패턴? 하여튼 표준시되는 구조를 파악하려고 본거였음 나중에 파서 만들 때 기준이 될라고 근데 clang 에 시간이 너무 낭비하고 있음 ㅜㅜ
무슨 simple parser 이렇게 검색하면 진짜 발로짠 코드가 많아가지고 모범이 되면서 간단한 파서는 아직 못 찾은 것 같음 AST, 토큰트리 같은 기본 형태는 갖춰야 되는데
그런거면 완전 잘못짚은거 같은데 그냥 어디 토이 랭귀지 컴파일러 보는게 더 빠를듯
고맙다 다른 컴파일러 좀 찾아봐야겠다
지급 물로켓 대회 준비한다고 나사 입사해서 로켓 설계도 볼려는중임
내 생각에도 글타 ㅋㅋㅋㅋ 길잡이 고맙다
처음 보는 코드에 캐싱 기능 같은 걸 왜 봄. 그런 거 제끼고 핵심 기능 위주로 봐라
심지어 parser 어떻게 돌아가는 지 궁금해서 보고 있는 거면 더더욱 캐싱 기능 같은 거 빼고 핵심만 봐라
핵심 따라가다가 핵심에 강하게 얽힌 부가요소도 보게 됐는데 이걸 이해하지 못하면 동작을 정확히 예측하기가 힘들어져서 어쩔 수 없이 보고 있었음 노선 너무 잘못 탔어 흑흑 내가 왜 clang 으로 파서 코드 분석할 생각 했지
그리고 파서하면 파서 제너레이터나 그런 거 쓰는 게 국룰이라면 국룰인데, clang은 내가 알기로 그냥 다 하드코딩인 걸로 암. 차라리 GitHub에서 만든 tree-sitter 같은 거 보셈
https://meetup.toast.com/posts/229
파서 잼난 글임.
분석해본적은 없고 코드 잠깐 구경해본적은 있는데 C가 아니고 C++로 짜여있어서 코드가 더 쉬운거 아니었나?? 인터프리터패턴으로 되어있었던거 같은데