forked from GitHub/gf-rgl
134 lines
3.1 KiB
Plaintext
134 lines
3.1 KiB
Plaintext
resource ParamKor = ParamX, Hangul ** open Prelude in {
|
||
|
||
--------------------------------------------------------------------------------
|
||
-- Phonology
|
||
|
||
-- Patterns and replacements defined in Hangul.gf
|
||
oper
|
||
|
||
vowFinal : Str -> Bool = \str ->
|
||
case str of {_ + #v => True ; _ => False} ;
|
||
|
||
--------------------------------------------------------------------------------
|
||
-- Morphophonology
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------
|
||
-- Nouns
|
||
|
||
param
|
||
NForm =
|
||
Bare -- no case particle
|
||
| Topic -- 은 or 는
|
||
| Subject -- 이 or 가
|
||
| Object -- 을 or 를
|
||
;
|
||
|
||
Phono = Vowel | Consonant ; -- Whether the word ends in vowel or consonant.
|
||
|
||
oper
|
||
|
||
allomorph : NForm -> Str -> Str = \nf,s ->
|
||
let finalV : Bool = vowFinal s ;
|
||
in case nf of {
|
||
Topic => if_then_Str finalV "는" "은" ;
|
||
Subject => if_then_Str finalV "가" "이" ;
|
||
Object => if_then_Str finalV "를" "을" ;
|
||
Bare => []
|
||
} ;
|
||
--------------------------------------------------------------------------------
|
||
-- Numerals
|
||
|
||
param
|
||
DForm = Indep | Attrib ;
|
||
|
||
CardOrd = NOrd | NCard ;
|
||
|
||
NumType = NoNum | IsDig | IsNum ;
|
||
|
||
NumOrigin = SK | NK ;
|
||
|
||
oper
|
||
isNum : {numtype : NumType} -> Bool = \nt -> case nt.numtype of {
|
||
NoNum => False ;
|
||
_ => True
|
||
} ;
|
||
--------------------------------------------------------------------------------
|
||
-- Adjectives
|
||
|
||
|
||
--------------------------------------------------------------------------------
|
||
-- Conjunctions
|
||
|
||
param
|
||
|
||
ConjType = And | Or | Comma ;
|
||
|
||
POS =
|
||
VStar -- Verbs and adjectives
|
||
| NStar ; -- Nouns and adverbs
|
||
|
||
oper
|
||
conjTable : POS => ConjType => Str = \\p,c => case <c,p> of {
|
||
-- Special "conjunction": just put comma everywhere, no conjunction.
|
||
-- Used in a specific (proprietary) application grammar, don't remove this.
|
||
<Comma,_> => "," ;
|
||
|
||
-- In the normal case, conjunctions are repeated after each element in ListX
|
||
-- Conjunction is not an argument to BaseX and ConsX, it is added in ConjX.
|
||
-- That's why we need a ConjType parameter to ListX categories.
|
||
<And,VStar> => "고" ;
|
||
<And,NStar> => "하고" ;
|
||
<Or,_> => "또는" -- TODO what is or for V/AP/S?
|
||
} ;
|
||
|
||
--------------------------------------------------------------------------------
|
||
-- Verbs
|
||
param
|
||
|
||
Aspect =
|
||
Generic -- zero morpheme
|
||
| Habitual -- 는
|
||
| Prospective -- 겠
|
||
| Perfect -- 었/았
|
||
;
|
||
|
||
Style =
|
||
Formal -- 하십시오체
|
||
| Polite -- 해요체
|
||
| Plain -- |