학교 69

[Algorithm / C++] lower_bound, upper_bound

이진 탐색 기반의 탐색 방법으로, 사용 전에 배열이나 리스트가 오름차순 정렬되어 있어야 한다. lower_bound 찾는 값과 같거나, 찾는 값보다 큰 가장 작은 정수값의 위치를 찾아주는 함수 같은 원소가 여러개 있어도 상관 없으며, 항상 유일한 해를 구할 수 있다. // 구현 int lower_bound(int size, int key, int arr[]) { int start = 0; int end = size; int mid = 0; while (start < end) { mid = (start + end) / 2; if (arr[mid] < key) start = mid + 1; else end = mid; } return (end + 1); } // STL #include int main(voi..

학교/알고리즘 2022.12.16

[Compiler] 14. Language Processor (interperter, bootstrapping)

Language Processor - 처리할 수 있는 프로그램 (translated or interpreted) - 두 가지 종류의 언어 프로세서 : Translator, Interpereter - translator는 한 언어로 표현된 텍스트를 받아들이고, 다른 언어로 표현된 semantically-equivalent 텍스트를 생성하는 프로그램 assembler는 assembly 언어에서 기계 언어로 translate 한다. 컴파일러는 high-level의 언어를 low-level의 언어로 번역한다. High-level Language -> Compiler(Program) -> object code 컴파일러는 구현 언어로 작성된다. - Interpreter는 소스 프로그램을 받아들이고, 소스프로그램을 ..

학교/컴파일러 2022.06.10

[Compiler] 13. Semantic analyzer

Semantic analyzer (의미분석) - 프로그램의 semantics은 "meaning" 이다. - 구문적으론 올바르지만 의미상 틀린 것 - 일치하지 않는 Type, 선언되지 않은 변수 사용, 잘못된 인수로 호출된 함수, access 위반 등 확인 - syntax tree에 주석 달기 -> type 정보(attribute) 포함 - tree의 할당이 적절한지 확인 ex) integer가 맞는가? - 프로그램의 syntactic 구조를 알면, 컴파일에 필요한 추가 정보를 계산한다. - 언어의 의미를 지정하기 위해 사용되는 표준 방법은 없다. -> 알고리즘은 parsing 알고리즘만큼 명확하게 표현되지 않는다. Attribute and binding - Attribute 프로그래밍 언어 구조의 모든 ..

학교/컴파일러 2022.06.10

[Compiler] 11-2. Bottom-up parsing

SLR(1) Parsing = Simple LR(1) Parsing 1 -> Lookahead를 한다! - LR(0) item으로 만들어진 DFA를 그대로 사용한다. input string의 다음 token을 사용해 action을 수행하여, LR(0) parsing의 power를 높인다. DFA를 구성할 때 LR(0) || SLR(1)은 lookahead를 무시한다. -> SLR(1)은 lookahead를 하지만 만들 때 현재 parsing state의 DFA들은 LR(0) item을 그대로 쓰기 때문에 simple 일반 LR(1)은 DFA를 구성할 때 lookahead를 사용한다. - Two ways 적절한 DFA 전환이 존재하는지 확인하기 위해 transition 전에 input token을 참조한다..

학교/컴파일러 2022.06.09

[Compiler] 12. Yacc

Yacc (Yet Another Compiler-Compiler) parser(syntax analyzer) generator하는 프로그램 Input : BNF, Context-free grammar를 BNF로 변환 가능 Output : Parser LALR(1) Parser Compiler-Compiler (Compiler generator) compiler를 generator하는 프로그램 Input : grammar (BNF) Output : parser의 source code An (basic) overview of Yacc General format of Yacc source {declarations} (선언) // optional %% {rules} (변환 규칙) %% {programs} (사용..

학교/컴파일러 2022.05.30

[OS] 3. Operating System Structures

Operating-System Operations Booting procedure power on 메인보드에 전력공급 CPU에 전력공급 Flash memory에 BIOS 저장 BIOS (Basic Input Output System) : 컴퓨터의 H/W와 OS 처음으로 연결해줌. 일종의 Firmware POST for CMOS, computer H/W POST : 컴퓨터의 CPU, 메인 메모리, 그래픽카드, 하드디스크 등 device가 제대로 작동하는지 체크 CMOS : real time clock, 비휘발성 메모리가 있다. 컴퓨터 시스템의 날짜, 시간 정보, 디스크, 부팅 관련 내용이 CMOS 칩에 작성되어있다. => CMOS에 저장된 내용을 BIOS가 출력하는 형태 OS 구동시 프로세스 형태로 바뀌어..

학교/운영체제 2022.05.24

[OS] 2-2. Computer Structures

Operating System H/W에 직접적, 주도적으로 접근, 관리하는 시스템 S/W 컴퓨터 시스템의 개요 CPU 연산 작업 처리 현대 컴퓨터들은 단일 CPU가 아닌, 멀티 코어 기반의 프로세서를 탑재한다. Memory 주기억 장치 CPU 이외에 컴퓨터에서 발생하는 요청 작업처리를 위한 작업공간인 shared Memory가 있다. => 단일 프로세스만이 아니라 여러 프로세스가 공유해 사용한다. 다수의 device controller I/O device에서 발생한 요청 작업 처리하는 관리자 Bus 컴퓨터와 공유 메모리 사이의 접근을 제공한다. 통로 공간의 크기에 따라 성능에 영향을 미친다. Interrupt CPU가 어떤 프로그램을 수행하고 있을 때, 예외상황이 발생하게 되어 처리가 필요한 경우에 수행..

학교/운영체제 2022.05.24

[OS] 2-1. 운영체제의 종류

UNIX 멀티태스킹 기반의 Time sharing OS UNIX 커널을 재컴파일하고 유틸리티(응용 프로그램)를 제작하기 위한 C언어 파생 TCP/IP, socket 등의 네트워크 프로토콜, 인터페이스 포함 현대 운영체제의 아버지 이후 후속 운영체제(UNIX 변형 버전)가 많이 발생 but 난잡해질 수 있어 정의한 POSIX 제정 UNIX-like OS POSIX (Portable Operating System Interface & UNIX) IEEE에서 제정한 유닉스 응용 인터페이스 표준 규격 LINUX Linux Kernel + GNU (GNU/Linux) Multi-users, Multi-tasking, Multi-threads 기반의 Time sharing OS 교육용 UNIX-like OS 인 M..

학교/운영체제 2022.05.24

[Compiler] 11-1. Bottom-up parsing

Bottom-up parsing (상향식 구문 분석) 연산을 반전시켜, 문자열을 Start symbol로 Reduce 한다. Rightmost derivation Two actions in bottom-up parser Shift (이동) Input 처음 문자열을 parsing stack으로 이동 Reduce (감축) a가 있을 때, P : A -> a에 매칭되어 a -> A로 reduce 한다. Bottom-up parser example G = ({S, S'}, {(, )}, P, S') P : S' -> S S -> ( S ) S | ε Parsing stack Input Action 1 $ ( ) $ shift 2 $ ( ) $ reduce S -> ε 3 $ ( S ) $ shift 4 $ ( ..

학교/컴파일러 2022.05.17