3. Compiler Compiler is… Compiler 를 생성하는 Compiler 일반적으로 Lexer와 Parser를 생성하는 Tool Parsing 방식에 따라서 LL, LR, Recursive Decendent Parser 등으로 나뉨. 대표적 :: Lex/Yacc, JavaCC, AntLR …
4. 용어 정리 약간… Token : 문법의 가장 기본적인 요소. Lexing, Lexer : Token 을만드는 일, 만드는 Tool Parser : 문법(Syntax, 구문) 분석 Tool Semantic Analysis : 의미 해석, 번역, CFG(Context Free Grammar) EBNF(Extended Backus Normal Form) LL, LR : PARSING 방식의 종류 (알고 싶으신가요..) Confilct : LL 과 LR에서 약간 다르나, 단단히 정의 하면 특정 Status 에서 어떤 문법으로 해석할지 알 수 없는 경우. JJTree : JavaCC + Tree 생성 문법. LOOKAHEAD : 문법의 결정시 TOKEN 몇 개를 미리 보는 것을 의미 ( LL(K),LR(K) )
5. CFG? BNF? EBNF 자세히 하면 머리 아프니까…… CFG 문법 표현의 한 형식 …….이라고만 알아두세요… ( 터미널, 논터미널.. 그리고 ..길어지니…) BNF :: CFG의 표기법, 문장의 구성 요소의 나열과 “|”을 사용한 구성 요소의 선택 <signed integer> ::= +<integer> | -<integer> <integer> ::= <digit> | <integer> <digit> <digit> ::= 0|1|2|3|4|5|6|7|8|9 EBNF :: BNF 에 [] 를 통한 생략 가능과{} 을 도입하여 * 나 + 를 통한 반복을 표시 <signed integer> ::= [+|-]<digit>{<digit>}*
19. 주의사항 jjTree의 버그 인지는 모르나. 아무런 Node 선언 없이 jjTree를 수행하면 컴파일 에러가 발생한다 ( java compile) Node 인터페이스 와 SimpleNode클래스가 생성되지 않아서임 Option 부의 NODE_DEFAULT_VOID를 우선 FALSE로 한 빈 문법을 BUILD 하거나 최상위 문법만 우선 임시적으로 Node선언을 한 후 build 하면 된다. OR