코드 생성

코드 생성 (Code Generation)

중간 코드 생성, 제어 흐름, 문법 규칙

중간 코드 (Intermediate Code)

AST를 실행 가능한 저수준 명령어로 변환하는 단계

제어 흐름 명령어

if 문 변환 예시:
    조건검사
    gofalse label1   ← 조건이 false면 label1으로 점프
    stmt1
    goto label2      ← label2로 무조건 점프
label1:
    stmt2
label2:
명령어 설명
gofalse label 조건이 false일 때 해당 레이블로 점프
goto label 무조건 해당 레이블로 점프
label: 점프 목적지 표시

문법 규칙 (Grammar Rules)

Yacc/Bison 기반 문법 규칙 예시:

RETURN expr STMTEND { /* 반환문 처리 */ }

DEF ID '(' ')' stmt {
    dwgen($2);
    $2->token = ID2;
    $ = MakeOPTree(DEF, $2, $4);
}

배열 문법 예시

LID '[' ']' ASSGN element_list STMTEND

관련 개념