2021. 7. 5. 23:32ㆍ개발 관련 학습정리/컴파일러 만들기 (이론)
컴퓨터가 말하는 언어로, 정확하게 표현하기 위해 문법을 알아야 한다.
형식 언어를 이해하고 형식 문법을 이해해야 추후에 어휘를 분석할 수 있다.
기본 용어
정의 - Alphabet
Formal Language에서의 Alphabet은
언어의 문장을 이루는 기본 심볼이다.
정의 - String
알파벳 집합에 대한 기호들을 나열한 유한 수열으로,
{a,b,c} 일때 ccba는 string 이다.
문자열 연산
Length of String
심볼의 갯수를 세는 것으로,
{a,b,c} 집합에서의 aba의 length는 3이고,
{do, case, while} 집합에서의 docase 는 length가 2이다.
Concatenation of String
두개 이상의 문자열을 연결하여 문자열을 만드는 것으로,
u = a1a2a3 ... , v = b1b2b3 이면
uv = a1a2a3..b1b2b3.. 가 된다.
식은
으로 표현한다.
공문자열
문자열의 길이가 0인 문자열을 나타낸다.
ϵ 표시로 나타내며 접속 연산의 항등원이다.
알파벳에 지수가 0으로 표기된 것 또한 공문자열이다.
접두사, 접미사, ∑∗
알파벳 ∑ 에 대해 접속 연산에 의해 만들어질 수 있는 모든 문자열의 집합이다.
언어 정의
C언어를 예로, 알파벳 모두와 언더바, 숫자가 집합으로 포함되어 있을 때 ∑∗ 가 변수명으로 정해지지 않는다.
숫자가 앞으로 왔을때 (예 : 123_a) 와 같은 변수명은 예외를 시켜줘야 하기 때문에
∑∗ 에 조건을 걸어야 한다.
조건을 거치고 난 뒤 집합을 language L이라고 한다.
L도 마찬가지로 일어날 수 있는 모든 경우의 수를 L∗, L+로 나타낼 수 있다.
'개발 관련 학습정리 > 컴파일러 만들기 (이론)' 카테고리의 다른 글
6 - Regular Language (Finite Automata) (0) | 2021.07.12 |
---|---|
5 - Regular Language (Regular Expression) (0) | 2021.07.09 |
4 - Formal Language Grammer (0) | 2021.07.07 |
2. 컴파일러의 실행 단계 (0) | 2021.06.28 |
1. 컴파일러와 인터프리터 (0) | 2021.06.28 |