diff --git a/doc/history/2026-09-11-5차.md b/doc/history/2026-09-11-5차.md index 72e801f..399a5b0 100644 --- a/doc/history/2026-09-11-5차.md +++ b/doc/history/2026-09-11-5차.md @@ -153,3 +153,99 @@ if (HasChanges && !threeWay && string.Equals(localText, _originalLocalText, Stri 검사를 `GitOpTest` 36건으로 고쳤다. 전체 **623건 통과**(하네스 19벌) · 빌드 경고 0 · 오류 0. **실제 저장소는 건드리지 않았다** — 데모 저장소(`mergehub-demo`) 사본으로만 했다. + + +--- + +## B-1. XAML 색칠이 사실상 없다 (2026-09-11, 완료) + +### 무엇이 문제였나 + +실제 소스에 XAML 이 400개 · 42,477줄이다. C# 다음으로 많다. +그런데 지금까지 XAML 은 `LanguageProfile.Markup` 으로 열렸고, 그것이 아는 것은 **주석과 따옴표뿐**이었다. +태그 이름 · 속성 이름 · 속성 값이 전부 같은 색이라 사실상 평문이었다. + +### 왜 기존 토크나이저에 못 얹었나 + +`CodeTokenizer` 는 **낱말을 읽어 예약어 표와 맞춰 보는** 방식이다. 마크업은 규칙이 다르다. +같은 `Content` 가 꺾쇠 안에서는 속성 이름이고 밖에서는 그냥 글자다. +낱말이 무엇이냐가 아니라 **어디에 있느냐**로 갈린다. 그래서 마크업만 따로 뒀다(`MarkupTokenizer`). + +### 줄을 넘어가는 상태를 넓혀야 했다 + +토크나이저는 한 줄씩 따로 훑는다. 앞 줄에서 넘어오는 것은 여태 `bool inBlockComment` 하나였다. +그런데 XAML 은 **여는 태그가 여러 줄에 걸치는 것이 예외가 아니라 보통**이다. +시험에 쓴 실제 파일(`UCManualRCCOperation.xaml`)은 **첫 태그 하나가 14줄**이다. + +```xml +