본문 바로가기

프로그래밍 언어27

[컴파일러] - 어휘 분석 (Lexical analysis) II 1. 토큰(token) 언어 이론에서 알파벳 (alphabet)은 a, b, 1, 2, /와 같은 기호의 유한 집합이다. 알파벳에 속한 기호들의 유한한 나열을 스트링 (string) 또는 단어 (word)라고 한다. 어떠한 알파벳이 a, b, c를 포함한다면, abc는 이 알파벳으로 만들 수 있는 스트링이 된다. 그러나 만약 어떠한 알파벳이 a, b로 구성된다면 abc는 이 알파벳으로 만들 수 있는 스트링이 아니다.어떠한 스트링 $s$에 대해 $s$의 절댓값 $|s|$는 스트링에 나열된 기호의 수이며, 이를 스트링의 길이라고 한다. 예를 들어, 스트링 "lexical"의 길이는 7이 된다. 언어 이론에서는 길이가 0인 스트링도 존재하는데, 이를 empty string이라고 한다.언어 (language)는.. 2016. 1. 19.
[컴파일러] - 어휘 분석 (Lexical analysis) I 1. 개요 컴파일러의 첫 번째 단계는 소스 코드를 정규 문법 (regular grammar)에 따라 토큰 (token)으로 분류하는 어휘 분석 또는 스캐닝 (scanning)이다. 예를 들어, "Lexical analysis is the first step of compiler"라는 문장에서 'L', 'e', 'x', 'i', 'c', 'a', 'l'을 따로 놓으면 어떠한 의미도 없지만, "Lexical"이라는 하나의 조각으로 보면 의미를 갖게 된다. 어휘 분석 단계에서 검출되는 의미 있는 조각을 어휘항목 (lexeme)이라고 하며, 어휘 분석기는 소스 코드에서 이러한 어휘항목을 검출하여 토큰을 생성한다. 2. 용어 정의 어휘 분석에서 사용하는 용어를 정의한다. 그러나 용어의 정의만으로는 용어가 갖는 의.. 2016. 1. 18.
[컴파일러] - 컴파일러의 구조 1. 개요 컴퓨터에서 실행되는 모든 소프트웨어는 프로그래밍 언어로 작성된다. 그러나 프로그래밍 언어는 인간이 이해할 수 있는 수준의 언어로써, 기계어를 사용하는 컴퓨터는 이해할 수 없는 언어이다. 따라서 프로그래밍 언어로 작성된 프로그램은 컴퓨터에서 실행되기 위해 일정한 규칙에 따라 기계어의 형태로 번역되어야 하는데, 이러한 번역을 수행하는 시스템 소프트웨어를 컴파일러 (compiler)라고 한다. 예를 들어, 한국어를 모국어로 사용하는 사람이 영어로 작성된 글을 읽기 위해서는 영어를 한국어로 번역해야 한다. 이러한 상황에서 영어는 프로그래밍 언어이고, 한국어를 모국어로 사용하는 사람은 컴퓨터이며 한국어는 기계어이다. 그리고 영어를 한국어로 번역해주는 사람이나 소프트웨어는 컴파일러가 된다. 2. 컴파일러.. 2016. 1. 17.