不知道為何寫起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" }
喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。
发布评论…