Computer Science/프로그래밍 언어론

정규 문법과 문맥 자유 문법 위는 Noam Chomsky의 4 가지 언어 유형이다. 안으로 들어갈수록 문법의 제약, 구속력이 강해진다고 보면 된다 context-senstive가 한국어, 영어 등이라 생각하면 된다 이 4가지 언어 유형 중 정규 문법과 문맥 자유 문법이 프로그래밍 언어에 딱 맞아서 정규 문법을 이용하여 어휘 분석(lexical analysis)을 수행하고, 문맥 자유 문법을 이용하여 구문 분석(syntax analysis)을 수행합니다. 대부분의 프로그래밍 언어의 오류를 찾기 위해서 문맥 자유 문법을 사용한다 정규 문법(regular grammar) 모든 규칙이 다음과 같은 형태를 가지는 문법을 말합니다. A -> aB A -> a A -> ε A와 B는 비터미널 심볼(nontermina..
프로그래밍 언어 정의하는 방법 언어 인식기(recognizer): 어떤 문자열이 언어 L에 속하는지 판단하는 장치를 의미합니다. 이는 주로 컴파일러의 어휘 분석기, 구문 분석기에서 사용됩니다. 언어 생성기(generator): 어떤 문법을 이용하여 언어 L의 문장들을 생성하는 장치를 의미합니다. 그 후, 언어를 정의하는 방법으로 언어 인식기와 언어 생성기의 관점에서 설명하고 있습니다. 여기서는 정규표현식을 이용하여 언어를 정의하는 방법을 언어 인식기 관점에서 다루고, 문법(grammar)을 이용하여 언어를 정의하는 방법을 언어 생성기 관점에서 다루고 있습니다. 마지막으로, 노트에서는 예시를 통해 언어를 생성하는 방법을 설명하고 있습니다. 이 예시에서는 'S -> S10 | 0’이라는 문법을 이용하여 생성..
어휘 분석(lexical analysis) 위의 사진에서 오늘은 Lexical Analysis에 대해 알아보겠습니다 Token : 문법적으로 의미가 있는 최소 단위 Pattern : 토큰을 서술하는 규칙 Lexeme : 패턴에 의해 매칭 된 문자열 Token에 관하여 토큰은 크게 Special form과 General form으로 나눌 수 있습니다. Special form은 언어 디자이너가 미리 정의한 단어들로, 예약어(keyword), 연산자(operator), 구분자(delimiter)가 해당됩니다. 예약어(keyword)는 프로그래밍 언어에서 미리 정의된 단어 조건문(if, else), 반복문(for, while), 데이터 타입(int, float) 등이 해당됩니다. 예약어들은 프로그래머가 변수명이..
프로그래밍 언어의 구성 프로그래밍 언어의 구성 요소는 크게 구문(Syntax)과 의미론(Semantics)으로 나눌 수 있습니다. 구문은 프로그래밍 언어의 문법적인 부분으로, 프로그래밍 언어에서 올바른 문장을 구성하는 방법을 정의합니다. 이를 통해 프로그래밍 언어를 구성하는 단어, 구문 구조, 문장 등을 정의할 수 있습니다. 언어의 표현식, 문장 그리고 프로그램 단위의 형식 일반적으로 문맥 자유 문법으로 기술 의미론은 프로그래밍 언어의 의미적인 부분으로, 프로그래밍 언어에서 올바른 의미를 가지는 문장을 구성하는 방법을 정의합니다. 이를 통해 프로그래밍 언어에서 올바른 실행 결과를 얻을 수 있도록 문장의 의미를 정의합니다. 표현식, 문장, 프로그램 단위에 대한 의미 연산 의미론, 공리 의미론, 표기 의미론..
Scheme 기본 문법 Scheme 언어의 특징은 아래와 같다 Simple syntax - 간단한 문법 Functional programming - 함수가 일급 객체 취급 받는다 Dynamic typing - 동적 타입 지원 Tail recursion optimization - 꼬리 재귀 최적화 Basic Data Type s-expression은 symbolic expression의 약어로, Lisp 언어에서 모든 코드나 데이터를 나타내는 방식을 말합니다. 이는 리스트 구조를 이용한 트리 구조로 표현됩니다. 따라서 Lisp에서는 코드도 데이터와 마찬가지로 리스트 형태로 표현되어 처리됩니다. S-expression의 데이터 유형 Atom은 숫자, 심볼 등과 같은 단순한 데이터 유형을 나타냅니다. List..
람다 대수 수학자 알론조 처치가 순전히 수학적 방식으로 계산 개념을 설명하기 위해 개발한 형식 체계 수행 중인 작업을 명시적으로 정의할 필요 없음 즉 함수를 정의하고 바로 적용하는 방법론 람다식(Lamda expression) 람다식은 익명 함수를 정의하기 위한 식이다. 람다식은 [[일급 객체(first class)]]이다. 즉 인자로 사용 될 수 있다. 반환 값으로 사용 될 수 있다 아래는 람다를 BNF (Backus-Naur Form)로 나타낸 것이다 람다식은 보다시피 상수, 변수, 함수 정의, 함수 적용이 가능한다. 함수형 언어에서 람다식에 관심을 두는 이유는 문법이 간단하기 때문이다. 보통의 프로그래밍 언어는 구문 뿐만아니라 의미까지 분석을 해서 생각해야 한다. 함수형 언어에서는 문법이 너무 간단..
함수형 프로그래밍이란 무엇인가 함수형 언어/프로그래밍의 느낌을 알기 전, 먼저 수학적 함수를 알고 가야 한다. 수학적 함수는 입력 값에 따라 출력 값을 만들어내는 블랙 박스와 같다 수학적 함수의 특징 입력 값에 따라 출력 값이 결정 된다 수학적 함수와 프로그래밍에서의 수학적 함수의 개념은 다르다 [[함수형 프로그래밍의 본질]] 함수형 프로그래밍 언어는 프로그램을 수학적 함수의 조합으로 본다 프로그램의 동작을 즉 수학적 함수로 표현한다 매개 변수로 값을 입력 받은 뒤 적절하게 처리하여 값을 출력한다 함수형 언어의 특징 명령형 언어와의 차이점 함수형 언어는 변수를 할당 할 때, 공간을 새로 할당 하지 않고, 순수 계산에 의존 합니다 명령형 언어는 메모리 공간에 값을 계속 바꾸며 상태를 추적합니다 상태의 개념..
프로그래밍 언어의 변천사 폰 노이만에 의해 세계 최초로 프로그램 내장 방식 컴퓨터 등장 일반적으로 말하는 프로그래밍 언어는 이 때부터 시작한다 프로그래밍 언어 살펴보기 포틀란 과학 응용 분야를 위한 효율성을 강초한 최초의 고급 언어 설계 목표 : 매우 빠르게 실행 되는 코드 생성 미리 메모리를 시스템에 넣어둬서 메모리 체크 필요 x 하드웨어 처음으로 부동 소수점 연산 가능 주요 기능 : 배열, For 반복문, 분기 if 문 등 코볼 사무용으로 설계된, 영어와 비슷한 구문을 갖는 명령형 언어 변수를 지정할 때 출력 포맷까지 정해져서 나온다 주요 기능 : 레코드 구조, 프로그램의 실행부와 분리된 자료 구조 다양한 출력 기능 등 LISP (List Processor) 리스트 자료 구조와 함수 적용을 기반으로 ..
명령형 언어란 무엇인가 폰 노이만 구조라 불리는 컴퓨터 구조를 기반으로 동작한다 컴퓨터가 수행해야하는 연속적인 명령문의 집합으로 구성된 언어이다 컴퓨터에게 실행되어야 할 정확한 순서와 방법을 지시한다 변수, 연산자, 제어구조 등을 사용하여 프로그램을 작성한다. 폰 노이만 구조와 명령형 언어가 친한 이유 명령형 언어는 폰 노이만 구조 기반으로 만들어졌기 때문에, 명령어를 순차적으로 실행하며 컴퓨터가 수행해야 할 작업을 처리하는 것이 가능하다 폰 노이만 구조는 내장형 메모리 구조를 가지고 있다 즉 명령어와 데이터가 같은 메모리에 저장되어 있다 이를 통해 명령어와 데이터를 동일한 방식으로 다룰 수 있으며, 명령어를 일관성 있게 처리할 수 있게 된다 사담 폰 노이만 구조는 병목 현상이라는 문제를 가지고 있지만,..
하이브리드 기법이란 컴파일 기법과 해석 기법을 혼합한 형태로 두 가지의 장점을 갖춤 인터 프리터에 비해 빠르고, 소스 코드 노출의 우려가 적다 운영체제에 종속 되지 않는다 고급 언어로 작성된 프로그램을 쉽게 해석 할 수 있도록 중간 코드 형태로 번역 번역 된 중간 코드 형태의 프로그램을 해석하여 실행 예시. Java 바이트 코드라고 하는 중간 코드로 번역 운영체제마다 별도로 존재하는 JVM이 바이트 코드를 실행 레퍼런스 컴파일(Compile) 기법은 무엇인가 하이브리드 언어의 장점
berom
'Computer Science/프로그래밍 언어론' 카테고리의 글 목록 (5 Page)