Computer Science/프로그래밍 언어론

구문 분석(syntax analysis) 구문 분석(syntax analysis)은 소스 코드를 구문적으로 분석하여 프로그램의 구조를 분석하고, 이를 통해 프로그램이 올바른 구조로 작성되었는지 검사하는 과정입니다. 구문 분석은 프로그래밍 언어의 문법 규칙을 따르는지 검사하며, 일반적으로 컴파일러나 인터프리터에서 수행됩니다. 구문 분석 과정에서는 프로그래밍 언어의 문법 규칙을 나타내는 문법이 사용됩니다. 문법은 토큰(token)과 규칙(rule)로 이루어져 있으며, 토큰은 문법적으로 의미 있는 최소 단위이고 규칙은 토큰의 조합을 나타냅니다. 구문 분석기는 이러한 문법을 사용하여 소스 코드를 토큰으로 분해하고, 토큰의 조합이 문법 규칙을 따르는지 검사합니다. 구문 분석 과정은 프로그래밍 언어의 구조를 이해하..
객체 지향 언어 객체 지향 언어는 프로그래밍의 다른 패러다임인 명령형, 함수형, 논리형 언어와 함께 사용할 수 있는 프로그래밍 패러다임입니다. 객체 지향 언어의 등장 계기는 주로 코드의 유지보수와 대규모 시스템을 다루기 위한 목적이었습니다. 객체 지향 프로그래밍은 데이터와 데이터와 관련된 기능을 클래스라는 구조로 묶어 처리하는 방식입니다. 이를 통해 데이터와 기능을 함께 캡슐화하며, 코드의 재사용성과 모듈성을 높입니다. 이러한 특징은 유지보수의 용이성과 대규모 시스템 개발에 큰 이점을 가져다 줍니다. 객체 지향 언어는 현재 프로그래밍 분야에서 매우 인기있는 패러다임으로 인식되고 있으며, 대표적인 객체 지향 언어로는 Java, C++, Python, C# 등이 있습니다. 이러한 언어들은 객체 지향의 개념을..
함수형 언어 함수형 언어는 명령형 언어와 달리, 사람에게 친화적이고 추상화된 프로그래밍 패러다임을 추구하고자 생성 되었다 이를 통해 프로그래머가 사람의 생각과 가까운 방식으로 코드를 작성할 수 있다. 함수형 언어는 함수와 논리형 언어의 개념을 기반으로 하며, 코드를 더 간결하고 이해하기 쉬운 형태로 표현할 수 있다. 이러한 특성 덕분에 함수형 언어는 코드의 예측성과 가독성을 높이며, 테스트와 디버깅에 유리하다. [[@최지우]] 간사님 : 최근 언어에 함수형 프로그래밍을 접목하는 시도가 늘어나고 있다 고차 함수란, 함수 자체를 인자로 전달하거나 반환 값으로 사용할 수 있는 함수를 말합니다. 이를 통해 코드를 더 간결하게 작성하고, 더 유연한 프로그래밍 스타일을 지원할 수 있습니다. 최근에는 함수형 프로그래..
리스트를 다루는 연산 문법 자체는 일관성이 있고 간단하다 함수 자체를 매개 변수로 전달 할 수 있다 Dynamic typing 동적 타입 지원 꼬리 재귀(tail recursion) 최적화 데이터 타입은 Atom, List 기타 등등 일단은 2가지로 표현 된다 Atom : symbol과 number로 표현한다 List s-expression 리스프 언어에서는 모든 데이터나 코드를 트리로 표현 할 수 있음 리스트 프로세싱 언어라 이름을 가진 이유는 그 당시에는 리스트에 최적화 된 언어는 혁신이었다 앞에 ’ 도 신경 써야 함 car 처음 요소를 반환한다 cdr 첫 번째 것 빼고 나머지를 반환한다 cdr을 먼저하고 car을 하는거임 이게 우선순위가 그냥 뒤에서부터 차례대로 실행하는구조임 일종의 스택 같기도 하..
프로그래밍 언어 설계 원칙 효율성 목적 코드의 효율성 : 번역기가 효율적인 실행 코드를 생성 할 수 있어야 함 일반적으로 정적 코드가 효율이 더 좋습니다. 예를 들어, 파스칼과 C 언어는 타입 처리를 컴파일 시점에 해결하여 실행 시 효율적입니다. 반면, 파이썬은 런타임 때 타입 체크를 하기 때문에 실행 속도가 느려집니다. 번역의 효율성 번역기가 효율적으로 코드를 생성 할 수 있어야 한다 코드 최적화를 통해 더 효율적인 실행 코드를 생성합니다. 구현 용이성 : 설계된 언어로 얼마나 빠르고 쉽게 프로그램을 작성 할 수 있는가 이는 언어의 구문, 표현력, 라이브러리 지원 등이 사용자의 편의를 높여줄수록 좋습니다. 일반성 일반성은 밀접한 관련 개념들을 하나의 일반적인 것으로 결합하는 성질을 말합니다. 예를 들어..
형식 언어 (3) - 형식 문법 표현 방법 형식 언어(formal language)는 규칙적인 구조와 규칙에 따라 생성된 문자열의 집합입니다. 이러한 규칙은 문법(grammar)이라고도 하며, 형식 언어는 이러한 문법에 따라 생성된 문자열들의 집합으로 구성됩니다. 형식 문법은 크게 2 가지 방법으로 정의 할 수 있습니다. 생성 규칙 만을 가지고 표현하거나 G = Vn,Vt, P, S로 정의하는 것입니다 오늘의 규칙 대문자로 표기된 기호와 시작 기호를 나타내는 기호 S는 논터미널 기호입니다. 로 묶어서 나타낸 기호도 논터미널 기호입니다. 소문자 영문자, 연산자 기호, 구분자, 숫자 등은 터미널 기호입니다. 대문자 끝부분의 기호는 터미널과 논터미널 기호를 나타내는 문법 기호입니다. 소문자 영문자는 터미..
형식 언어 (2) - 언어 형식 언어(formal language)는 규칙적인 구조와 규칙에 따라 생성된 문자열의 집합입니다. 이러한 규칙은 문법(grammar)이라고도 하며, 형식 언어는 이러한 문법에 따라 생성된 문자열들의 집합으로 구성됩니다. 오늘 설명할 언어는 의미(Semantic)의 개념은 포함하지 않습니다 L은 언어를 뜻합니다 두 언어의 합집합 두 언어의 접속 L의 거듭 제곱 즉 거듭 제곱한 만큼 뽑는 경우의 수 문제입니다 클리니 클로저, 포지티브 클로저 유도 정의된 문법으로부터 어떤 언어가 생성되는지, 언어가 문법에 맞는지를 알기 위해 유도를 설명한다 α, β 등 그리스어 소문자는 문법 기호로 구성된 문자열을 나타냅니다. 한 번 이상의 유도는 *가 아니라 +로 위에 것을 바꿔야 합니다 유도라..
형식 언어 (1) 문자열 형식 언어(formal language)는 규칙적인 구조와 규칙에 따라 생성된 문자열의 집합입니다. 이러한 규칙은 문법(grammar)이라고도 하며, 형식 언어는 이러한 문법에 따라 생성된 문자열들의 집합으로 구성됩니다. 형식 언어는 컴퓨터 과학에서 중요한 개념으로, 프로그래밍 언어, 데이터베이스 쿼리 언어, 통신 프로토콜 등 다양한 분야에서 사용됩니다. 형식 언어는 종류에 따라 위의 4가지로 분류가 됩니다 형식 언어 정의 1. 알파벳 : 언어의 문장을 이루는 기본적인 기호 알파벳이란 공집합이 아닌 기호들의 유한 집합으로 시그마로 표시한다. 알파벳의 의미는 일반적인 프로그래밍 언어에서 사용하는 문자,기호의 집합이다 2. 문자열 : 알파벳에 대한 문자열은 알파벳에서 정의 된 기호들..
어휘 분석부터 구문 분석까지 실습 어휘 분석기의 소중함을 배워보자 어휘 분석기의 유무에 따라 어떻게 식을 인식해 가는지 과정을 봅시다 foo = (bar - 60) 어휘 분석기가 없는 구문 분석 간단한 C 언어 문법 (1) ::= (2) ::= = ; (3) ::= (4) ::= + | - | (5) ::= * | / | (6) ::= | | ( ) (7) ::= (8) ::= ( | _){ | | _} (9) ::= {} (10) ::= a |⋯| z (11) ::= 0 | 1 | ⋯| 9 어휘 분석 토큰 단위 분리 : foo | = | ( | bar | - | 60 | ) | 식별자 : foo, bar 연산자 : = , - 상수 : 60 구분자 : ( , ) , ; 구문 분석 구문 분석(Syntax ..
BNF (Backus-Naur Form) BNF (Backus-Naur Form)은 프로그래밍 언어의 문법 규칙을 표현하기 위한 메타언어입니다. BNF는 규칙을 생성하기 위한 표기법으로 LHS(left-hand side)와 RHS(right-hand side)로 구성되어 있습니다. LHS는 한 개의 논터미널(Non-terminal)로 구성된 문자열로 표현되며, BNF에서는 각괄호()를 사용하여 표현합니다. RHS는 터미널(Terminal)과 논터미널로 구성된 문자열로 표현되며, BNF에서는 각괄호를 사용하지 않고 표현합니다. 즉, 위 예시에서 ''와 ''가 LHS에 해당하며, ‘|’, ‘,’ 등으로 구분된 'id’와 ‘’, 그리고 ''와 ''가 RHS에 해당합니다. BNF 문법은 문법 전체를 형식적으로 ..
berom
'Computer Science/프로그래밍 언어론' 카테고리의 글 목록 (4 Page)