Files
Hankan/data/grammar.json
MechaCat02 b80deb2f6f chore: scaffold, CI, and the export bundle verbatim
The export bundle is the input to this port, not a sketch: the curriculum,
the tutor prompt and the five logic modules are finished and tested. They
land here byte-identical and stay that way.

  diff -r export/data data && diff -r export/lib lib
  diff -r export/prompt prompt && diff export/validate.mjs validate.mjs

data/, lib/, prompt/ and validate.mjs sit at the repo root so validate.mjs
runs verbatim with no path edits. All four are excluded from lint and
formatting — they are not ours to restyle. Types for lib/ live alongside in
types/ rather than as sibling .d.ts files, so the verbatim check stays a
plain directory diff.

CI runs the curriculum gate first, before anything else can pass:

  node validate.mjs   PASS — 0 blocking, 0 advisory

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 19:11:40 +02:00

961 lines
28 KiB
JSON

{
"note": "Reference grammar points. read:1 marks reading-priority items.",
"points": [
{
"id": "g-eun",
"cat": "조사 Particles",
"form": "은 / 는",
"name": "topic marker",
"why": "Names what the sentence is about, and quietly sets it against something else. 은 after a consonant, 는 after a vowel. A Korean sentence can drop it once the topic is obvious.",
"ex": [
[
"저는 학생이에요.",
"jeoneun haksaeng-ieyo.",
"I'm a student."
],
[
"김치는 매워요.",
"gimchineun maewoyo.",
"Kimchi — that one's spicy."
]
]
},
{
"id": "g-iga",
"cat": "조사 Particles",
"form": "이 / 가",
"name": "subject marker",
"why": "Marks who or what performs the verb, and introduces information that is new. 이 after a consonant, 가 after a vowel. 저 + 가 becomes 제가.",
"ex": [
[
"친구가 왔어요.",
"chinguga wasseoyo.",
"A friend came."
],
[
"시간이 없어요.",
"sigani eopseoyo.",
"There's no time."
]
]
},
{
"id": "g-eul",
"cat": "조사 Particles",
"form": "을 / 를",
"name": "object marker",
"why": "Marks the thing the verb acts on. 을 after a consonant, 를 after a vowel. Dropped constantly in speech.",
"ex": [
[
"밥을 먹어요.",
"babeul meogeoyo.",
"I'm eating."
],
[
"커피를 마셔요.",
"keopireul masyeoyo.",
"I'm drinking coffee."
]
]
},
{
"id": "g-e",
"cat": "조사 Particles",
"form": "에",
"name": "at, to, in (destination & time)",
"why": "Points at a destination, a point in time, or a static location with 있다 / 없다. Never used for where an action takes place — that is 에서.",
"ex": [
[
"학교에 가요.",
"hakgyoe gayo.",
"I go to school."
],
[
"세 시에 만나요.",
"se sie mannayo.",
"Let's meet at three."
]
]
},
{
"id": "g-eseo",
"cat": "조사 Particles",
"form": "에서",
"name": "at, in (action), from",
"why": "Where something happens, or where it started. Pair it with 에 to feel the split: 집에 있어요 (I'm at home) vs 집에서 일해요 (I work at home).",
"ex": [
[
"카페에서 공부해요.",
"kapeeseo gongbuhaeyo.",
"I study at the cafe."
],
[
"독일에서 왔어요.",
"dogireseo wasseoyo.",
"I'm from Germany."
]
]
},
{
"id": "g-do",
"cat": "조사 Particles",
"form": "도",
"name": "also, too",
"why": "Replaces 은/는, 이/가 and 을/를 rather than stacking onto them. 저는도 is wrong; 저도 is right.",
"ex": [
[
"저도 가요.",
"jeodo gayo.",
"I'm going too."
],
[
"물도 주세요.",
"muldo juseyo.",
"Water as well, please."
]
]
},
{
"id": "g-man",
"cat": "조사 Particles",
"form": "만",
"name": "only, just",
"why": "Also replaces the subject and object markers. Attaches after time and counters happily.",
"ex": [
[
"물만 마셔요.",
"mulman masyeoyo.",
"I only drink water."
],
[
"십 분만 기다려 주세요.",
"sip bunman gidaryeo juseyo.",
"Please wait just ten minutes."
]
]
},
{
"id": "g-hago",
"cat": "조사 Particles",
"form": "하고 · 와/과 · (이)랑",
"name": "and, with",
"why": "Three ways to join two nouns. 와 after a vowel, 과 after a consonant — the written pair. 하고 is neutral, (이)랑 is casual speech.",
"ex": [
[
"빵하고 우유를 샀어요.",
"ppanghago uyureul sasseoyo.",
"I bought bread and milk."
],
[
"친구와 같이 갔어요.",
"chinguwa gachi gasseoyo.",
"I went together with a friend."
]
]
},
{
"id": "g-ui",
"cat": "조사 Particles",
"form": "의",
"name": "possessive 's",
"why": "Written 의 but pronounced [에] here. Often dropped entirely: 친구 가방 is perfectly natural. 저의 contracts to 제, 나의 to 내.",
"ex": [
[
"친구의 가방이에요.",
"chinguui gabang-ieyo.",
"It's my friend's bag."
],
[
"한국의 날씨는 어때요?",
"hangugui nalssineun eottaeyo?",
"How is the weather in Korea?"
]
]
},
{
"id": "g-buteo",
"cat": "조사 Particles",
"form": "부터 ~ 까지",
"name": "from ~ until",
"why": "부터 ~ 까지 spans time; 에서 ~ 까지 spans distance. Mixing them up is the classic beginner tell.",
"ex": [
[
"아홉 시부터 여섯 시까지 일해요.",
"ahop sibuteo yeoseot sikkaji ilhaeyo.",
"I work from nine until six."
],
[
"집에서 회사까지 삼십 분 걸려요.",
"jibeseo hoesakkaji samsip bun geollyeoyo.",
"It takes thirty minutes from home to the office."
]
]
},
{
"id": "g-boda",
"cat": "조사 Particles",
"form": "보다 (더)",
"name": "more than",
"why": "Attaches to the thing being beaten, not the winner: A는 B보다 — A beats B. 더 is optional but very common.",
"ex": [
[
"오늘이 어제보다 더워요.",
"oneuri eojeboda deowoyo.",
"Today is hotter than yesterday."
],
[
"저는 커피보다 차를 더 좋아해요.",
"jeoneun keopiboda chareul deo joahaeyo.",
"I like tea more than coffee."
]
]
},
{
"id": "g-cheoreom",
"cat": "조사 Particles",
"form": "처럼 · 같이",
"name": "like, as",
"why": "Both attach directly to a noun. 같이 here is the adverb 'like', the same word as 'together' — context separates them.",
"ex": [
[
"한국 사람처럼 말해요.",
"hanguk saramcheoreom malhaeyo.",
"You speak like a Korean."
],
[
"얼음같이 차가워요.",
"eoreumgachi chagawoyo.",
"It's cold as ice."
]
]
},
{
"id": "g-ieyo",
"cat": "서술 Predicates",
"form": "N + 이에요 / 예요",
"name": "to be",
"why": "The copula. 이에요 after a consonant, 예요 after a vowel. Formal register: 입니다. Negative: N이/가 아니에요.",
"ex": [
[
"저는 파비안이에요.",
"jeoneun pabian-ieyo.",
"I'm Fabian."
],
[
"여기가 우리 집이에요.",
"yeogiga uri jibieyo.",
"This is our house."
]
]
},
{
"id": "g-ayo",
"cat": "서술 Predicates",
"form": "V/A + 아요 / 어요",
"name": "polite present (해요체)",
"why": "The everyday polite ending, and the one to master first. Stem vowel ㅏ or ㅗ takes 아요; everything else takes 어요; 하다 becomes 해요. Same form covers present tense, near future and a gentle suggestion.",
"ex": [
[
"지금 밥을 먹어요.",
"jigeum babeul meogeoyo.",
"I'm eating now."
],
[
"매일 운동해요.",
"maeil undonghaeyo.",
"I exercise every day."
]
]
},
{
"id": "g-past",
"cat": "서술 Predicates",
"form": "V/A + 았 / 었어요",
"name": "past tense",
"why": "Take the 아/어 form, insert ㅆ, add 어요. 먹어요 → 먹었어요, 가요 → 갔어요, 해요 → 했어요.",
"ex": [
[
"어제 영화를 봤어요.",
"eoje yeonghwareul bwasseoyo.",
"I watched a film yesterday."
],
[
"밥을 안 먹었어요.",
"babeul an meogeosseoyo.",
"I didn't eat."
]
]
},
{
"id": "g-future",
"cat": "서술 Predicates",
"form": "V + (으)ㄹ 거예요",
"name": "future, intention",
"why": "Plans and predictions. Add ㄹ 거예요 to a vowel-final stem, 을 거예요 after a consonant. Softer and more common than the bookish -겠-.",
"ex": [
[
"내일 한국에 갈 거예요.",
"naeil hanguge gal geoyeyo.",
"I'll go to Korea tomorrow."
],
[
"주말에 쉴 거예요.",
"jumare swil geoyeyo.",
"I'm going to rest at the weekend."
]
]
},
{
"id": "g-nida",
"cat": "서술 Predicates",
"form": "V/A + ㅂ니다 / 습니다",
"name": "formal polite (합쇼체)",
"why": "The register of announcements, presentations, the news and the army. Vowel stem takes ㅂ니다, consonant stem 습니다. Questions end -ㅂ니까?",
"ex": [
[
"감사합니다.",
"gamsahamnida.",
"Thank you."
],
[
"저는 독일에서 왔습니다.",
"jeoneun dogireseo watseumnida.",
"I came from Germany."
]
]
},
{
"id": "g-an",
"cat": "부정 Negation",
"form": "안 + V/A · V/A + 지 않다",
"name": "simple negation",
"why": "안 goes in front and is the spoken default; -지 않다 goes behind and reads a touch more formal. For 하다 verbs, 안 slips inside: 공부 안 해요, not 안 공부해요.",
"ex": [
[
"오늘은 안 바빠요.",
"oneureun an bappayo.",
"I'm not busy today."
],
[
"그 영화는 재미있지 않았어요.",
"geu yeonghwaneun jaemiitji anasseoyo.",
"That film wasn't interesting."
]
]
},
{
"id": "g-mot",
"cat": "부정 Negation",
"form": "못 + V · V + 지 못하다",
"name": "cannot (ability, circumstance)",
"why": "안 is 'I don't'; 못 is 'I can't, even though I might want to'. Pronounced [몯] before a consonant, [모ㅅ] links forward before a vowel.",
"ex": [
[
"매운 음식을 못 먹어요.",
"maeun eumsigeul mot meogeoyo.",
"I can't eat spicy food."
],
[
"어제 못 갔어요.",
"eoje mot gasseoyo.",
"I couldn't go yesterday."
]
]
},
{
"id": "g-jima",
"cat": "부정 Negation",
"form": "V + 지 마세요",
"name": "please don't",
"why": "The negative command. Attaches to the plain verb stem. Blunter: -지 마.",
"ex": [
[
"여기에서 사진을 찍지 마세요.",
"yeogieseo sajineul jjikji maseyo.",
"Please don't take photos here."
],
[
"걱정하지 마세요.",
"geokjeonghaji maseyo.",
"Don't worry."
]
]
},
{
"id": "g-gosipda",
"cat": "표현 Expressions",
"form": "V + 고 싶다",
"name": "want to",
"why": "Only for I and you. Talking about a third person's wants needs -고 싶어하다, because Korean does not claim to know another person's inner state.",
"ex": [
[
"한국에 가고 싶어요.",
"hanguge gago sipeoyo.",
"I want to go to Korea."
],
[
"뭐 먹고 싶어요?",
"mwo meokgo sipeoyo?",
"What do you want to eat?"
]
]
},
{
"id": "g-lsu",
"cat": "표현 Expressions",
"form": "V + (으)ㄹ 수 있다 / 없다",
"name": "can / cannot",
"why": "Literally 'there is a way to'. Vowel stem takes ㄹ 수, consonant stem 을 수.",
"ex": [
[
"한국어를 조금 할 수 있어요.",
"hangugeoreul jogeum hal su isseoyo.",
"I can speak a little Korean."
],
[
"오늘은 갈 수 없어요.",
"oneureun gal su eopseoyo.",
"I can't go today."
]
]
},
{
"id": "g-ayadoeda",
"cat": "표현 Expressions",
"form": "V/A + 아 / 어야 되다",
"name": "must, have to",
"why": "Built on the 아/어 form. 되다 and 하다 are interchangeable here; 되다 is more spoken.",
"ex": [
[
"지금 가야 돼요.",
"jigeum gaya dwaeyo.",
"I have to go now."
],
[
"약을 먹어야 해요.",
"yageul meogeoya haeyo.",
"You need to take the medicine."
]
]
},
{
"id": "g-euseyo",
"cat": "표현 Expressions",
"form": "V + (으)세요",
"name": "polite request & honorific",
"why": "Two jobs at once: a soft command to the listener, and the honorific present when the subject deserves respect. A few verbs go irregular — 먹다 → 드세요, 자다 → 주무세요, 있다 → 계세요.",
"ex": [
[
"여기 앉으세요.",
"yeogi anjeuseyo.",
"Please sit here."
],
[
"할머니는 지금 주무세요.",
"halmeonineun jigeum jumuseyo.",
"Grandmother is sleeping."
]
]
},
{
"id": "g-juseyo",
"cat": "표현 Expressions",
"form": "V + 아 / 어 주세요",
"name": "please do it for me",
"why": "The single most useful thing to say in a shop, a taxi or a classroom. Adds a sense of favour that plain -(으)세요 lacks.",
"ex": [
[
"천천히 말해 주세요.",
"cheoncheonhi malhae juseyo.",
"Please speak slowly."
],
[
"이것 좀 보여 주세요.",
"igeot jom boyeo juseyo.",
"Could you show me this one."
]
]
},
{
"id": "g-ryeogo",
"cat": "표현 Expressions",
"form": "V + (으)려고 하다",
"name": "intend to, be about to",
"why": "A plan already formed, not a fresh decision. Both clauses must share a subject.",
"ex": [
[
"한국어를 배우려고 해요.",
"hangugeoreul baeuryeogo haeyo.",
"I intend to learn Korean."
],
[
"나가려고 했어요.",
"nagaryeogo haesseoyo.",
"I was about to go out."
]
]
},
{
"id": "g-reo",
"cat": "표현 Expressions",
"form": "V + (으)러 가다 / 오다",
"name": "go in order to",
"why": "Only pairs with verbs of movement — 가다, 오다, 다니다. The purpose comes first, the movement second.",
"ex": [
[
"밥 먹으러 가요.",
"bap meogeureo gayo.",
"Let's go eat."
],
[
"친구를 만나러 왔어요.",
"chingureul mannareo wasseoyo.",
"I came to meet a friend."
]
]
},
{
"id": "g-geotgatda",
"cat": "표현 Expressions",
"form": "A/V + 것 같다",
"name": "it seems, I think",
"why": "Korean prefers a hedge to a flat assertion, so this shows up far more than 'I think' does in English. 올 것 같다 for a guess ahead, 온 것 같다 for a guess about what already happened.",
"ex": [
[
"비가 올 것 같아요.",
"biga ol geot gatayo.",
"It looks like rain."
],
[
"이 책이 좋은 것 같아요.",
"i chaegi joeun geot gatayo.",
"I think this book is good."
]
]
},
{
"id": "g-lkkayo",
"cat": "표현 Expressions",
"form": "V + (으)ㄹ까요?",
"name": "shall we? I wonder?",
"why": "With a first-person plural sense it proposes; with a third-person subject it wonders aloud.",
"ex": [
[
"같이 갈까요?",
"gachi galkkayo?",
"Shall we go together?"
],
[
"비가 올까요?",
"biga olkkayo?",
"Do you think it'll rain?"
]
]
},
{
"id": "g-neyo",
"cat": "표현 Expressions",
"form": "A/V + 네요",
"name": "realisation, mild surprise",
"why": "Marks something you have just noticed. Warm and very common — the difference between 좋아요 (it's good) and 좋네요 (oh, that's nice).",
"ex": [
[
"날씨가 좋네요.",
"nalssiga jonneyo.",
"The weather's lovely, isn't it."
],
[
"한국어를 잘하네요.",
"hangugeoreul jalhaneyo.",
"Oh — your Korean is good."
]
]
},
{
"id": "g-go",
"cat": "연결 Connectives",
"form": "V/A + 고",
"name": "and (listing, sequence)",
"why": "Joins two clauses with no cause-and-effect claim. Tense is carried only by the final verb.",
"ex": [
[
"밥을 먹고 커피를 마셨어요.",
"babeul meokgo keopireul masyeosseoyo.",
"I ate and then drank coffee."
],
[
"이 카페는 조용하고 싸요.",
"i kapeneun joyonghago ssayo.",
"This cafe is quiet and cheap."
]
]
},
{
"id": "g-jiman",
"cat": "연결 Connectives",
"form": "V/A + 지만",
"name": "but",
"why": "Attaches straight to the stem, and unlike -아/어서 it does take tense: 했지만.",
"ex": [
[
"한국어는 어렵지만 재미있어요.",
"hangugeoneun eoryeopjiman jaemiisseoyo.",
"Korean is hard but it's fun."
],
[
"갔지만 못 만났어요.",
"gatjiman mot mannasseoyo.",
"I went, but I couldn't meet them."
]
]
},
{
"id": "g-aseo",
"cat": "연결 Connectives",
"form": "V/A + 아 / 어서",
"name": "because; and then",
"why": "Two readings from one form: a reason, or a sequence where the first action sets up the second. Never carries past tense before 서, and never precedes a command or a suggestion — that is what -(으)니까 is for.",
"ex": [
[
"배가 아파서 병원에 갔어요.",
"baega apaseo byeongwone gasseoyo.",
"I went to the hospital because my stomach hurt."
],
[
"친구를 만나서 밥을 먹었어요.",
"chingureul mannaseo babeul meogeosseoyo.",
"I met a friend and we ate."
]
]
},
{
"id": "g-nikka",
"cat": "연결 Connectives",
"form": "V/A + (으)니까",
"name": "because (before commands)",
"why": "The reason ending that is allowed to precede 하세요, 합시다 and -(으)ㄹ까요. It also accepts past tense, which -아/어서 refuses.",
"ex": [
[
"비가 오니까 택시를 탑시다.",
"biga onikka taeksireul tapsida.",
"It's raining, so let's take a taxi."
],
[
"시간이 없으니까 빨리 가세요.",
"sigani eopseunikka ppalli gaseyo.",
"There's no time, so please hurry."
]
]
},
{
"id": "g-neunde",
"cat": "연결 Connectives",
"form": "V + 는데 · A + (으)ㄴ데",
"name": "background, contrast, soft lead-in",
"why": "The hardest-working ending in conversational Korean. It sets the scene, softens a contrast, or simply opens a topic and trails off. Verbs take 는데, adjectives (으)ㄴ데, past tense 았/었는데.",
"ex": [
[
"지금 공부하는데 좀 어려워요.",
"jigeum gongbuhaneunde jom eoryeowoyo.",
"I'm studying now, and it's a bit hard."
],
[
"이 옷은 예쁜데 비싸요.",
"i oseun yeppeunde bissayo.",
"These clothes are pretty, but expensive."
]
]
},
{
"id": "g-gijeone",
"cat": "연결 Connectives",
"form": "V + 기 전에",
"name": "before doing",
"why": "Always the plain stem + 기 전에, with no tense marking. With a noun, drop the 기: 식사 전에.",
"ex": [
[
"자기 전에 책을 읽어요.",
"jagi jeone chaegeul ilgeoyo.",
"I read before going to sleep."
],
[
"가기 전에 전화하세요.",
"gagi jeone jeonhwahaseyo.",
"Call before you go."
]
]
},
{
"id": "g-nhue",
"cat": "연결 Connectives",
"form": "V + (으)ㄴ 후에",
"name": "after doing",
"why": "Mirror of 기 전에, but built on the past-modifier form: 먹은 후에, 간 후에. -(으)ㄴ 다음에 means the same thing.",
"ex": [
[
"밥을 먹은 후에 산책해요.",
"babeul meogeun hue sanchaekaeyo.",
"After eating I go for a walk."
],
[
"일이 끝난 후에 만나요.",
"iri kkeunnan hue mannayo.",
"Let's meet after work finishes."
]
]
},
{
"id": "g-numsys",
"cat": "수 Numbers & counters",
"form": "일이삼 vs 하나둘셋",
"name": "the two number systems",
"why": "Korean runs two full sets of numbers side by side. Sino-Korean handles dates, money, minutes, phone numbers, floors and anything above 99 in counting. Native Korean handles counted objects, people, hours and age. A clock reading uses both at once.",
"ex": [
[
"세 시 삼십 분이에요.",
"se si samsip bunieyo.",
"It's 3:30. (native hour, Sino minute)"
],
[
"스물다섯 살이에요.",
"seumuldaseot sarieyo.",
"I'm twenty-five."
]
]
},
{
"id": "g-counters",
"cat": "수 Numbers & counters",
"form": "개 · 명 · 마리 · 잔 · 권 · 살",
"name": "counters",
"why": "Nothing is counted bare — a counter word sits between the number and the verb. Before a counter, 하나·둘·셋·넷·스물 shorten to 한·두·세·네·스무. Order: noun, number, counter.",
"ex": [
[
"커피 두 잔 주세요.",
"keopi du jan juseyo.",
"Two coffees, please."
],
[
"고양이 세 마리가 있어요.",
"goyangi se mariga isseoyo.",
"There are three cats."
]
]
},
{
"id": "g-banmal",
"cat": "반말 Casual speech",
"form": "V/A + 아 / 어",
"name": "반말 — plain casual speech",
"read": 1,
"why": "Take the polite 아/어요 form and drop the 요. That is 반말, and it is what almost every line of manhwa dialogue is written in. Between friends, from an older speaker to a younger one, and in a character's own thoughts.",
"ex": [
[
"밥 먹어.",
"",
"Eat. / I'm eating."
],
[
"어디 가?",
"",
"Where are you going?"
]
]
},
{
"id": "g-ya",
"cat": "반말 Casual speech",
"form": "N + 야 / 이야",
"name": "casual 'to be'",
"read": 1,
"why": "The 반말 copula: 이에요/예요 with the 요 gone and the vowel shortened. 야 after a vowel, 이야 after a consonant. Questions are identical — only the rising tone and the question mark differ.",
"ex": [
[
"우리 친구야.",
"",
"We're friends."
],
[
"범인은 저 사람이야.",
"",
"The culprit is that person."
]
]
},
{
"id": "g-eosseo",
"cat": "반말 Casual speech",
"form": "V/A + 았 / 었어",
"name": "casual past",
"read": 1,
"why": "The past tense minus the 요. This is the workhorse of manhwa narration and flashbacks.",
"ex": [
[
"소문 들었어?",
"",
"Did you hear the rumour?"
],
[
"나 회귀했어.",
"",
"I regressed."
]
]
},
{
"id": "g-lge",
"cat": "반말 Casual speech",
"form": "V + (으)ㄹ게",
"name": "I'll do it (a promise to you)",
"read": 1,
"why": "A first-person commitment made for the listener's benefit — not a neutral prediction. Very common in the panel right before someone does something heroic.",
"ex": [
[
"내가 지킬게.",
"",
"I'll protect you."
],
[
"나 갈게.",
"",
"I'm off."
]
]
},
{
"id": "g-lgeoya",
"cat": "반말 Casual speech",
"form": "V + (으)ㄹ 거야",
"name": "casual future / intention",
"read": 1,
"why": "-(으)ㄹ 거예요 in 반말. Declaring what you are going to do, often as a threat or a vow.",
"ex": [
[
"복수할 거야.",
"",
"I'm going to take revenge."
],
[
"안 갈 거야.",
"",
"I'm not going."
]
]
},
{
"id": "g-ja",
"cat": "반말 Casual speech",
"form": "V + 자",
"name": "let's",
"read": 1,
"why": "The casual suggestion. 가자, 하자, 먹자 — three syllables that move a whole scene along.",
"ex": [
[
"우리 헤어지자.",
"",
"Let's break up."
],
[
"가자.",
"",
"Let's go."
]
]
},
{
"id": "g-janha",
"cat": "반말 Casual speech",
"form": "V/A + 잖아",
"name": "you know, as you're aware",
"read": 1,
"why": "Appeals to something the listener already knows, often impatiently. Reading it as plain 'because' loses the exasperation the panel is drawing.",
"ex": [
[
"내가 말했잖아.",
"",
"I told you, didn't I."
],
[
"위험하잖아.",
"",
"It's dangerous, you know."
]
]
},
{
"id": "g-geodeun",
"cat": "반말 Casual speech",
"form": "V/A + 거든",
"name": "the thing is…",
"read": 1,
"why": "Supplies a reason the listener did not have, sometimes with a note of defiance. Often ends a speech bubble on its own.",
"ex": [
[
"나 바쁘거든.",
"",
"I'm busy, that's why."
],
[
"걔가 먼저 그랬거든.",
"",
"He started it, actually."
]
]
},
{
"id": "g-deora",
"cat": "반말 Casual speech",
"form": "V/A + 더라",
"name": "I saw it myself",
"read": 1,
"why": "Reports something the speaker personally witnessed, recalled with a little surprise. A flag that the line is a memory or an eyewitness account.",
"ex": [
[
"그 사람 진짜 강하더라.",
"",
"That person was seriously strong, I saw it."
]
]
},
{
"id": "g-quote",
"cat": "반말 Casual speech",
"form": "V + 대 / 래 / 냬 / 재",
"name": "hearsay — 'they say'",
"read": 1,
"why": "Contracted quotation, everywhere in gossip panels. -대 reports a statement, -래 a command or an 'is', -냬 a question, -재 a suggestion. If a line ends in one of these, someone else said it first.",
"ex": [
[
"시험 어렵대.",
"",
"They say the exam is hard."
],
[
"같이 가재.",
"",
"He says let's go together."
]
]
},
{
"id": "g-neun",
"cat": "반말 Casual speech",
"form": "V + 는 / A + (으)ㄴ + N",
"name": "modifying a noun",
"read": 1,
"why": "Korean puts the whole description in front of the noun, where English puts it after: 내가 죽인 몬스터 is 'the monster I killed'. Once you can see where the modifier ends and the noun begins, long manhwa narration stops being a wall.",
"ex": [
[
"내가 죽인 몬스터.",
"",
"The monster I killed."
],
[
"강한 사람.",
"",
"A strong person."
]
]
}
]
}