2016-12-06 1 views
0

Github 외에 ANTLRv4에 대한 작동 C 문법이 있는지 궁금합니다.ANTLR v4에 대한 C 문법

기존 파일을 전혀 사용할 수 없으므로 샘플 파일을 구문 분석하지 않습니다. 내가 뭔가를 놓친 것일 수도 있지만 다른 문법에 문제가 없었습니다.

기존의 글을 쓰거나 내 글을 쓰려고 생각했지만 시간이별로 없었습니다.이 프로젝트를 진행할 시간은 제한되어 있습니다.

도움을 주시면 감사하겠습니다.

덕분에,

케이티

+2

샘플 파일의 문제점을 설명해야합니다. 어쩌면 문제는 문법이 아니라 샘플 파일이나 파서를 생성하는 방식에 있을까요? – Quepas

+0

자신의 코드를 작성하거나 다른 사람의 C 파서를 디버그하고 싶지는 않습니다. C는 실제로 구문 분석하기 어려운 언어입니다. http://stackoverflow.com/a/24777596/120163 –

답변

1

그래서 당신은 몇 개월 이내에 작업 C 문법을 생성 할 수 있으며, 것 같다보다 더 복잡하다. 제 의견으로는 모든 C를 (전처리 기없이) 파싱하면 6 개월이 걸립니다.

예를 들어, 첫 번째 인상은 C 문법이 문맥 자유이지만 실제는 문맥 인식입니다.

ISO 표준 부록 A의 공식 문법을 사용하여 비 터미널을 하나씩 삽입하여 하위 언어를 구현하기 시작하십시오.

+0

을 참조하십시오. C에 대해 컨텍스트 프리 파서를 정의한 다음 구문 분석 할 수 있습니다. ANTLR이나 다른 오래된 구문 분석 기술로는 그렇게 할 수 없습니다. 파서를 해킹하여 핵심 상황에 민감하게 반응 할 수는 있지만 해킹입니다. http://stackoverflow.com/questions/243383/why-cant-c-be-parsed-with-a-lr1-parser/1004737#1004737을 참조하십시오. 그리고 네, 그러면 C 소스 코드를 파싱하는 나머지 모든 복잡한 작업을 처리해야합니다. –

+0

이 맞습니다. 문맥에 민감한 부분은 C literature'The lexer hack '에 이름이 있습니다. https://en.wikipedia.org/wiki/The_lexer_hack 그리고 실제로 표준의 문법은 약간의 역 추적을 필요로하지만 너무 보편적이지는 않습니다. 또는 파스 트리를 생성하고 끝에 모호함을 제거 할 수 있습니다. 아이디어는 C 문법이 복잡하기 때문에 @OP에 대한 해결책이 아닙니다. "나는 시간이 없습니다." – alinsoar