1
0
forked from GitHub/gf-rgl
Files
gf-rgl/src/korean/ParamKor.gf

134 lines
3.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 --라체
;
SentenceType =
Declarative
| Interrogative
| Imperative
| Propositive ;
-- TODO: include Aspect and SentenceType.
-- These are all Generic and Declarative.
-- TODO: read about infinitive in (Martin 1992, p. 251)
VForm =
VStem -- for adding conjunctions
| VAttr Polarity -- for subordinate clauses
| VF Style Polarity ;
oper
linVF = VF Polite Pos ;
--------------------------------------------------------------------------------
-- Clauses
param
ClType =
Statement
-- | PolarQuestion
-- | WhQuestion
| WithConj
| Subord ;
}