전체 글(151)
-
프로젝트 환경설정
프로젝트 생성 라이브러리 살펴보기 gradle 의존관계 보기 ./gradlew dependencies --configuration compileClasspath IntelliJ에서 gradle 의존관계 보기 View 환경 설정 스프링 부트 thymeleaf viewName 매핑 resources/templates/ + {ViewName} + .html 정적 html viewName 매핑 resources/static/ + {ViewName} + .html 서버 재시작 없이 View 파일 변경 spring-boot-devtools 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-devtools' view 파일 변경 후 Recompile 하고 웹..
2023.09.29 -
Context Free Grammar
Context free grammar(CFG) $G = (V_N, V_T, P,S)$ $V_N$ : non-terminal symbols들의 집합 $V_T$ : terminal symbols들의 집합 $V_N \cap V_T = \varnothing, V_N \cup V_T = V$ $P$ : productions $\alpha \rightarrow \beta, \alpha \in V^+, \beta \in V^*$ $\alpha \in V_N, \beta \in V^*$ $S$ : 시작 기호(non-terminal symbol) Context free language(CFL) context free grammar에 의해 생성된 언어 $L(G) = \{w|w \in V_T^*\space and\space..
2023.09.28 -
Lex
Lex란? 어휘 분석기(Scanner)를 생성하는 프로그램 문자 입력 스트림의 어휘적 처리를 위해 디자인된 프로그램 생성기 입력 : 정규 표현, 일부 코드 출력 : 프로그램 source(정규표현, 일부 코드 조각) → lex → yylex(프로그램을 만드는 분석기) 입력 → yylex → 출력 어휘 분석 단계를 수행하기 위해 파서 생성기와 함께 사용됨 lex : 정규 표현만 인식 Yacc : context free grammar를 인식하는 parser 생성 입력 토큰을 인식하기 위한 저수준의 분석기가 필요 어휘 수준에서 변환, 분석, 통계정보 수집을 위해 단독으로 사용됨 Lex with Yacc 통계정보를 위한 Lex Lex의 일반적인 형식 {definitions} %% {rules} %% {user s..
2023.09.28 -
Lexical analysis
어휘 분석(Lexical analysis, Scanning) 소스코드를 읽고 토큰으로 나누는 것 토큰 : 의미를 가지는 문자열 토큰은 파서에서 처리 토큰 종류 예약어 : if, then 특별한 기호 : +, -, ... integer, double, float, 구분자 입력된 문자열에서 토큰을 인식 lexeme : 토큰을 구성하는 실제 문자열 token : lexeme이 속하는 일반적인 클래스 에러가 거의 감지되지 않음 유효한 토큰 or 유효하지 않은 토큰 위치를 벗어난 토큰, 선언되지 않은 변수, 철자가 틀린 키워드 등을 찾을 수 없음 정규 표현의 확장 1번 이상 반복 $(0+1)(0+1)^* or (0|1)(0|1)^* \rightarrow (0|1)+$ 어떤 문자 메타문자 .(period) : 매칭..
2023.09.28 -
Finite Automata
Finite automata 유한오토마타(Finite automata) 정규 언어인지 아닌지 판단하는 인식기 유한 전이 그래프 유한개의 상태들 특정 상태에서 어떤 입력을 받으면 다른 상태로 전이하는 것을 표현 시작 상태에서 목표 상태까지 도달이 가능하면 인식이 가능한 언어이고, 도달할 수 없으면 인식 불가능한 언어 정규 언어를 인식하는 수학적 모델 어휘분석기 사용 Deterministic / Non-Deterministic finite automata Deterministic finite automata(DFA) $D = (Q,\Sigma, \delta, q_0, F)$ $Q$ : 상태들의 집합 $\Sigma$ : 입력 기호(알파벳)들의 집합 $\delta$ : 전이 함수, $\delta : Q \tim..
2023.09.28 -
Regular expression
Regular expressions(정규표현) 정규표현(Regular expression) 정규언어를 표현하는 대수적인 방법 e가 정규표현이면 L(e)는 e를 정의하는 언어 정규표현의 정의 a가 어떤 기호이면, a는 정규표현이고, L(a) = {a} $\epsilon$은 정규 표현이고, L($\epsilon$) = {$\epsilon$} $\varnothing$은 정규 표현이고, L($\varnothing$) = $\varnothing$ 유도식 r과 s가 정규 표현이면, r+s도 정규 표현이고, $L(r+s) = L(r) + L(s)$ + 대신에 | 를 쓰기도 한다. L(r|s) = L(r) $\cup$ L(s) {r, s} r과 s가 정규 표현이면, rs도 정규 표현이고, $L(rs) = L(r)L(s..
2023.09.28