컴파일러 - 어휘분석기 - 형식언어
형식언어 1. 형식언어 구조, 범위 등이 명확히 규정되어 있는 언어. 자연 언어의 문법 구조를 수학적 측면에서 형식화한 것으로서 자연 언어보다 훨씬 간단한 구조의 인공 언어로 볼 수 있다. 형식 언어의 이론은 알골 등의 프로그램 작성 언어에서 제반 문제로 응용되고 있다. 형식 언어는 알파벳으로부터 생성되는 모든 문자열의 부분집합을 말하는데 이러한 언...
형식언어 1. 형식언어 구조, 범위 등이 명확히 규정되어 있는 언어. 자연 언어의 문법 구조를 수학적 측면에서 형식화한 것으로서 자연 언어보다 훨씬 간단한 구조의 인공 언어로 볼 수 있다. 형식 언어의 이론은 알골 등의 프로그램 작성 언어에서 제반 문제로 응용되고 있다. 형식 언어는 알파벳으로부터 생성되는 모든 문자열의 부분집합을 말하는데 이러한 언...
어휘분석기 - 유한 상태 오토마타 공부해보니 오토마타에 대한 내용은 매우 크고, 언어학과 다른 지식 어딘가에 모호하게 걸쳐있는 느낌이 있어서 다른 분류로 분리해야겠지만, 일단은 현재 컴파일러에 대해서 논하고 있으므로 일단 이곳에 포스팅하기로 했다. 1. 유한 상태 기계 유한 상태 기계라는게 있다. 이는 상태가 유한한 기계를 말한다. 여기서 말하는 기...
어휘분석기 - 정규표현식(regular expression) 1. 개요 정규표현식을 한마디로 말하자면 문자들의 집합(이 집합을 언어라고 한다) 간결한 패턴으로 표현하는 방법이다. 사실 정규표현식이야 개발간에 많이 사용한다. 가령 로그인간 아이디 형태 검증이나, 이메일 형태 검증만 예시를 들어도 바로 알 수 있을 것이다. 우리가 단순히 문자열 매칭에...
LangGraph 1. 개요 Trusted by companies shaping the future of agents – including Klarna, Replit, Elastic, and more – LangGraph is a low-level orchestration framework for building, managing, and deploy...
어휘 분석(lexical analysis) 1. 개요 어휘 분석(lexical analysis)은 컴파일러의 첫 번째 단계로, 원시 소스 코드(문자열)의 연속을 의미 있는 단위인 토큰(token) 으로 분리하고 각 토큰의 종류를 식별하는 과정이다. 이 단계에서는 공백, 주석 등을 제거하여 후속 단계인 구문 분석(parser)이 다루기 쉬운 형태로 변환...
실행파일 구조 1. 개요 우리가 프로그램을 사용할 때 많은 파일들을 접하고 윈도우의 경우 더블클릭으로 리눅스의 경우 명령어로 간단히 실행하지만 실제로 실행하는 가능한 파일의 형태는 한정되어있다. 2. PE FILE FORMAT (윈도우) 윈도우에서 실행 가능한 파일은 모두 PE 파일 포맷을 따르며 해당 파일의 확장자는 아래와 같다. 실행 파일...
C++ 람다표현식 1. 개요 C++ 람다 표현식(Lambda Expression)은 익명 함수(anonymous function)를 간편하게 정의하고 사용할 수 있게 해 주는 문법이다. 주로 일회성 콜백이나 함수 객체로 사용할 때 유용하다. 2. 기본 사용법 [Capture Clause] (parameters) -> return_type { ...
C++ 쓰레드 1. 개요 C++에서 쓰레드(thread)란 하나의 프로세스 내에서 독립적으로 실행되는 흐름을 말한다. 쓰레드를 이용하면 CPU 자원을 효율적으로 활용하여 동시에 여러 작업을 수행할 수 있다. C++11부터는 헤더를 통해 표준 라이브러리 차원에서 쓰레드를 지원하며, 운영체제별 네이티브 쓰레드를 추상화하여 제공한다. 1) 장점 병...
C++ 상속 1. 개요 상속이란 객체 지향 프로그래밍에서 부모 클래스(슈퍼 클래스)에서 자식 클래스(서브 클래스)로 클래스의 속성과 메서드를 물려주는 것을 말한다. 부모 클래스에서 정의된 속성과 메서드는 자식 클래스에서 사용가능하며, 부모 클래스에서 받은 메서드를 다시 정의할 수도 있다. 위 구조를 잘 사용하면 성능과 유지보수에 좋으며 아래와 같은...
C++ 예외처리 1. 개요 C++의 예외 처리(Exception Handling)는 프로그램 실행 중 발생할 수 있는 오류(예외 상황)를 분리하고, 이를 포괄적이고 안전하게 다루기 위한 메커니즘이다. 전통적인 오류 코드는 반환값이나 전역 변수로 처리하지만, 예외 처리를 이용하면 오류 발생 지점을 호출 지점으로 강제 전파하고, 집중된 위치에서 일괄 처...