Files
gf-rgl/src/korean/ParamKor.gf
2020-04-14 20:58:17 +02:00

149 lines
3.7 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,NStar> => "," ;
<Comma,VStar> => "고," ;
-- 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 Polarity -- for adding conjunctions
| VAttr Polarity -- for subordinate clauses
| VF Style Polarity ;
oper
linVF = VF Polite Pos ;
-- Used in an application grammar.
-- Putting this oper here because RG internals may change.
vf2str : VForm -> Str = \vf -> case vf of {
VStem Pos => "s (VStem Pos)" ;
VStem Neg => "s (VStem Neg)" ;
VAttr Pos => "s (VAttr Pos)" ;
VAttr Neg => "s (VAttr Neg)" ;
VF Formal Pos => "s (VF Formal Pos)" ;
VF Formal Neg => "s (VF Formal Neg)" ;
VF Polite Pos => "s (VF Polite Pos)" ;
VF Polite Neg => "s (VF Polite Neg)" ;
VF Plain Pos => "s (VF Plain Pos)" ;
VF Plain Neg => "s (VF Plain Neg)" } ;
--------------------------------------------------------------------------------
-- Clauses
param
ClType =
Statement
-- | PolarQuestion
-- | WhQuestion
| WithConj
| Subord ;
}