2010-02-16 7 views
2

파서 생성기는 다음과 같은 파서를 생성 할 수있는 파서 생성기입니다. 파일을 구문 분석하고 n 라인을 변경하면이 때문에 변경된 라인 또는 라인 만 다시 구문 분석합니다. 따라서 파서는 전체 파일을 다시 구문 분석 할 필요가 없습니다.파일을 변경하는 파서 생성기

접견,

마티아스

+0

어떤 다른 라인에 영향을 n' 라인'에 변경하는 경우 :

당신은 자료가 많 여기에 텍스트 편집기와 통합 방법을 살펴 수 있습니까? 당신이 해결하려고하는 문제를 물어봐도 될까요? 어떤 "언어"를 구문 분석하려고합니까? –

+0

어떤 프로그래밍 언어, 내 추측은 내가 n을 변경하면 자바 또는 C#과 같은 언어로 n 다음에 모든 행을 재분석해야한다는 것입니다. – mgiza

+2

당신이 찾고있는 단어는 증분 컴파일 에서처럼 "증분"입니다. 그래도 그것을 지원하는 구문 분석기에 대한 단서가 없습니다. 나는 AST 파일에 라인 정보를 유지함으로써 패치 할 것이다. – dmckee

답변

1

Tim Wagner는이 작업을 꽤 오래했습니다. 그의 GLR parsing engine paper. 참조 기본적으로 구문 분석 트리를 유지하고 "전체 스트림"을 구문 분석 트리 및 변경된 토큰의 시퀀스로 재분석하여 작동합니다. 매우 영리합니다.

Scott McPeak은 Elsa이 증분 GLR 파서를 구현한다고 주장합니다. AFAIK, Elsa는 배치 구문 분석에 주로 사용됩니다.

1

나는 명확한 예 또는 아니오를 제공 할 수 없습니다하지만 난 그것을 의심. 파서 생성기는 임의의 문법에 대한 파서를 작성하도록 설계되었습니다. 단일 행을 다시 검사하여 구문 분석 트리를 업데이트하면 구문 분석 트리의 매우 지역화 된 부분에만 영향을 주므로 문법이나 허용 된 변경에 강력한 제약 조건이 적용됩니다. 그래서 나는 누군가가 범용 파서 생성기에서 그러한 기능을 통합했는지를 강력하게 의심합니다.

+0

헤더 파일에서 어떤 클래스 나 구조체의 저장 공간 크기를 변경하고 (완전히 다른 레벨에서), 모든 파일을 다시 컴파일하지 않으려 고한다. 그것에 의존하는 객체 파일 ... 물론 발에서 자신을 쏠 수있는 방법. –

0

Packeting 위에 일반 구문 분석 엔진을 구현하는 데 성공했습니다. 이것은 memoisation 때문에이 목적에 잘 맞습니다. 편집자는 수정 된 행과 겹치는 메모 크 덩어리 만 무효화 한 다음 전체 파일을 다시 파싱하지만 수정 된 행만 실제로 파싱됩니다. 나머지는 이전 실행에서 메모 한 상태로 유지됩니다.

사용할 준비가 된 솔루션은 없지만 Packat 구현을 선택하여 자신의 취향에 맞게 만들 수 있습니다.

http://www.meta-alternative.net/mbase.html