1
我寫類似的JavaScript其分號插入前語言解析器:匹配換行符只在特定條件下
var x = 1 + 2;
x;
和
var x = 1 + 2
x
甚至
var x = 1 +
2
x
是相同。
現在,我的詞法分析器僅在與分號不同的令牌出現後才匹配換行符(\ n)。這對1和2這樣的基本情況起到很好的作用,但我如何處理第三種情況?即在表達中間發生的新行。我無法每次都匹配新行,因爲它會污染我的解析器(無處不在用新行標記插入備選項),而且我也無法匹配它們,因爲它是語句終止符。基本上,如果在那裏有一個新的行字符或分號,我會在解析語句結束時以某種方式進行檢查。
JavaScript的ASI僅在遇到語法錯誤時插入分號,這與使用可選分號不同。在解析器中處理這個可能會更好,並將行結束符視爲重要的令牌。 – 2014-08-31 11:34:49
但我的解析器規則添加將如下所示: ' addition :expr PLUS expr | expr NEWLINE PLUS EXPR ...' 所以這是一個不行。我錯過了什麼嗎? – 2014-08-31 17:06:14