티스토리 뷰
과제로 Compiler의 Lexcial Analysis를 담당하는 Scanner와 Parser를 만드는 것이 목적이다.
원래는 전반적인 부분을 모두 코딩하는 게 맞지만 교수님이 Grammar Specification을 미리 지정해줘서 그 것에 맞춰서 작성하면 된다.
우선은 Scanner를 만들었는데 Scanner의 역할은 코드 내의 Token이 어디에 속하는지를 분류해주는 역할을 한다. 보통 test code로 다음과 같이 제공된다.
그러면 Scanner는 한 character씩 읽어나가면서 해당 구문이 어디에 속하는지를 화면상으로 보여줘야 한다. 유의할 점이 있다면 간혹 예외적인 구문이 있다는 것이다.
그냥 character 별로 구분하는 거면 switch 구문을 사용해서 해당 character를 분별해내면 되겠지만 문제는 이 두 개가 같이 결합된 요소다. 가령 comment를 나타내는 // 이라는 것도 먼저 / 를 인지한 상태에서 추가로 들어올 경우에 comment로 인지해줘야 한다. 물론 그 다음에 아무것도 나타나지 않으면 comment대신 division을 해줘야 한다. 혹은 number와 string이 같이 나오는 경우도 정확히 분별해내야 한다. 예를 들어 iden1 이나 __t 같은 것도 분류자로 분류할 수 있으면 추후 parser에서 처리하는데 쉬워질 것이다. 위의 test 구문을 내가 만든 scanner에 집어넣으면 다음과 같다.
뭐 이런식으로 나오면 parser에서 특정 문법을 정의해 해당 문법이 나올 경우 실행만 하게 해주면 된다.
'Study > Compiler' 카테고리의 다른 글
[Compiler] Exact and Efficient Data Dependence Analysis (0) | 2013.09.24 |
---|---|
[Compiler] Intermediate Code Generation 실습 (0) | 2013.06.18 |
[Compiler] Parser 동작 (0) | 2013.05.13 |
[Compiler] Simple LR Parsing (9) | 2013.04.23 |
[Compiler] Viable Prefix of Shift Reduce Parsing (4) | 2013.04.22 |
[Compiler] Shift Reduce Parsing (4) | 2013.04.22 |
[Compiler] Bottom-Up Parsing (9) | 2013.04.21 |
- Total
- Today
- Yesterday
- Pipeline
- Kinect SDK
- Gan
- PowerPoint
- TensorFlow Lite
- RL
- Expression Blend 4
- bias
- ai
- Variance
- Distribution
- Kinect
- 한빛미디어
- Offline RL
- Off-policy
- End-To-End
- 강화학습
- windows 8
- SketchFlow
- 딥러닝
- arduino
- dynamic programming
- Kinect for windows
- ColorStream
- DepthStream
- Windows Phone 7
- 파이썬
- Policy Gradient
- reward
- processing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |