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


  위 LL Parsing 예제의 문법과 입력 문자열이 동일할 때 다음과 같은 차이가 있다.


Parse Stack            input         action 


       (                  n * n )        shift


      ( n                 * n )          shift


      ( C *                n )           규칙 3


    ( C * n                 )            shift


    ( C * C  )                           규칙3


    ( S * C  )                           규칙1


        S                                 규칙2




LL 방식은 TopDown 답게 큰 그림을 미리 그려놓고 채워 놓는 방식 LR 방식은 BottomUp 답게 작은 그림들을 만들어 놓고 합쳐준다.


'이론 > 컴파일러' 카테고리의 다른 글

LL Parsing과 LR Parsing  (0) 2018.06.27
Posted by 사과잼빵

특수문자가 포함된 데이터베이스를 생성할 때는 데이터베이스명을 대괄호[]로 감싸줘야한다.


ex)  tes-t  라는 데이터베이스를 만들고 싶다면

CREATE DATABASE [tes-t]

라는 쿼리를 실행해야한다.

'이론 > 데이터베이스' 카테고리의 다른 글

[SQL]특수 문자가 포함된 데이터베이스명  (0) 2018.04.04
트랜잭션  (0) 2015.06.14
역정규화  (0) 2015.06.14
정규화  (0) 2015.06.14
Posted by 사과잼빵

C++에서는 lambda를 이용해 익명 메서드를 구현 할 수 있고 C#에서는 delegate를 이용해 익명 메서드를 구현 할 수 있다.

- lambda로 구현된 익명 메서드(C++)는 컴파일 시 해당 메서드가 인라인화되어 해당 코드로 치환된다. (함수 호출 시 소모되는 비용을 절약할 수 있게됨)

- delegate로 구현된 익명 메서드(C#)는 컴파일 시 중복되지 않을 특별한 문자열의 이름을 가지는 메서드가 생성 되어 해당 메서드를 호출 하는 식으로 코드가 치환된다. 

따라서 delegate로 구현된 익명 메서드는 간편 표기 구문에 불과하며 성능상 이점은 없어 보인다.

'개발 > C#' 카테고리의 다른 글

C++의 lambda와 C#의 delegate의 차이  (0) 2018.02.21
Boxing UnBoxing  (0) 2015.10.06
Posted by 사과잼빵


티스토리 툴바