본 오토마타는 상태머신임. state machine
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%95%9C_%EC%83%81%ED%83%9C_%EA%B8%B0%EA%B3%84
따로 그림은 안 그림.
총 11개 상태가 있음.
none 은 아무 것도 입력되지 않은 상태임. 초기값임.
c 는 자음 입력했을 때 상태, 우리가 처음 자음을 입력하면 이 자음이 초성에 쓰이는 자음인지 종성에 쓰이는 자음인지 모름. 이 때 화면에 보여주는 자음은 유니코드에 정의된 호환성 자모를 보여주는 거임. 자판으로 키 하나 또는 쉬트프 + 키 하나로 칠 수 있는 자음을 여기서는 c 라고 함. 각각의 ㅂ,ㅃ,ㄷ,ㄸ,ㄱ,ㄲ ... 들이 c 상태임.
v 는 모음 입력했을 때 상태, ㅐㅖㅔㅠㅜㅡ... 들이 v 상태임. 자판으로 키 하나 또는 쉬트프 + 키 하나로 칠 수 있는 모음을 여기서는 v 라고 함
lv 는 가
cc 는 ㄳ, ㅀ ... cc_rules 참고
vv 는 ㅘ ㅙ.. . vv_rules 참고
lvv 는 과 놔...
lvt 는 공...
lvvt 는 괄, 괌,괠...
lvtt 는 곪, 듦...
lvvtt 는 괆, 됢...
위에 c 는 consonant 을 의미함. 여기서는 ㄲ(R) ㄸ(E) ㅆ(T) 이런것도 c 라고 간주했음. 알파벳 1개로 만드는 단자음/쌍자음.
cc 는 ㄳ(rt) 이런 것들을 의미함. 알파벳 2개로 만드는 쌍자음
v 는 vowel 모음. 알파벳 1개로 만드는 단모음/쌍모음
vv 는 알파벳 2개로 만드는 쌍모음
t 는 초성(받침)
tt 는 초성(쌍자음 받침)
c 로 표현하면 아래처럼 됨
typedef enum { STATE_NONE, STATE_C, STATE_V, STATE_LV, STATE_CC, STATE_VV, STATE_LVV, STATE_LVT, STATE_LVVT, STATE_LVTT, STATE_LVVTT } TianKoreanComposeState; switch (korean->state) { case STATE_NONE: break; case STATE_C: break; case STATE_V: break; case STATE_LV: break; case STATE_CC: break; case STATE_VV: break; case STATE_LVV: break; case STATE_LVT: break; case STATE_LVVT: break; case STATE_LVTT: break; case STATE_LVVTT: break; }
댓글 0