컴파일러: 언어를 번역하는 프로그램
Regular language를 인식하기 위한 오토마타한정된 전이 그래프, 간선에 알파벳이 있다.Deterministic finite automata$Q$: A finite set of states$\\sum$: A finite set of input symbols(
Context Free Language대부분의 프로그래밍 언어가 속해있다.$\\alpha \\rightarrow \\beta , \\alpha \\in V^+, \\beta \\in V^\*$$\\alpha \\in V_N, \\beta \\in V^\*$문장을 트리
푸시마타 오토마타는 CFG를 인식하기 위한 오토마타$Q$:states 집합$\\Sigma$: input symbols$\\Gamma$: 스택에 저장되는 심볼$q_0$: start state$Z_0$: 스택의 start 심볼, 라지 감마에 포함$F$: final stat
Left most derivationrecursive descent parsing: 백트랙킹 사용으로 비효율, 무한루프 때문에 좌재귀를 없애야 한다.LL(k)백트랙킹이 없다.파싱 과정stack/input/action시작 심볼을 stack에 넣는다.generate/mat
Right most derivationshift: input에서 stack의 top으로reduce: production을 역으로 수행stack과 input에 대한 lookahead$S'$이 추가된 문법$L(G')=L(G)$$V_N'=V_N \\cup S'$$P' = P
프로그램의 semantic은 의미를 뜻한다.구문상으로 올바른 문법이어도 의미상 틀릴 수 있다.CFG가 모든 프로그래밍 언어를 표현 불가능CFG에서 Attribute를 활용한 문법심볼마다 속성을 가진다.속성은 여러 개 가질 수 있다.합성:$S(X_0)=f(A(X_1),
컴파일러 고수준 언어를 저수준 언어로번역 인터프리터 소스 프로그램을 실행