docs: disambiguate control-flow headers

This commit is contained in:
2026-08-16 08:42:21 +09:00
parent 95de333da4
commit 57b47a574a
2 changed files with 17 additions and 4 deletions
+12
View File
@@ -26,3 +26,15 @@
- 구현 영향: match 문맥의 식 파서는 최상위 `{` 앞에서 scrutinee 파싱을 멈춰야 하며, - 구현 영향: match 문맥의 식 파서는 최상위 `{` 앞에서 scrutinee 파싱을 멈춰야 하며,
괄호 안에서는 일반 구조체 초기화 규칙을 그대로 적용한다. 오류 복구는 모든 반복에서 괄호 안에서는 일반 구조체 초기화 규칙을 그대로 적용한다. 오류 복구는 모든 반복에서
적어도 한 토큰을 소비해 같은 진단을 무한 반복하지 않아야 한다. 적어도 한 토큰을 소비해 같은 진단을 무한 반복하지 않아야 한다.
## 2026-08-16 — v0.1.5
### 제어 흐름 헤더와 구조체 초기화의 중괄호 모호성 일반화
- 문제: v0.1.4의 모호성은 `match`뿐 아니라 `if flag {}`, `while flag {}`
`for x in values {}`처럼 식 직후 본문이 시작되는 모든 제어 흐름에 동일하게 발생한다.
- 결정: `if`, `while`, `for`, `match`, `comptime if` 헤더 바로 뒤의 최상위 `{`는 항상
제어 흐름 블록을 시작한다. 헤더 최상위에 구조체 초기화식을 쓰려면 괄호가 필수다.
- 구현 영향: 제어 흐름 헤더의 최상위 식 파싱에서 구조체 초기화를 금지하되 괄호 안에서는
일반 식 파싱 상태를 복원한다. 단순 식별자 조건과 배열·슬라이스 반복은 본문 `{` 앞에서
정상적으로 종료되어야 한다.
+5 -4
View File
@@ -1,4 +1,4 @@
# Ferro 언어 명세 v0.1.4 # Ferro 언어 명세 v0.1.5
DOS용 시스템 프로그래밍 언어. C만큼 빠르고, 메모리 안전성을 함수 단위 지역 검사만으로 보장한다. DOS용 시스템 프로그래밍 언어. C만큼 빠르고, 메모리 안전성을 함수 단위 지역 검사만으로 보장한다.
파일 확장자 `.fe`, 컴파일러 이름 `fec`, 심볼 파일 `.fei`. 파일 확장자 `.fe`, 컴파일러 이름 `fec`, 심볼 파일 `.fei`.
@@ -450,9 +450,10 @@ pub fn main() -> !void {
- 이 루프 형태들은 경계 검사를 생략한다(컴파일러가 안전을 보장). - 이 루프 형태들은 경계 검사를 생략한다(컴파일러가 안전을 보장).
- `while``bool` 조건만. - `while``bool` 조건만.
- `match`**완전성 검사**. 모든 배리언트를 다루거나 `_` 필요. - `match`**완전성 검사**. 모든 배리언트를 다루거나 `_` 필요.
- `match expr { ... }`에서 scrutinee 바로 뒤의 `{`는 항상 arm 블록을 시작한다. - `if`/`while`/`for`/`match`/`comptime if` 헤더 바로 뒤의 `{`는 항상 해당 제어 흐름의
따라서 구조체 초기화식을 scrutinee로 직접 쓸 때는 `match (Point{ x: 1, y: 2 }) { ... }`처럼 본문 또는 arm 블록을 시작한다. 따라서 구조체 초기화식을 헤더의 최상위 식으로 직접
괄호로 감싸 구조체 초기화의 `{` 명시한다. 쓸 때는 `match (Point{ x: 1, y: 2 }) { ... }`처럼 괄호로 감싸 구조체 초기화의 `{`
명시한다. 괄호 안의 구조체 초기화는 일반 식 규칙을 따른다.
- `break`/`continue`는 가장 안쪽 루프에만 적용(레이블 없음). - `break`/`continue`는 가장 안쪽 루프에만 적용(레이블 없음).
- `defer block`은 스코프 종료 시 역순 실행. 소멸자와 함께 선언 역순으로 병합 실행. `return`/`break`/에러 전파 경로에서도 실행. - `defer block`은 스코프 종료 시 역순 실행. 소멸자와 함께 선언 역순으로 병합 실행. `return`/`break`/에러 전파 경로에서도 실행.