本着想写系列文章《web端语法高亮原理:走进jssc的世界》,介绍jssc的历史和核心算法的,结果无意间发现两个bug,真是丢脸啊。
一是数字高亮的bug,最终处理上居然一小步布尔逻辑写错了,造成长串数字的误认;二是ie下的复制按钮,定位的复制对象居然是“关于”,而不是源代码(少了个parentNode)。
这么明显的失误啊,真想跳楼谢罪了……
话归正题,系列文章会逐步出炉的,将jssc的一切毫无保留地叙述出来。这次失误的收获倒是知晓了其它几个web端的语法高亮器(以前只知道syntax highlighter,貌似也是最知名的),其中最吸引我的是prettify,貌似是google官方的东东。不愧是大佬啊!拿我常用的一段js代码测试了下,prettify是目前我所知js解析器中最为准确的!当然还有一点点小瑕疵,那就是正则的flag(i、m、g)没有跟随正则一起被高亮。不过最让我搞不懂的是,相对简单的flag没有解析正确,反而更难的跨行除法却做到了。
以下是我常用的测试代码,如果web端语法高亮器能解析到jssc的程度,才能够说明是正确了。
//javascript
function none(){
}
/** javascript
jscript
*/
var reg = /[\/][*]([\S\s]*?)(?:[*][/;\[\]]|$)|[\/][/g;](.*)|"((?:\\\\|\\"|[^"])*)"|'((?:\\\\|\\'|[^'])*)'/gm; ''; /\d/.test(1);
reg = 12;
a / b
/reg/;
var num1 = 0.541f;
function f(test) {
return (test/*
/* //
' "
{ ;
\*/ && // /* // " ' { ; \
test &&
" /* // \
\" ' \
{ ;" &&
' /* // \
" \' \
{ ;' &&
test);
}

回复自“修复了jssc 5 beta中的两个错误”
发表回复