본문 바로가기
공부/프로그래밍 언어론

[프로그래밍 언어론] 10. 구문론

by 맑은청이 2021. 4. 13.
728x90
반응형

Defining Languages (프로그래밍 언어 정의)

구문(syntax)와 의미(semantics)

구문은 트리를 정의하는 것과 유사, 계층적 정의 

구문을 다루는 건 구문론이고 의미를 다루는 건 의미론 

 

 

 

 

저번주 복습

Fortran - 과학

Lisp - AI

Algol - 알고리즘 

Cobol - 사무용

이를 통합하자! 하고 만든 게 PL/I

급하게 만들다보니 PL/I 가 너무 커져서 이해하기 힘들었음 

시분할 시스템 OS인 MULTICS와 함께 사용 

너무 큰 프로그램이라 PL/I 를 C 로 MULTICS를 UNIX 로 축소화 시킴 

C는 아주 간단, 대조적은 언어임. 작은 언어.

BASIC의 교육열을 이어사 PASCAL이 나옴 이와 유사한 SMALLTALK 나오고 SIMULA의 영향을 많이 받은 Smalltalk, Lisp의 발전이라고 할 수 있는 Scheme, Fortran이 계속 발전한 Fortran77이 개발 

 

smalltalk의 영향을 받은 객체지향 언어 Objective-C , Simula에 영향을 받은 C++, Lisp 을 통일해보자해서 나온 Common Lisp , 그리고 Perl,Tcl같은 스크립트 언어가 발전하기 시작 

객체지향 언어는 GUI 와 더불어 발전했다는 걸 기억 

 

90년 대부터 데이터가 발전했고 이는 스크립트와 함께 발전 

파이썬 탄생, Java와 C#도 발빠르게 인터넷 언어로 발전, Fortran은 계속 발전 , 파스칼은 GUI와 더불어서 Delphi와 함께 나옴

자바스크립트와 파이썬은 객체지향느낌이 약간씩 남

Ruby, Delphi는 객체지향언어

 

함수형 언어는 Lisp, APL, Scheme, Haskell, CommonLisP

함수형 언어도 천천히 발전하고 있고 현재는 패러다임이 섞여들어가고 있음 

 


 

언어를 어떻게 정의할지 Syntax는 무엇인지 Syntax를 나타낼 수 있는 문법을 보고 이 문법의 모호성을 보고 문법의 단점을 해결하기 위해 나온 BNF, EBNF ,Syntax Chart 등 을 배워봄 

 

 


언어는 규칙의 집합

 

형태에 관한 규칙(Syntax)

의미에 관한 규칙 (Semantics)

 

누구에게 언어의 정의가 필요하나

언어 디자이너, 구현자, 사용자(프로그래머들)

 


Syntax

보통 Formal Language로 설명 

C언어는 C로 작성할 수 있는 모든 프로그램(Hello.c, gcd.c .....)의 집합 

Hello.c 프로그램 1 , gcd.c 는 프로그램 2,... 이렇게 무수한 프로그램들 중 하나를 Sentence라고 정의 

char sequence 가 있고 단어 sequence 가 있는데 Lexeme 가 단어임

여기에 단어에 있는 분류를 Token 이라고 함

정수는 0~9 까지의 집합으로 있다고 했을 때 011 도 정수임

비슷한 영역의 집합(정수같은) 을 Token 이라고 함 

 

예시 

여휘 요소 (단어) = Lexeme

int 

main

(

)

{

return

printf

)

 

토큰 

int - INT_TYPE

main - ID

( - LPAREN

) - RPAREN

 

 

Quadruple(V,T,S,P)

v:  N

T : constants 바꿀 수 없는거 

S : stant symbol

P : a set of rules(생성 규칙)

 
인식기는 오토마타 

 

Algol 만들었는데 매우 유사하네 하고 합친게 BNF 

BNF는 텍스트 표기 방법 

표현력이 CFG와 같음 

 

CFG는 규칙의 집합

 

아래 사진 중 파스칼 부분은 좌변이 우변으로 바꿀 수 있다는 규칙을 명시함

는 이것도 가능 이라는 의미이다.

 

 

정리

언어는 규칙의 집합이고 언어는 형태에 대한 정의 - 구문론 과 의미에 대한 정의 - 의미론이 있음 

Formal Language는 Syntax를 정의하기 위한 언어 

language, sentences, token, lexeme 로 구성 

여기서 language와 token 은 SET임 

sentence 하고 lexeme는 SEQUENCE

 

왼쪽항은 오른쪽 항의 서브셋

regular(type3) - FA < context-free(type2) - PDA < context-sensitive(type1) - LBA < unrestrictedone(type0) - TM

오토마타는 설명 안 함

 

N - 비단말기호

T - 단말기호

P - 생성 규칙

S - 시작기호

 

728x90
반응형