{Lecture}59 [컴파일러] BNF 정리 BNF (Backus–Naur Form)란 BNF는 프로그래밍 언어의 문법(Grammar) 을 형식적으로 표현하기 위한 표기법(Notation)을 말한다. 컴파일러의 구문 분석(Parsing) 의 근간이 된다. 프로그래밍 언어의 문법 구조를 분명하고 간결하게 표현할 때 주로 사용된다. 1950년대 후반에 존 배커스(John Backus)와 피터 나우어(Peter Naur)가 개발한 방법이라 'Backus-Naur Form'이라 부르게 되었다. BNF 표현 방법 ::= 표현식 BNF 예시 ::= + | - | ::= * | / | ::= ( ) | ::= 0 | 1 | 2 | 3.. 2025. 10. 23. [컴파일러] 촘스키 언어 계층 정리 - 문법 정리 Chomsky Grammar Hierarchy 문법을 표현 능력(Grammar Power)과 제약(Restrictions)에 따라 네 가지 계층으로 나눈 구조로, 안쪽에서 바깥쪽으로 갈수록 제약이 줄고, 표현 능력이 강해진다. 1. Type-3 Grammar (Regular Grammar, 정규 문법)가장 단순한 문법정규 표현식(Regular Expression)으로 표현 가능유한 오토마타(FA, Finite Automaton)로 인식 가능예: 이메일 형식, 전화번호 패턴 2. Type-2 Grammar (Context-Free Grammar, 문맥 자유 문법)정규 문법보다 강력푸시다운 오토마타(PDA)로 인식 가능프로그래밍 언어 문법 대부분이 여기에 속함 (if-else, 중첩 구조 등)예:.. 2025. 10. 23. [컴파일러] 컴파일러의 구조 (Front-End와 Back-End 구성과 역할) 컴파일러의 구조 컴파일러는 Front-end (전단부) 와 Back-end (후단부) 로 나뉜다.Front-end → 소스코드의 의미를 분석하고, 중간 표현(IR)을 생성하는 부분Back-end → IR을 최적화하고, 실제 기계어 코드로 변환하는 부분 컴파일러의 컴포넌트 컴파일러의 컴포넌트는 다음과 같이 나눠진다 1. Lexical Analyzer (어휘 분석기)문자 스트림(character stream)을 읽고, 토큰(token)으로 나눔 → a = b + c; → , , , , Token stream2. Syntax Analyzer (구문 분석기)토큰을 문법에 맞게 트리 구조로 분석 → 구문 트리(syntax tree) 생성. 즉, 프로그램의 구조(문법적 계층)를 파악함.Syntax.. 2025. 10. 23. [컴파일러] NFA -> DFA 변환 Deterministic Finite Automata (DFA)어떤 상황에서도 이동(transition)을 선택할 여지가 없다.→ 즉, 현재 상태와 입력 기호가 주어지면 다음 상태가 단 하나로 결정된다.→ “결정적(Deterministic)”이라는 말은 바로 이 뜻이다. Non-deterministic Finite Automata (NFA)적어도 한 경우에서 다음 상태로 가는 선택지가 여러 개일 수 있다.→ 즉, 같은 상태에서 같은 입력 기호로 여러 개의 전이(transition) 가 가능하거나,→ ε(엡실론) 전이처럼 입력 없이 이동하는 경우가 있을 수 있다.입력 문자열을 받아들인다는 것(accept) 은→ 여러 가능한 경로 중 하나라도 최종 상태(final state)에 도달할 수 있다면 Accept.. 2025. 10. 23. [컴파일러] 컴파일러란? 컴파일러란? 컴파일러란 무엇일까? 컴파일러는 개발자라면 무조건 들어봤을 용어이다. 컴파일러를 단순히 실행 코드를 만들어주는 프로그램이라고 이때까지 생각했었다. 하지만 컴파일러를 더욱 정확하게 말한다면 다음과 같이 설명할 수 있다. 컴파일러(Compiler)란 개발자가 작성한 고급 언어(C, Java, Python 등) 로 된 프로그램을 컴퓨터가 이해할 수 있는 저급 언어(기계어 또는 어셈블리어) 로 번역(translate) 해주는 프로그램이다. 개발자가 작성한 코드는 그대로는 컴퓨터가 이해하지 못한다. 그래서 컴파일러가 이 코드를 읽고, 구문 분석(syntax analysis) 과 의미 분석(semantic analysis) 등을 거쳐 기계어 코드로 변환한다. 이때 컴파일러는 단순히 코드를 변환.. 2025. 10. 22. [정보보호] 웹 보안 정리 웹 해킹웹 취약점 스캐너를 통한 정보 수집빠른 시간 내에 다양한 접속 시도를 수행할 수 있다는 장점.스캐너로 확인된 취약점이 실제 보안 문제가 아닌 경우가 많음 프록시 (Web Proxy)를 통한 취약점 분석웹의 구조 파악, 취약점 점검, 웹 해킹 시 웹 프록시 툴 사용.클라이언트에 설치되어 클라이언트의 통제를 받음.클라이언트가 웹 서버와 웹 브라우저 간에 전달되는 모든 HTTP 패킷을 웹 프록시를 통해 확인하고 수정 가능.대표적인 웹 프록시 툴: Burp Suite (http://portswigger.net/burp 에서 무료 버전 다운로드 가능). 서버에서 클라이언트로 전송되는 패킷 변조서버가 클라이언트로 전송하는 패킷의 변수 값을 조작하여 악용 가능.예시: 서버에서 전송한 $A = 20$ 값을 클.. 2025. 10. 18. [정보보호] 스푸핑 공격 스푸핑 공격 (Spoofing) 스니핑 공격이란?네트워크 상의 데이터를 도청,가로채는 공격 ⭐ 스푸핑 공격이란? 네트워크에서 신원을 위조하는 공격을 말한다. 스푸핑 공격은 여러 종류가 있다. ARP 스푸핑, IP 스푸핑, DNS 스푸핑이 있다. ARP 스푸핑 공격 MAC 주소를 속이는 공격으로, 로컬 네트워크에서 통신하는 서버와 클라이언트의 IP 주소에 대한 MAC 주소를 공격자의 MAC 주소로 속여 통신 흐름을 왜곡시킨다. ARP 스푸핑 과정:공격자가 Server의 Client에 $10.0.0.2$에 해당하는 가짜 MAC 주소 CC를 알리고, Server에는 $10.0.0.3$에 해당하는 가짜 MAC 주소 CC를 알림.공격자가 Server와 Client 컴퓨터에서 서로 통신하는 상대방을 자기.. 2025. 10. 18. [정보보호] 서비스 거부 공격: DoS와 DDoS 서비스 거부 공격 (Denial of Service, DoS) 다른 해킹에 비해 비교적 간단한 훼방 공격으로, 특정 서비스나 시스템의 정상적인 작동을 방해하여 사용자가 서비스를 이용할 수 없게 만든다. 취약점 공격형: 특정 형태의 오류가 있는 네트워크 패킷 처리 로직의 문제점을 이용하여 오작동 유발.보잉크(Boink), 봉크(Bonk), 티어드롭(Tear Drop)랜드(Land) 공격자원 고갈 공격형: 네트워크 대역폭, 시스템의 CPU, 세션 등의 자원을 소모시켜 시스템 마비.랜드(LAND) 공격죽음의 핑(Ping of Death)SYN 플러딩 공격HTTP GET 플러딩 공격, HTTP CC 공격동적 HTTP 리퀘스트 플러딩 공격슬로 HTTP 헤더 DoS (슬로로리스) 공격, 슬로 HTTP POS.. 2025. 10. 18. [기계학습] Multilayer Perceptron : MLP Multilayer Perceptron 퍼셉트론은 선형 분류기라는 점에서 한계가 있었다. XOR 문제에서 선형 분리 불가능한 상황에서는 일정한 양의 오류가 발생했다. 이러한 퍼셉트론의 단점을 보완하기 위해 MLP가 나오게 되었다. ⭐ MLP의 핵심 아이디어 1. 은닉층 추가 (Hidden Layer)입력층(Input Layer)과 출력층(Output Layer) 사이에 하나 이상의 은닉층을 둠.단층 퍼셉트론은 선형 분리 문제만 해결할 수 있지만,은닉층이 생기면 비선형 관계를 학습할 수 있음.즉, 입력 특징 공간을 더 분류하기 쉬운 고차원 공간으로 변환하는 역할을 함 2. 시그모이드 활성함수 도입 (Sigmoid Activation)출력이 0~1 사이의 연속적인 실수값을 갖게 됨.이를 확률적 해석.. 2025. 10. 17. 이전 1 2 3 4 ··· 7 다음