많은 파일 형식을 처리해야합니다. 적어도 50, 어쩌면 100 이상.대형 프로젝트를위한 파싱 기술 선택
나는 Antlr과 함께 과거에 놀았습니다. 그러나, 나는 ANTLR은 몇 가지 이유로이 프로젝트에 적합한 것이 확실하지 않다 :
- 가 결합하기 어려운 재사용 문법 및/또는 문법의 조각
- ANTLR 코드 생성을 수행 - 만들기 기존 파서를 변경하려면 Antlr로 돌아가서 코드를 다시 생성하고 코드를 다시 코드베이스에 통합 한 다음 단위 테스트를 실행해야합니다.
- 트리 작성/처리는 내부에서 다른 언어를 처리해야합니다. Antlr - 향후 개발자에게 잠재적 인 문제점
기본적으로 Antlr을 좋아하지만 다소 단순한 언어/형식의 경우 100 개의 파서가 아닌 복잡한 언어에 대해 하나 또는 두 개의 파서를 만드는 것이 더 적합하다고 생각합니다.
Antlr 파서 생성기의 대안은 파서 결합 자입니다. 장점은 파서가 코드에 직접 통합되어 재사용, 테스트 및 추상화가 매우 쉽다는 것입니다. 또한 미래의 개발자는 새로운 도구를 사용하는 방법을 배울 필요가 없습니다. 파서 결합 자의 단점은 자바에서 이들을 사용하기위한 강력한 라이브러리를 모른다는 것입니다.
그래서 질문은 다음과 같습니다
- 인가 ANTLR 적합/같은 대규모 분석 프로젝트를위한 것?
- Java의 대규모 구문 분석을위한 다른 옵션은 무엇입니까?
참고 : 파일 형식의 일부는 CSV 또는 탭으로 구분이되어, 일부는 좀 더 복잡하고, 일부는 자바만큼 복잡하다. 의미론 적으로, (모두가 아닐지라도) 매우 복잡 할 수도 있습니다.
대답에 대한 중요한 정보가 누락되었습니다. 구문 및 의미와 관련하여 이러한 형식의 복잡성은 무엇입니까? 복잡성이 Java 언어 자체의 복잡성과 같으면 다른 것들이 필요합니다. 반면에 모든 형식이 CSV 수준에 있다면 훨씬 더 가벼운 방법을 사용할 수 있습니다. –
'# 1' : _ "문법 및/또는 문법을 결합하고 재사용하기가 어렵습니다."_ 나는 동의하지 않습니다. ANTLR에서 문법을 다른 문법으로 공유/가져올 수 있습니다. '# 2' : 맞습니다.'# 3' : 나는 그게 무슨 뜻인지 모르겠다. 또한 나는 A.H.에 중요한 정보가 아직 없다는 데 동의합니다. –
@ A.H. - 제안 해 주셔서 감사합니다. –