2016-09-25 54 views
0

main.jssweet.js不能返回#`else`

import {另} from './chinese-macros'; 
另 { 
} 

中國-macros.js

export syntax 另 = function(ctx) { 
    return #`else`; 
} 

main.js應該編譯爲else {},但我得到這個錯誤消息改爲:

throw this.createError(start, "not a valid expression"); 

任何幫助將不勝感激。

回答

1

else {}本身是一個無效的表達式,這就是爲什麼你收到該錯誤消息。你所做的是什麼(我相信)試圖取代如果否則成爲中文。因此,假設你已經爲if語句創建了一個宏,那麼編譯器將最終評估該宏是否爲,然後分別爲評估其他宏。

你應該做的是在一個宏中爲if/else-if/else語句構建一個宏,就像本教程爲cond表達式構建一個宏一樣:http://sweetjs.org/doc/1.0/tutorial.html#_sweet_cond。請注意,它們是如何遍歷關鍵字case,然後default開始的,如果沒有出現這兩個關鍵字(語法無效)則拋出錯誤。對於你想要達到的目標,除了按照if,else ifelse的順序進行同樣的想法......同時爲不同的語法添加更多的錯誤處理和記賬功能。