2014-02-09 57 views
0

此問題的標題回答了所有問題。可以將Sweet.js輸出到註釋?

我一直希望有辦法做到這一點,但我發現它很難。截至目前,這是我所嘗試過的。

macro statement { 
    rule { "$x" } => { 
     // @statement $x 
    } 
} 

statement "my/qualified/path" 

這並不工作:*(

所以後來我想這

macro statement { 
    rule { "$x" } => { 
     \\ @statement $x 
    } 
} 

macro \ { rule { } => {/} 

顯然,因爲我認爲它會,它會導致成一個語法錯誤反正是有。使sweetjs輸出到評論?

回答

2

esprima/escodegen(sweet.js構建於其上)處理註釋的方式是將它們添加爲現有標記的屬性;註釋在t中不是合適的標記hemselves。這意味着你不能輸出「只是」一個評論,它必須附加到另一個標記。所以,如果你只是在你的宏添加另一個標記註釋後,它會所有的工作:

macro statement { 
    rule { "$x" } => { 
     // @statement $x 
     42 
    } 
} 

如果您需要確定一個令牌,你也可以使用的情況下宏的精確值,並在該leadingComments屬性的更多靈活性代幣:

macro m { 
    case {_() } => { 
     var x = makeValue(42, #{here}); 
     x.token.leadingComments = [{ 
      type: "Line", 
      value: "hello, world" 
     }]; 
     return withSyntax ($x = [x]) #{ 
      $x 
     } 
    } 
} 
+0

啊是的,我們實際上已經通過電子郵件進行溝通! :)所以我會接受你的正確答案,因爲你已經修復了這個錯誤。 – Michael

相關問題