LungZeno
LungZeno

不知道為何寫起matters上來。

js-based js engine 之 js-based regular expression engine

之前在《我的「中國互聯網自由計劃」 與中國防火長城對著幹的方法》說過以前想過,把 web-based proxy 的frontend做成 web-based web broswer,做出完整的 javascript 和 css解譯器。當時只是寫了正常表情常規運算式regular expression的部份,還要未完成和有 bug,之後就沒有繼續了。近來我把過去寫了的檔案找出來,其實 regexp engine 的核心當時已寫好,現在修好了 bug ,把檔案公開出來給有興趣的人用。程式碼的說明就看 ECMAScript 5.1 的 Spec,我只是跟著 spec 去寫。這個 spec 最特別的地方是使用了 continuation passing style 作為編譯方法,很容易看明白和實現,修改也方便。

檔案:https://github.com/LungZeno/js-based-js-engine-regexp


執行

compile("(a[a-z]{2,4})",{ignoreCase:true,multiline:false})("abcdefghi",0)

結果應該是:

{
 captures: ["abcde"],
 endIndex: 5,
 input: "abcdefghi"
}


執行

compile("(a[a-z]{2,4}?)",{ignoreCase:true,multiline:false})("abcdefghi",0)

結果應該是:

{
 captures: ["abc"],
 endIndex: 3,
 input: "abcdefghi"
}

NO RIGHTS RESERVED 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…
加载中…

发布评论