생성하려는 출력으로 매크로 종류를 고른다

문법을 줄이는 목적과 코드를 생성하는 목적을 먼저 나누면, 가장 단순한 도구에서 시작할 수 있다.

START무엇을 생성해야 하는가?
토큰 패턴 반복

선언 매크로

println!, vec!처럼 정해진 패턴을 반복한다.

macro_rules!
타입의 trait 구현

Derive 매크로

struct·enum 필드를 읽어 impl 블록을 만든다.

#[derive(...)]
항목 전체 변환

Attribute 매크로

함수나 타입 앞뒤에 검증·라우팅 코드를 덧붙인다.

#[route]
커스텀 DSL 해석

Function-like proc

TokenStream을 분석해 새로운 문법을 코드로 바꾼다.

sql!(...)
선택 후 검증cargo expand로 생성 코드 확인오류 span이 사용자가 고칠 위치를 가리키는지 확인