Re: [問題] js解析js時,如何有效去註解?
※ 引述《zhengyao (yao)》之銘言:
: 解析js的第一步應該是把/* */或// 的註解排除.
: 但是又怕這些符號是在有效字串之中,
: 也不能用引號來判斷有效字串(因為也可能在註解之中),
: 變成必須像compiler一樣判斷整段有效程式碼,才能得知是否是有效字串,
: 請問有其他的方法嗎?
: 如果變通方法是利用註解的寫作習慣,
: 例如不使用此插入註解的方式 var /*註解*/ test;
: 使在解析js時能更快速,
: 不知道大家覺得怎麼樣?
真的要寫的話,擅用 RegExp 就可以了
String.prototype.removeJSComments = function() {
return this.replace(/(\/\*(?:.|\n|\r\n?)*?\*\/)|(\/\/.*$)|
"(?:[^"]|\\"|\n|\r\n?)*?"|'(?:[^']|\\'|\n|\r\n?)*?'/mg,sub);
function sub(){
return (arguments[1]||arguments[2]) ? '' : arguments[0];
}
}
另一個比較簡單的方式是刪除所有 /* */ 和 // 區段,
然後字串中不要出現 /* */ //
可反斜線中斷,如 "/\*" "*\/" "/\/"
或切成二個字串,如 "/"+"*"
實際上除了 js 註解,
像 <!-- --> 和 <![CDATA[ ]]> 和 <script> </script> 也應該避免出現在字串中,
很容易造成某些程式誤判(比方上錯色等)
我也想知道有沒有辦法用簡單的純文字比對抓出所有 <pre class="xxx"> 元素並做處理,
而且還要考慮可能出現的嵌套方式...
看來不用 HTML 或 XML DOM 好像頗難達到....
(wiki 到底怎麼做到的orz...)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.92.12
※ 編輯: danny0838 來自: 114.25.92.12 (04/02 20:53)
推
04/06 15:33, , 1F
04/06 15:33, 1F
推
04/20 02:51, , 2F
04/20 02:51, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):