컴파일러(21)
-
[Compiler] 유도 트리
Compiler miro.com
2023.04.15 -
[Compiler] 구문 분석
Compiler miro.com
2023.04.15 -
[Compiler] Lex 파일 이해하기
Compiler miro.com 1. Lex 파일 이해하기 가. Lex(Flex)의 입력 파일 형식 Lex(Flex)와 Yacc(Bison)의 입력 파일 모두 크게 세 부분으로 구성되어 있다. 첫 번째 부분은 선언(declaration)이나 정의(definition)를 포함한다. 두 번째 부분은 규칙(보통 번역 규칙(translation rule))을 기술한다. 세 번째 부분은 보조 프로시저(auxiliary procedure) 또는 지원 프로그램(supporting routines)를 담고 있다. 두 번째 부분은 필수고, 첫 번째, 세 번째 부분은 필요가 없는 경우 생략할 수 있다. 첫 번째, 두 번째, 세 번째는 사이에 '%%'기호로 구분한다. 예를 들어 설명해 보면… yymore() "+" { re..
2023.04.07 -
[Compiler] Flex 실습
Compiler miro.com 1. 실습 목표 PROGRAM SAMPLE ; CONST M = 5 ; N = 9 ; VAR SUM, MUL : INTEGER ; BEGIN SUM := M + N ; MUL := M * N ; END. Pascal 코드의 줄 번호를 붙이는 Scanner 만들기. 2. scanner.l %{ int lineno = 1; %} %% \n {lineno++; ECHO;} ^.*$ printf("%d\t%s", lineno, yytext); scanner.l 작성. yytest : flex, lex에서 토큰(문자 배열 char array)을 저장하는 버퍼 ECHO : printf("%s", yytext)와 동일한 결과. 출력하는 일이 빈번해서 매크로로 정의하여 제공. flex ..
2023.03.31 -
[Compiler] Scanner 구현 과정
Compiler miro.com
2023.03.31 -
[Compiler] 유한 상태 기계
Compiler miro.com 1. 유한 상태 기계 가. 상태 전이 다이어그램 & 상태 전이 테이블 2. 결정형 유한 상태 기계
2023.03.31 -
[Compiler] 실습 준비(Windows)
1. 컴파일러-컴파일러 컴파일러 컴파일러(Compiler-compiler)는 컴파일러를 만들기 위한 컴파일러를 의미한다. 일반적으로 컴파일러는 어떠한 프로그래밍 언어로 쓰인 원시 코드(source code)를 분석 파일(object file)로 변환하는 기능을 하는 프로그램을 의미하지만 그 컴파일러를 만들려면 엄청난 기술적 구현 능력과 고생이 요구된다. 그래서 컴파일러 그 자체 또는 컴파일러가 제공하는 구문 분석 기능을 자동으로 만드는 프로그램으로 컴파일러 컴파일러를 고안하여 개발하였다. 출처 : https://ko.wikipedia.org/wiki/컴파일러_컴파일러 2. 어휘 분석기 생성기 가. Lex Lex는 컴퓨터 과학 분야에서 구문 분석기인 Yacc와 같이 널리 쓰이는 어휘 분석기이다. Lex는 ..
2023.03.24 -
[Compiler] 구문 분석, 의미 분석, 코드 최적화 소개
Compiler miro.com 1. 구문 분석 2. 의미 분석 변수나 식별자에 대한 자료형을 할당 목적 코드 생성을 위한 중간 코드를 생성한다. 3. 코드 최적화 기법 전역 코드 최적화 (global code optimization) : 중간코드 -> 개선된 중간코드 지역 코드 최적화 (local code optimization) : 기계어 -> 개선된 기계어
2023.03.15