일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자연어처리
- css
- 파싱
- Linear Algebra
- 클래스
- React
- 운영체제
- 파싱테이블
- 랩실일기
- 컴파일
- 객체지향설계
- 정보검색
- 애자일
- DB
- 언어모델
- 데이터분석
- C언어
- Agile
- 스케줄러
- 벡터
- 프로세스
- 컴파일러
- OS
- 836
- NLP
- 소프트웨어공학
- 웹소프트웨어
- 데이터베이스
- 가상메모리
- 오픈소스웹소프트웨어
- Today
- Total
목록컴파일러 (15)
observe_db
알파벳과 스트링 잘 정의된 언어는 문장으로 구성 알파벳은 문장을 이루는 기본적인 심볼 알파벳: 심벌들의 유한집합 스트링(문장, 단어): 알파벳 T에 속하는 하나 이상의 심벌의 나열 길이: 스트링을 이루는 심벌의 갯수. |ω|로 표시 empty 스트링: 스트링 길이가 0인것. ε또는 λ로 표시 T*: 알파벳 T에 대해서 empty스트링까지 포함한 모든 스트링의 집합 접속(concatenation): 스트링을 연속으로 연결한 것. u●v를 보통 uv로 표기 u=a1a2a3a4...an, v=b1b2b3...bm, u●v=a1a2a3...anb1b2b3...bm uε = u = εu ∀u,v ∈T*, uv∈ T* |uv| = |u| + |v| a^n : n개의 a. 문자 ω의 반전은 문자 ω에 반전표시를 (ω..
4/14 일단 이친구가 예제이다. %{ #defineIF100 #defineID101 #defineRELOP102 #defineLE201 int yylval, tok; %} delim[ \t\n] ws{delim}+ letter[A-Za-z] digit[0-9] id{letter}({letter}|{digit})* %% {ws}(/*do nothing */} if{yylval = 0; return(IF); } {id}{yylval = install_id(); return(ID); } "
4/13 Yet Another Compiler-Compiler(YACC) : CFG(Context-Free Grammar)와 각 문법에 해당하는 명령(Action)을 받아 프로그램 생성 Lex와 Yacc의 모델 파서 액션 (LR Parser): shift reduce, accept, error shift: 파서는 어휘 분석기를 호출하여 토큰을 가져오고 이를 stack에 push reduce: rule에서 제공한 사용자 코드 실행. return한 후 reduction이 수행(stack의 handle이 축소되어 LHS의 비단말 기호로 변경) 스택이 현 상태를 유지하면서 value stack은 어휘 분석기와 규칙들과 관련된 동작들로부터 값을 가지며 평행하게 작동. 입력 명세 declarations//(선언) ..
4/7 Lex(A Lexical Analyzer Generator) 입력된 정규표현과 명령을 프로그램 언어로 변환 yylex 함수는 입력 문자열에서 정규표현을 인식하고 발견된 각 정규표현에 해당되는 특정 명령들을 실행한다. [1] 소스 형식(*.l) definition //정의 %% rules //규칙 %% //이하 생략 가능 user routines // 사용자 부 프로그램 definitions: 선언부+ 마크로 정의 선언부 %{ }% 사이의 코드 Lex에 의해 아무 처리 없이 lex.yy.c의 앞부분에 복사 매크로 정의 Lex 규칙의 정규 표현에 사용할 표현을 미리 정의(간단하게) 중괄호 안에 매크로 정의 포함하여 사용. 규칙(rules) 문법 규칙을 표현 규칙에 대해 처리해야 할 명령어 나열 rul..