1-3. 코드의 기본 단위
このコンテンツはまだ日本語訳がありません。
LIQUID 哲学評価総合スコア: 8.1 / 10
프로그래밍 언어를 구성하는 문법적 규격과 컴파일러가 코드를 분석하여 실행 단위로 해체 및 재구성하는 메커니즘을 정리한다.
언어의 문법 규격
섹션 제목: “언어의 문법 규격”프로그래밍 언어는 텍스트 형태의 논리를 검증하기 위해 단계별 분석 과정을 거친다. 컴파일러는 이를 크게 구문 분석과 의미 분석으로 나누어 처리한다.
구문 (Syntax)
섹션 제목: “구문 (Syntax)”코드가 언어의 형태적 약속에 맞춰 올바르게 작성되었는지 판단하는 규칙.
- 명령어의 철자, 괄호 짝 맞춤, 세미콜론(
;) 누락 여부, 들여쓰기 등이 여기에 속한다. - 컴파일러의 검증 메커니즘
- 어휘 분석: 소스코드 문자열의 공백과 주석을 제거하고, 의미를 가진 최소 단위인 토큰으로 분해한다.
- 구문 분석: 분해된 토큰들을 바탕으로 AST를 생성한다.
- 구문 오류(Syntax Error): 토큰의 배치가 문법 규칙과 일치하지 않아 AST를 완성하지 못할 때 발생하며, 컴파일 단계에서 즉시 빌드가 중단된다.
의미 (Semantics)
섹션 제목: “의미 (Semantics)”구문적으로 올바른 코드가 실제로 논리적으로 타당하고 유효한 동작을 수행하는지에 대한 판단.
- 문법적으로는 완벽하더라도 실제 실행이 불가능하거나 의도와 다른 동작을 규정한다.
- 검증 시점에 따른 분류
- 정적 의미 (Static Semantics): AST를 순회하며 타입 일관성이나 변수 선언 여부 등을 컴파일 타임에 사전 검사.
- 예) 문자열 변수에 숫자 곱셈 대입.
- 동적 의미 (Dynamic Semantics): 컴파일 단계에서는 감지할 수 없어 실제 메모리와 CPU 상태에 따라 런타임에 드러나는 오류.
- 예)
10 / 0과 같은 연산은 문법상 오류가 없으나 수학적으로는 정의되지 않아 실행 시 오류를 일으킨다.
- 예)
- 정적 의미 (Static Semantics): AST를 순회하며 타입 일관성이나 변수 선언 여부 등을 컴파일 타임에 사전 검사.
코드의 구성 요소
섹션 제목: “코드의 구성 요소”컴파일러의 어휘 분석기가 소스코드를 쪼개어 인식하는 최소 문법 단위.
예약어 (Reserved Keyword)
섹션 제목: “예약어 (Reserved Keyword)”프로그래밍 언어의 문법 규격에 의해 고유한 용도와 기능이 사전에 정의된 단어.
- 어휘 분석 단계에서 일반 식별자와 분리되어 고유 토큰 타입으로 분류된다.
- 개발자가 임의로 변수, 함수명으로 사용할 수 없다.
- 자료형:
int,float,double,char,void등 - 제어문:
if,else,switch,while,continue등 - 기타:
return,class,public등
- 자료형:
식별자 (Identifier)
섹션 제목: “식별자 (Identifier)”프로그래머가 변수, 함수, 클래스 등을 구분하기 위해 직접 부여하는 고유한 이름.
- 어휘 분석기가 토큰으로 인식한 후, 컴파일러에 의해 주소와 타입 정보가 관리된다.
- 대부분의 프로그래밍 언어에서 통용되는 명명 규칙
- 숫자로 시작 불가.
- 공백 및 특수문자 사용 불가. (단, 밑줄
_예외 허용) - 예약어와 동일한 이름 사용 불가.
연산자와 구분자 (Operator & Delimiter)
섹션 제목: “연산자와 구분자 (Operator & Delimiter)”- 연산자: 산술, 비교, 논리, 대입 연산을 지시하는 기호. AST 노드의 상위 연산 분기로 배치된다.
- 구분자: 명령문의 끝을 알리는 세미콜론(
;), 코드 블록을 묶는 중괄호({}) 등. AST를 생성할 때 코드 구조를 확정하는 경계 조건으로 사용된다.
주석 (Comment)
섹션 제목: “주석 (Comment)”컴파일러나 인터프리터가 번역하지 않고 무시하는 설명용 텍스트.
- 사람이 코드의 의도와 동작을 이해하기 쉽도록 메모를 남길 때 사용한다.
- 최종 기계어나 실행 바이너리의 크기 및 실행 속도에 일절 영향을 주지 않는다.
프로그램 진입점 (Entry Point)
섹션 제목: “프로그램 진입점 (Entry Point)”프로그램이 메모리에 적재되어 CPU에 의해 실행을 시작하는 최초의 시작 지점.
- 운영체제나 런타임 환경은 실행 파일이 호출되면 정해진 진입점을 가장 먼저 찾아 실행한다.
- 정적 컴파일 언어(C, C++, Rust 등):
main함수에서 실행 시작. - 가상 머신 기반 언어(Java 등): 메인 클래스의
public static void main메서드에서 실행 시작. - 스크립트 언어(Python 등): 파일의 첫 라인부터 토큰화와 실행을 동시에 진행.
- 정적 컴파일 언어(C, C++, Rust 등):
AI 批評総評
The document effectively connects basic code primitives to underlying compiler mechanics such as lexical analysis, AST creation, and runtime execution contexts. It balances foundational accessibility with technical precision by systematically clarifying the role of syntax, static/dynamic semantics, and language execution models. Incorporating explicit visual AST nodes or binary level entry point details would further deepen its conceptual rigor.