이미 스캐너를 만들었으니 이제 파서를 만들어야합니다. 차이점이 뭐야?파서와 스캐너의 차이점은 무엇입니까?
14
A
답변
17
스캐너는 단순히 입력 문자열 (파일)을 토큰 목록으로 변환합니다. 이 토큰은 식별자, 괄호, 연산자 등을 나타냅니다.
구문 분석기는이 토큰 목록을 토큰이 어떻게 서로 잘 어울리 며 (문장이라고도 함) 토큰이 서로 잘 어울리는 지 표현하기 위해이 토큰 목록을 트리 형식 개체로 변환합니다.
프로그래밍 언어 파서의 경우, 출력은 일반적으로 AST (Abstract Syntax Tree)라고합니다. AST의 각 노드는 언어의 다른 구성을 나타냅니다 (예 : IF 문은 2 또는 3 개의 하위 노드, CONDITION 노드, THEN 노드 및 잠재적으로 ELSE 노드가있는 노드입니다.
구문 분석기는 노드에 구조적 응집력 이상의 의미를 부여하지 않습니다. 다음으로 할 일은이 구조 (때로 문맥 분석이라고 함)에서 의미를 추출하는 것입니다.
2
(일반적으로) 구문 분석은 기호 (문자, 숫자, 왼쪽 괄호 등)를 문법의 문장으로 바꾸는 것에 관한 것입니다.
어휘 분석기 ("렉서")는 소스 코드 파일의 개별 기호를 토큰으로 구문 분석합니다. 거기에서, "파서"는 그 토큰 전체를 당신의 문법 문장으로 바꾼다.
다른 말로하면, 렉서는 심볼을 토큰으로 결합하고 파서는 토큰을 결합하여 문장을 형성합니다.
관련 문제
- 1. Dom 파서와 Xerces 파서의 차이점
- 2. 3Dlaser 스캐너의 점 구름을 메쉬로 처리
- 3. 건물 예측 파서와 파싱 테이블
- 4. 간단한 위키 파서와 링크 자동 감지
- 5. Lex/Flex를 사용하는 스캐너의 문자 위치
- 6. 자바에서 음수를 사용하는 스캐너의 이상한 동작
- 7. 파서와 컴파일러를 작성하는 데 가장 좋은 프로그래밍 언어는 무엇입니까?
- 8. XML에서 Xml 파서와 Xpath 사용의 차이점
- 9. BPEL 파서와 XML 생성기를 함께 사용 하시겠습니까?
- 10. Databinder.Eval과 Container.DataItem의 차이점은 무엇입니까?
- 11. static_cast와 Implicit_cast의 차이점은 무엇입니까?
- 12. NSNumber와 NSInteger의 차이점은 무엇입니까?
- 13. Phing과 PHPUnderControl의 차이점은 무엇입니까?
- 14. WPF와 WinForms의 차이점은 무엇입니까?
- 15. CreateWnd와 CreateWindowHandle의 차이점은 무엇입니까?
- 16. ImageMagick과 GraphicsMagick의 차이점은 무엇입니까?
- 17. Pingback과 Trackback의 차이점은 무엇입니까?
- 18. @property와 @synthesize의 차이점은 무엇입니까?
- 19. php.ini와 .htaccess의 차이점은 무엇입니까?
- 20. 메서드와 선택기의 차이점은 무엇입니까?
- 21. 탄소와 코코아의 차이점은 무엇입니까?
- 22. String.Intern과 String.IsInterned의 차이점은 무엇입니까?
- 23. Int32와 UInt32의 차이점은 무엇입니까?
- 24. Knockout.js와 Rx.js의 차이점은 무엇입니까?
- 25. Server.Transfer와 Response.Redirect의 차이점은 무엇입니까?
- 26. MSP430과 MSP430X의 차이점은 무엇입니까?
- 27. COM과 DCOM의 차이점은 무엇입니까?
- 28. DomainKeys와 DKIM의 차이점은 무엇입니까?
- 29. 추상화와 외관의 차이점은 무엇입니까?
- 30. 면도기와 ASPX의 차이점은 무엇입니까?
StackOverflow의 'Flex' 태그가 Adobe Flex Framework를 참조하기 때문에'Flex' 태그를 꺼내보다 일반적인'lexical-analyser' 태그로 바꿨습니다. –