In this dissertation, a syntactic error repair model is proposed, which is defined as a partial function from strings to sentences. In general, error repair is achieved by transforming a string which is not a sentence into a sentence. To do so, a substring of the string is replaced with a substring of some sentence. In the proposed scheme, such replacement is described by a repair pattern. which is roughly a pair of strings of grammar symbols underlying grammar. The first component of the pair, called the pattern part, derives strings to be replaced, and the second component, called the replacement part, derives strings to replace. For repairing errors, the replacement process is repeated until the replaced string becomes a sentence or such pairs of strings cannot be found. In the latter case, the partial function is undefined, that is, the repair model fails to repair the string. The repair model can be efficient when each replacement part of repair patterns is a substring of a sentential form and the repair patterns do not cause additional parsing conflicts. Furthermore, the repair model is considered to be flexible in the sense that it can control the trade-off between quality and overhead of error repair via repair patterns. Since the repair model, however, is not complete, it should be incorporated with another scheme which has the property of completeness. Thus a repair pattern is useful in situations where other models have poor repair or where the correct treatment of some rather common "error pattern" is guaranteed. The model can be implemented in a parser generator, which has two kinds of input: a grammar and a set of repair patterns. In this dissertation, LR-based implementation issues are discussed. Also further research directions are addressed.
컴파일시에 발생하는 오류의 유형을 오류 보정에 이용하면, 좋은 오류보정 효과를 기대할 수 있다. 이를 위해 본 논문에서는 구문 오류의 보정 모델을 스트링에서 문장으로 보내는 부분 함수로 정의하였다. 일반적으로, 오류 보정은 문장이 아닌 스트링을 문장으로 변환함으로써 얻어진다. 이 변환을 위해 오류 스트링의 부분 스트링은 문장의 부분 스트링으로 대치된다. 제안한 모델에서는 이러한 대치를 보정 유형으로 표현한다. 보정 유형은 파싱하고자 하는 문법의 심벌의 스트링의 순서쌍이며, 첫번째 성분은 유형부로 부르고 대치될 스트링을 유도하며, 두번째 성분은 대치부로 부르고 대치할 스트링을 유도한다. 오류를 보정하기 위해, 대치된 스트링이 문장이 되거나 적절한 스트링의 순서쌍을 찾을 수 없을 때 까지 대치하는 과정을 반복한다. 순서쌍을 찾을 수 없을 때 제안한 부분 함수는 정의되지 않는다. 즉, 제안한 모델이 특정 스트링에 대해서 오류 보정에 실패하는 경우다. 각 보정 유형의 대치부가 문장형의 부분 스트링이고 보정 유형이 새로운 파싱 충돌을 유발하지 않을 경우에는 제안한 오류 보정 모델이 효률적이다. 또한, 이 모델은 보정 유형을 통해 ?윷 }수정의 품질과 오버헤드를 조정할 수 있다는 의미에서 융통성이 있다. 제안한 모델은 완결성이 없기 때문에, 완결성을 갖는 다른 오류 보정 모델과 함께 사용해야한다. 따라서 보정 유형은 함께 사용하는 모델이 서투른 보정을 하거나 자주 발생하는 오류의 유형에 대해 좋은 보정을 원할 때 사용한다. 제안한 모델은 문법과 한정된 보정 유형의 집합을 입력으로 하는 파서 생성기에 구현이 가능하다. 본 논문에서는 LR에 기반을 둔 파서에서의 구현에 대해 검토했다.