Difference between r1.16 and the current
@@ -1,18 +1,20 @@
== 결정 사항 ==
시간 : 3시 ~ 6시
저녘은 절대 시켜먹지 않는다!(일찍 퇴근을 위해서!)
source language : c
target language : javascript
code language : java, to try
== 오리엔테이션 ==source -> scanner -> tokenize -> parser -> AST -> semantic analysis -> decorated AST -> Intermediate representation(중간 코드) -> code optimize -> target code
IR 코드를 기준으로 frontend와 backend가 나뉨, backend는 컴퓨터 구조와 밀접한 내용이라 frontend쪽을 주로 다룰 것.
컴파일러마다 AST 형태는 다름
[BNF]는 복잡하므로 일단 정규표현식을 사용함
[BNF]는 복잡하므로 일단 정규표현식을 사용함
{{{
* number := integer | double* integer := decimal integer
* decimal integer := 0 | -?[ 1-9 ][ 0-9 ]*
* decimal integer := 0 | [ 1-9 ][ 0-9 ]*
* double := decimal integer . [0-9]* |decimal integer [eE] decimal integer?
* factor := term + term |
@@ -23,4 +25,4 @@
factor - factor |
factor
* expression := term
factor
* expression := term
}}}
결정 사항 ¶
시간 : 3시 ~ 6시
저녘은 절대 시켜먹지 않는다!(일찍 퇴근을 위해서!)
source language : c
target language : javascript
code language : java, to try
저녘은 절대 시켜먹지 않는다!(일찍 퇴근을 위해서!)
source language : c
target language : javascript
code language : java, to try
오리엔테이션 ¶
source -> scanner -> tokenize -> parser -> AST -> semantic analysis -> decorated AST -> Intermediate representation(중간 코드) -> code optimize -> target code
IR 코드를 기준으로 frontend와 backend가 나뉨, backend는 컴퓨터 구조와 밀접한 내용이라 frontend쪽을 주로 다룰 것.
컴파일러마다 AST 형태는 다름
컴파일러마다 AST 형태는 다름
DRAFT 언어 형식 정의 ¶
BNF는 복잡하므로 일단 정규표현식을 사용함
* number := integer | double * integer := decimal integer * decimal integer := 0 | [ 1-9 ][ 0-9 ]* * double := decimal integer . [0-9]* | decimal integer [eE] decimal integer? * factor := term + term | term / term | numer | ( term ) * term := factor + factor | factor - factor | factor * expression := term