전공/프로그래밍 언어 및 컴파일러 (21) 썸네일형 리스트형 Lec09. Lexer & Parser Generators - 10주차 2강 11월 6일 - 10주차 2강* 개인 공부를 위해 정리한 것입니다. 정확한 내용은 꼭 본인이 공부하는 교재를 참고하시기 바랍니다. Goal: Useful Tools for Compiler ConstructionLexing and Parsing algorithmLexer: Thompson 알고리즘 및 Subset 구성Parser: top-down, bottom-up컴파일러 제작 도구lexer, parser 수동으로 안만들어도 됨. ocamllex, ocamlyacc로 자동화 가능ocamlyacc: LALR, OCaml용 parser 생성기(구문분석기)ocamllex: OCaml용 lexer 생성기(어휘분석기)Compiler Construction with ocamllex and ocamlyacc전반적으로 .. [컴파일러] 과제 환경 세팅 - WSL을 VSCODE로 열기 매우 간단쓰 1. vscode 열기- 확장 프로그램에서 WSL 검색해서 설치하기2. WSL 열기- VSCODE로 열고 싶은 폴더로 이동- 해당 폴더에서 code . 입력 * 번외파일탐색기에서 WSL 폴더 접근하기- 파일탐색기에서 \\wsl$ 입력 후 엔터- 바로 unbuntu 폴더가 팝업으로 뜸 즐거운 Ocaml 시간 되세요~ Lec08. Syntax Analysis (4) - 10주차 1강 11월 4일 10주차 1강* 개인 공부를 위해 정리한 것입니다. 정확한 내용은 꼭 본인이 공부하는 교재를 참고하시기 바랍니다. LR Parsing with Ambiguous Grammars1. LR Parsing with Ambiguous GrammarsLR 파싱은 LL 파서보다 더 복잡한 문법 구조를 처리할 수 있음. LR>>LLAmbiguous 문법의 문제LR 기술을 적용하려면 ambiguity를 제거해야 함 E→E+E∣E∗E∣(E)∣id 이와 같은 문법은 E→E+T∣T, T→T∗F∣F, F→(E)∣id 이와 같이 바꿔야 함unambiguous 하게 문법을 작성하는 건 어렵고, 불가능한 경우도 있음LR 기술은 disambiguating rules 를 바탕으로 ambiguous grammer에 적용될 .. Lec07. Syntax Analysis (3) - 8주차 1강/2강 10월 21일 8주차 1강 + 10월 23일 8주차 2강 1. Bottom-Up ParsingBottom up parsing: 입력된 문자열에서 시작해 점차 상위로 올라가며 parse tree를 구성하는 과정leaf에서 시작해서 root로 작업이 진행됨문자열 w를 start symbol을 사용해서 점점 reducing하는 과정Reduction: production rule를 역방향으로 적용. production의 body를 head로 교체함id*id 예시에서, id*id가 순차적으로 축소되어 최종적으로 시작 기호 E로 변환 됨.Rightmost Derivation의 역순으로 구성됨. production rule을 역으로 적용해서 최종적으로 start symbol로 도달함.Expression Grammar.. Lec06. Syntax Analysis(2) - 7주차 1강/2강 10월 14일 7주차 1강 + 10월 16일 7주차 2강* 개인 공부용으로 정리했습니다! 정확한 내용은 본인이 공부하는 자료를 참고해주세요. 오늘의 대주제: Top-Down Parsing 1. Top-Down ParsingTop-Down Parsing의 정의주어진 입력 문자열에 대해 parse tree를 구축하는 과정parse tree의 root에서 시작해서 tree를 preorder로 순회(root-왼-오)하며 input 문자열과 일치하는 leaf까지 진행input 문자열에 대한 leftmost derivation을 찾는 과정과 동일하게 볼 수 있음모든 문법이 top-down parsing 알고리즘으로 분석될 수 있는 건 아님분석할 수 있게 grammar를 재작성해야 함Eliminating Ambig.. Lec05. Syntax Analysis (1) - 6주차 1강 10월 7일 6주차 1강* 개인 공부용으로 정리한 것입니다. 정확한 내용은 본인의 교재를 꼭 확인하시기 바랍니다. 1. Roadmap for Building a ParserParser는 Token Stream을 입력받아 Syntax Analyzer로 Syntax Tree를 출력한다Specification: 문법을 어떻게 표현할 것인가? (1+3)은 올바르지만 (1+3는 오류를 발생한다문법을 정의하기 위해 CFG를 사용한다Parsing: 구문 분석: 주어진 토큰 시퀀스 s에서 s∈L(CFG)인지 확인하고, Syntax tree 생성하는 법Top-down, Bottom-up 구문 분석 알고리즘 사용2. Context-Free GrammerV: 유한한 variable의 집합. non terminal symbo.. Lec-OCaml. Functional Programming in OCaml (4주차 2강, 5주차 1/2강) 9월 25일 4주차 2강 + 9월 30일 5주차 1강 + 10월 2일 5주차 2강 * 본 글은 개인 공부용으로 정리한 것 입니다. 정확한 내용은 본인이 공부하는 자료를 참고하시길 바랍니다!! OCaml이 진짜 문대...그게문데문대...나는 high level만 먹는다고... 1. Introduction1.1. Functional Programming?함수: first-class변수에 저장된다다른 함수의 인자로 전달될 수 있다다른 함수의 반환값으로 사용할 수 있다expression-oriented: 계산 과정이 값을 변형하지 않고 표현식으로 기술된다...(아래 참고)imperative version: 명령형 방식, int factorial(int n)에서 r을 계속 갱신하면서 계산functional ver.. Lec04. Lexical Analysis (3) (2주차 2강, 4주차 1강/2강) 수업: 9월 11일 2주차 2강 + 9월 23일 4주차 1강 + 9월 25일 4주차 2강 (3주차 1강, 2강은 추석으로 휴강)* 본 자료는 제 개인 공부용으로 정리한 것입니다. 정확한 자료는 꼭 본인이 공부하는 교재를 참고하시길 바랍니다. 9월 11일 2주차 2강1. Construction of DFAMethodology: lexical specification을 동일한 string recognizer로 변환한다Regular Expression, 정규 표현식: 특정 패턴의 문자열을 정의Lexical Specification: 특정 언어에서 허용되는 문자 패턴을 정의String Recognizer: 입력된 문자열이 주어진 규칙(RE)과 일치하는지 판별DFA: state와 transition을 사용해 문자.. Lec03. Lexical Analysis(2) (2주차 1강) 2주차 1강 - 9월 9일 월요일, Lexical Analysis 1. String Recognition using Finite AutomataFinite Automata정의: yes or no를 return하는 string recognizer이 string에 accept 가능한가? 아닌가?를 판별한다.종류Non-deterministic Finite Automata(NFA)Deterministic Finite Automata(DFA) 2. Possibility of Correct String Recognition문자열 s, 패턴 R문자열 s가 어떤 Finite Automata에 속하는지 확인하고 싶다.즉, s가 L(R)에 존재하는지 확인하고자 한다.패턴 R을 인식하는 Finite Automata를 찾고,.. Lec02. Lexical Anaylsis(1) (1주차 2강) 1주차 2강 - 9월 4일 수요일, Lexical Analysis(1) Specification of Tokens* 연관 단원: CPTT Ch3.3* 제 개인 공부용으로 정리하는 글입니다.* 정확한 내용은 꼭 본인이 공부하는 교재를 확인하시길 바랍니다. 1. Roadmap for Building a Lexical Analyzer- Specification: valid lexeme pattern을 어떻게 표현할 것인가? ex) C언어에서 가능한 변수 선언은 x, xy, match0, _abc 등 -> 이걸 정의하는 것을 regular expression이라고 함!- Recognition: valid lexical pattern을 어떻게 accept할건가? invalid lexical patter.. 이전 1 2 3 다음