Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

NewCompileError/2014 05 03: Difference between revisions

From ZeroWiki
imported>rabierre
No edit summary
(Repair batch-0002 pages from live compare)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== 결정 사항 ==
시간 : 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
source -> scanner -> tokenize -> parser -> AST -> semantic analysis -> decorated AST -> Intermediate representation(중간 코드) -> code optimize -> target code


IR 코드를 기준으로 frontend와 backend가 나뉨, backend는 컴퓨터 구조와 밀접한 내용이라 frontend쪽을 주로 다룰 것.
IR 코드를 기준으로 frontend와 backend가 나뉨, backend는 컴퓨터 구조와 밀접한 내용이라 frontend쪽을 주로 다룰 것.
 
컴파일러마다 AST 형태는 다름
 
== 결정 사항 ==
source language : c
target language : javascript
code language : java, to try
== DRAFT 언어 형식 정의 ==
== DRAFT 언어 형식 정의 ==
[[BNF]]는 복잡하므로 일단 정규표현식을 사용함
BNF는 복잡하므로 일단 정규표현식을 사용함
* number := integer | double
  * number := integer | double
* integer := decimal integer
  * integer := decimal integer
* decimal integer := 0 | -?[[1-9]][[0-9]]*
  * decimal integer := 0 | [ 1-9 ][ 0-9 ]*
* double := decimal integer . [[0-9]]* |
  * double := decimal integer . [0-9]* |
decimal integer [[eE]] decimal integer?
  decimal integer [eE] decimal integer?
* factor := term + term |
  * factor := term + term |
term / term |
  term / term |
numer |
  numer |
( term )
  ( term )
* term := factor + factor |
  * term := factor + factor |
factor - factor |
  factor - factor |
factor
  factor
* expression := term
  * expression := term
 

Latest revision as of 00:16, 27 March 2026

결정 사항

시간 : 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 형태는 다름

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