TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2008年5月4日 星期日

JJTree筆記

  1. 每個Production都是一個SimpleNode物件。
  2. SimpleNode類別實作Node介面。
  3. 可以在Production裡用jjtThis變數存取這個Node。
  4. SimpleNode物件可以使用dump成員函式來印出parsing tree。
  5. 如果沒有特別指定,SimpleNode預設會是Prodution的名稱。
  6. 可以設定MULTI=true來為每個Production生成自己的Abstract Syntax Tree Node。
  7. 承上,這時每個Production如果沒有特別設定,類別名稱是AST接上Production的名字。
  8. AST類別在預設情況下是繼承SimpleNode。
  9. NODE_EXTENDS選項可以設定一個使用者自訂類別讓SimpleNode繼承它
  10. NODE_CLASS選項可以設定一個使用者自訂類別讓它繼承SimpleNode,而所有的AST類別都會改為繼承這個類別。
  11. 但是NODE_EXTENDS被標示為棄用,在未來的版本可能被消除;而NODE_CLASS則尚未釋出。
  12. 加入VISITOR選項可以使用Visitor pattern走訪整個AST。
  13. Visitor會自動生成一個介面,要做的只是根據不同的AST節點需要寫出不同的實作即可。
  14. VISITOR_DATA_TYPE可以設定Visitor的引數型態,避免downcast的使用。
  15. VISITOR_RETURN_TYPE可以設定Visitor的回傳型態。
  16. 然而以上兩個選項都尚未正式釋出。

沒有留言:

張貼留言