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>joojis
No edit summary
(Repair batch-0002 pages from live compare)
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
오리엔테이션== DRAFT 언어 형식 정의 ==
== 결정 사항 ==
[[BNF]]는 복잡하므로 일단 정규표현식을 사용함
시간 : 3시 ~ 6시
* number := integer | double
저녘은 절대 시켜먹지 않는다!(일찍 퇴근을 위해서!)
* integer := decimal integer
source language : c
* decimal integer := 0 | -?[[1-9]][[0-9]]*
target language : javascript
* double := decimal integer . [[0-9]]* |
code language : java, to try
decimal integer [[eE]] decimal integer?
== 오리엔테이션 ==
* factor := term + term |
source -> scanner -> tokenize -> parser -> AST -> semantic analysis -> decorated AST -> Intermediate representation(중간 코드) -> code optimize -> target code
term / term |
numer |
( term )
* term := factor + factor |
factor - factor |
factor
* expression := term


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

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