Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 취약점
- epoll_wait
- DOCKER-USER
- packet flow
- Compiler
- iptables
- ncurses
- doupdate
- packet filter
- REDIS
- rfc5508
- edge trigger
- level trigger
- C언어
- .nret core 배포
- BOF
- mvwin
- Docker
- 어셈블리어
- .net core 7
- epoll
- 풀이
- architecture
- ioctl
- NAPT
- wrefresh
- LOB
- vtable
- wnourefresh
- cbpf
Archives
- Today
- Total
Tuuna Computer Science
변형된 마크다운 개발하기(1) grammar 제작 본문
[해결] 수정 계획 : 아래 grammar 실패작 곧 정상적인 grammar 들고올 예정
기존 마크다운은 #, ##, ###와 >, >>, >>> 등등의 grammar을 제공한다.
이번에는 이러한 grammar을 제쳐두고 새로운 grammar을 제시할 생각이다.
#,##,###와 같은 Header은 H1->{"문자열"}, H2->{"문자열"}로 변경할 것이고
>, >>와 같은 Quote는 Quote->{"인용구"}로
Link와 Image는 Link->{"이름","링크 주소", "툴팁"}의 형태로 제공될 예정이다.
아래는 grammar에 대한 CFG이다.
mddoc : paragraphs opt_terms
;
paragraphs : /* None */
| paragraph
| paragraphs terms paragraph
;
paragraph : keyword_paragraph op_rasgn '{' pcontents opt_terms '}'
;
pcontents : pcontent
| pcontents terms pcontent
;
pcontent : keyword_header_one op_rasgn '{' ptext opt_terms '}'
| keyword_header_two op_rasgn '{' ptext opt_terms '}'
;
ptext : pstring
;
pstring : lit_string
;
opt_terms : /* None */
| terms
;
terms : term
| terms term
;
term : '\n'
| ' '
| '\t'
;
코드를 보면 Pcon 구조체와 Para구조체를 볼 수 있다. Pcon구조체는 H1, H2, Quote과 같은 하나의 문단안에 content를 연결리스트로 연결하는 부분이다.
paragraph -> NEWLINE | pcontent 부분에서 NEWLINE을 만나면 연결된 Pcon구조체 리스트를 Para구조체에 대입한다.
고민했던 사항들은 H1->{Quote->{"인용구"}} 와 같이 되어있을 경우도 고려해봤지만 리스팅빼고는 딱히 쓸일이 없을거 같아서 제외시켰다.
그리고 아래와 같이 opt_term을 두어 입력할 문자열의 위치를 좀 더 자유롭게 선정하기로 결정했다.
H1->{"문자열"}
H2->{
"문자열"
}
H3->
{
"문자열"
}
좀 더 수정할 건 수정해야하는 grammar이다.
'Compiler' 카테고리의 다른 글
[Compiler Design] What is Top-Down Parsing (0) | 2020.08.20 |
---|---|
introduction to compiler design (0) | 2020.06.13 |
FIRST와 FOLLOW 쓰는 이유 및 원리 - Compiler Design (0) | 2019.12.16 |
SLR and LR(1) Parsing - Update 진행중 (0) | 2019.11.24 |
[Control Flow Analysis] - Natural Loop란? (0) | 2019.05.22 |
Comments