문제

한동안 내 뇌에 쥐고있었습니다.

컴파일러/Flex/Byson 및 물건에 대한 조사를 받았지만 "구문 분석 스택"또는 구현 방법에 대해 자세히 설명하는 좋은 참조를 찾지 못했습니다.

내가 따라 잡을 수있는 좋은 참조를 아는 사람이 있습니까?

편집하다: 나는 모든 컴파일러 참조에 감사하며, 책 중 일부를 나열 할 것입니다. 그러나 나의 주요 초점은 당신이 그 후에하는 일이 아니라 파싱 자체에 대한 것이 었습니다.

도움이 되었습니까?

해결책

이것은 당신이 정답으로 받아 들인 Dima의 답변에 대한 응답입니다. 구문 분석이 Automata 이론과 관련이 있다는 것은 나쁜 대답은 아니지만, 여기에는 약간의 오해가 있다고 생각합니다.

  • 먼저, 유한 주 자동 타마 일반 언어 만 인식 할 수 있습니다 (예 : 정규식). 상황이없는 언어를 인식하려면 필요합니다 푸시 다운 오토마타, 더 강력합니다. 보다 http://en.wikipedia.org/wiki/automata_theory#classes_of_automata 더 많은 오토마타와 다른 클래스의 언어와의 관계.

  • 둘째, 구문 분석 다릅니다 인식. 문자열을 인식하면 문자열이 문법에 의해 생성 된 언어인지 여부 만 알려줍니다. 파서의 목적은 더 어렵고 일반적으로 더 유용한 콘크리트 구문 트리를 생산하는 것입니다.

다양한 구문 분석 방법이 있으므로 알아야 할 사항을 알려주는 하나의 구체적인 참조를 제공하기가 어렵습니다. 하향식 구문 분석 그리고 상향식 구문 분석. 그러나 관심있는 경우 Parser Generator가 사용하는 몇 가지 일반적인 기술에 대한 개요가 있습니다.

편집하다:이 질문을 다시 한 번 부딪쳐서 죄송합니다. 방금 두 가지 훌륭한 게시물에서 발생했습니다. 일반 언어 및 유한 한 오토마타, 상황이없는 언어 및 푸시 다운 오토마타. 이 질문을 찾는 사람들에게는 흥미로울 수 있습니다.

다른 팁

그만큼 용 책! 최근에 RTF로 작성된 템플릿 파일의 처리 언어에 대한 컴파일러 (PHP!)를 작성하는 데 사용했습니다.

구문 분석기는 기본적으로 유한 상태 기계, 즉 유한 한 오토 마톤입니다. 유한 자동화에 대해 논의하는 계산 이론 및 일반 언어, 컨텍스트 자유 언어 등과 같은 것들에 관한 책을 찾아야합니다.

노력하다 아마존

컴파일러 구조 좋은 예일뿐입니다

"Pascal Compilers의 Brinch Hansen"을 확인하십시오. 1985 년에 작성되었지만 작년에 컴파일러에 대한 코스 (Brinch Hansen ofcourse)에 사용했으며 컴파일러 설계에 매우 간결하고 도움이된다는 것을 알게되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top