본문 바로가기

이론31

LL Parsing과 LR Parsing 1. LL Parsing(Left Leftmost derivation) : 왼쪽에서 시작하며 좌측유도 방식으로 파싱 - ANTLR에서 사용 - TopDown 방식이다 - Example 규칙은 아래의 3가지 1) S -> C 2) S -> ( S * C ) 3) C -> n 입력 문자열 : ( n * n ) 파싱은 다음과 같은 순서로 진행된다. 1. S 초기상태 2. ( S * C ) 규칙 2 적용 3. ( C * C ) 규칙 1 적용 4. ( n * C ) 규칙 3 적용 5. ( n * n ) 규칙 3 적용 2. LR Parsing(Left Rightmost derivation) : 왼쪽에서 시작하며 우측유도 방식으로 파싱 - Yacc, Bison에서 사용 - BottomUp 방식이다. - Example.. 2018. 6. 27.
[SQL]특수 문자가 포함된 데이터베이스명 특수문자가 포함된 데이터베이스를 생성할 때는 데이터베이스명을 대괄호[]로 감싸줘야한다. ex) tes-t 라는 데이터베이스를 만들고 싶다면CREATE DATABASE [tes-t]라는 쿼리를 실행해야한다. 2018. 4. 4.
[항목55]Boo자유친! 부스트를 늘 여러분 가까이에 Boost 라이브러리는 현장에 당장 투입 될 수 있을 정도로 품질도 우수하고, 오픈소스이며 대부분의 플랫폼과 컴파일러에서 돌아갑니다.Boost는 C++ 표준화 위원회와 밀접한 관계를 유지하고 있으며 표준 C++에 추가될 수 있는 기능들의 시험 장소로 사용되고 있습니다.Boost 라이브러리는 크기와 범위가 아주 제각각입니다. (작은 녀석들은 코드 몇줄이지만 무지막지하게 큰 라이브러리도 있다.)Boost 라이브러리는 크게 십수 개의 범주로 나뉘어 있습니다. 1. 문자열 및 텍스트 처리 boost::regex -> std::regex C++ 11에서 표준으로 추가 2. 컨테이너 - STL 양식의 인터페이스를 제공하는 고정 크기 배열 tr1::array -> std::array C++ 11에서 표준으로 추가 -.. 2018. 1. 2.
[항목45]호환되는 모든 타입을 받아들이는 데는 멤버 함수 템플릿이 직방! 스마트 포인터에서 포인터와 같은 암시적 형 변환을 지원하게 해주기 위해 코드를 작성해보면 그 작업이 엄청 까다롭다는 것을 깨달을 수 있다.templateclass SmartPtr{public: explicit SmartPtr(T* realPtr);}; class Top{}; class Middle : public Top {}; class Bottom : public Middle{}; SmartPtr pt1 = SmartPtr(new Middle);SmartPtr pt1 = SmartPtr(new Bottom);포인터의 경우 암시적 변환이 가능하지만 SmartPtr과 SmartPtr은 컴파일러가 봤을 때 완전 별개의 클래스입니다. 따라서 직접 코드를 작성해줘야 합니다. templateclass SmartP.. 2017. 12. 28.