JavaScript词法分析器:我希望利用JavaScript和流正则表达式来创建一个词法分析器。为此,在编写过程中遇到了一些麻烦,主要包括:
-
块处理:追踪剩余部分并在每次丢弃一块时更新正则表达式的索引。当正则表达式遇到字符串末尾时可能无法匹配部分内容。
-
正则表达式最大匹配长度问题:maximumMatchLength无法强制正则表达式从某一索引开始匹配,这需要保存匹配并将索引与当前索引比较。如果不匹配,则在当前块期间可以跳过该规则。若匹配索引小于当前索引,则设置lastIndex再次执行匹配,若match index等于当前索引,则找到匹配。为了更高效地定位匹配结果,我们对匹配项按索引排序。
-
规则顺序的保存:尽管规则较少,但为了保持其顺序,仍需逐条检查。
-
换行符问题:如果匹配的令牌包含部分换行符,可能会导致行数跟踪不准确。仅在包含换行符的情况下处理它以避免代码混乱。
暂无评论