kimjson / CS322_proj3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

20140679 전산학부 김재성

테스트 환경 : macOS Sierra, Windows 10 64비트
개발 언어 : Python 3.5.2
PLY 버전 : 3.9
컴파일 방법 : 필요 없습니다(인터프리터 언어).

실행 방법(받침우선):
> python proj3.py
c를 입력하여 받침우선 대신 초성우선을 사용하실 수 있습니다. 또는 아무 문자나 입력하여 받침우선을 사용합니다.
> [아무 문자]
한글을 입력하세요(123/qwe/asd/zxc 나랏글자판). exit을 입력하여 종료합니다.
> [모아 쓰고 싶은 한글]
[모아써진 한글이 출력됩니다]
한글을 입력하세요(123/qwe/asd/zxc 나랏글자판). exit을 입력하여 종료합니다.
> exit
bye
[프로그램 종료됨]

실행화면 스크린샷을 사진 파일로 동일 디렉터리 내에 첨부합니다. 이 실행화면은 결과 뿐 아니라 과정도 표시합니다.
example_bat.png : 받침우선 실행 방법 및 결과
example_bat_backspace.png : 받침우선 실행 방법 및 결과(backspace 포함)
example_cho.png : 초성우선 실행 방법 및 결과
example_cho_backspace.png : 초성우선 실행 방법 및 결과(backspace 포함)


구현 정책(중요합니다)

0. 정규식으로부터 mdfa를 생성한 과정
본 프로젝트 2에서 본인이 작성한 코드를 수정하여(파싱 부분에 문제가 있어서 yacc 부분에 term, factor 등의 요소를 도입해서
연산자 우선순위를 명확히 했습니다) 정규식을 mdfa로 변환하였습니다. 그 후 코딩을 하면서 버그를 수정하기 위해
mdfa에 약간의 추가와 수정을 가했습니다.
reglex.py : 본 프로젝트 2 소스파일
34reg.txt : 정규식 텍스트 파일
output_34reg.txt : 정규식을 변환하여 나온 mdfa

1. 자판
pdf에 예시로 주어진 것과 같이 나랏글 자판을
1,2,3/q,w,e/a,s,d/z,x,c를 각각 ㄱ,ㄴ,ㅏㅓ/ㄹ,ㅁ,ㅗㅜ/ㅅ,ㅇ,ㅣ/획추가,ㅡ,쌍자음
으로 대응시켰습니다. 백스페이스에 해당하는 문자는 < 입니다. 영어자판입력 --> 한글출력 방식을 사용하였습니다.
2. 입력 방법
기본적으로 kt 나랏글 자판을 따르나 다른 점이 몇 가지 있습니다(중요).
 - 나랏글 자판에서 ㅜ+ㅏ 입력시 ㅝ로 출력되는 것을 지원하지 않습니다. ㅝ를 입력하기 위해서는 ㅜ+ㅏ+ㅏ를 입력해야 합니다.
 - 쌍자음 후 획추가를 지원하지 않습니다. 예시: ㅅ+쌍자음+획추가 --> ㅉ 은 안되고 ㅅ+획추가+쌍자음 --> ㅉ만 가능합니다.
 - 순환을 허용하지 않습니다. 예시: ㅅ+획추가3번 --> ㅅ을 지원하지 않습니다. 가능한 최대 획추가 횟수는
    ㄱ,ㅇ,ㅏ,ㅓ,ㅗ,ㅜ --> 1번
    ㄴ,ㅁ,ㅅ --> 2번
   입니다.
 - 쌍자음의 경우도 마찬가지로 순환이 허용되지 않습니다.
 - 초성우선에서 초성이 완전히 지워지고나서 종성이 있으면 초성으로 빠져나오는 것처럼, 받침우선에서는 중성을 완전히 지웠을 때 초성이 있고, 마지막에서 두번째 글자에 종성 자리가 빈다면, 초성이 그 종성 자리로 들어갑니다.
    예시 : 받침우선에서) '사랑<<'' 를 입력하면(입력, 읽기 편의상 휴대폰이 아니라 한글로 바로 입력했습니다) '살'이 출력됩니다. 초성우선의 경우는 pdf에 명시된 것과 같습니다.
3. 한글이 아닌 입력에 관하여
 - 초성만 있는 경우는 하나일 때만 허용합니다. ㄱㄱ처럼 초성이 연달아 두개 나오는 것은 허용하지 않습니다.
 - 중성만 있는 경우를 허용합니다. 이 역시 연속해서 두개가 나오는 것을 허용하지 않습니다. ㅜ + ㅏ + 획추가 등의 중간과정을 보여주기 위함입니다.
 - 초성이 없고 중성과 종성만 있는 경우는 허용하지 않습니다.

About


Languages

Language:Python 100.0%