컴파일러개론 4

[컴파일러개론] 기말고사 정리

12주차 symbol tables semantic analysis(의미분석) - scope관련 : 변수가 선언되기 전에 쓰였나? 두 번 정의됐나? - type관련 : 변수와 assign되는 값과 타입이 맞는가? 1. 한 lexical마다 한 symbol table 2. scope들은 계층구조를 가짐 local 구조 : hash table 사용 global 구조 : n-ary tree(계층구조) -> 포인터 유지 등의 비용때문에 트리 안쓰고 stack 씀 hierarchies of local tables 제일 마지막에 접근된 것이 바로 접근된다. type checking 타입 : 값의 범위, 어떤 조건을 만족하는지 타입을 선언하고(binding), 검사(checking) static vs dymanic c..

공부 2022.12.19

[컴파일러개론] 기말고사 정리

9주차 SDD(Syntax Directed Definition) 파싱 단계에서 의미있는 일을 할 수 있도록 semantic action을 적어놓음 파서 생성기(yacc)에서 주로 사용 lhs에 메모리가 있어 결과를 저장한다. $$, $1, $2, ... 이름은 rule local Listener style in Antlr(LL파서) Type Declaration 속성의 종류 synthesized attr - bottom up으로만 이루어진 - children에 의해 계산 inherited attr - parent, sibling에 의해 계산 AST(Abstract Syntax Tree) 파스트리에서불필요한 정보를 제거한형태 AST 만들기 1. 파싱단계에서 만들기 - LL : 유도할때 - LR : redu..

공부 2022.12.19

[컴파일러개론] 중간고사 정리 - Syntax Analysis

Syntax Analysis 어휘분석 후 토큰들을 구문분석기(파서)를 이용해 파스 트리를 구성한다. Syntax Analysis와 관련된 질문들 1) 문법을 기술하는 방법 2) input token stream이 기술된 문법에 맞는지 판별하는 방법 1) 문법을 기술하는 방법 CFG(Context Free Grammar) 표현된 문법으로부터 자동적으로 인식기를 구현할 수 있다. G = (N, T, P, S) N : non-terminal 심벌 집합 (중간과정 심벌) T : terminal 심벌 집합 P : 생성규칙 집합 S : 시작 심벌 L(G)는 이 문법으로 생성되는 언어 정규표현식은 Nested 구조의 구문을 표현하기에 power가 떨어진다. => 문법 기술에는 적합하지 않음 BNF(Backus-Nau..

공부 2022.10.18

[컴파일러개론] 중간고사 정리 - Lexical Analysis

Lexical Analysis 소스코드는 전처리기(preprocessor)를 통해 #include, #defines, #ifdef등 전처리 과정을 거치고, 전처리된 소스코드는 - Lexical(어휘) Analysis - Syntax(구문) Analysis - Semantic(의미) Analysis 세 가지 분석을 통해 추상 구문 트리(중간 코드)가 된다. Lexical Analysis 어휘분석기의 대표적인 예로는 Scanner가 있다. 문자열을 차례대로 검사하여, 의미 있는 최소 단위(토큰)로 쪼개주는 것을 어휘 분석이라고 한다. 어휘 분석 과정에서 space 같은 것들을 제거하여 코드의 크기도 줄일 수 있다. 토큰(Token) 문법적으로 의미 있는 최소단위 - 식별자, 키워드, 상수, 연산자, 문자열 ..

공부 2022.10.18