3

我正在尝试编写自己的代码语法荧光笔,但我唯一的困难是决定如何开始处理代码。例如,要解析每个令牌,我必须只使用正则表达式吗?或者也许我必须为每个空间拆分代码?还是每条线?我知道我必须能够在单词之间保持分隔以防止双重匹配。例如,如果我想搜索所有关键字,如“ this、var、in、return 等”,很明显在this.index中也匹配索引

那么,根据您的经验,您的意见是什么?

4

2 回答 2

1

这是一个很好的问题。当我开发自己的编程语言时,我进行了类似的研究(仅用于概念验证)。我研究了 Douglas Crockford 的 JSLint 和 JSMin 的实现。我看到他通过逐个符号读取源代码来标记代码。例如,您可以在此处此处查看此方法。实际上,您只需要在突出显示代码之前进行标记化,因此我认为这种方法最适合。在此之后,您将创建以较少错误为前提的高级解析器。在为不同语言创建荧光笔时,您可能还会有更多的代码重用。

于 2012-12-19T09:21:13.340 回答
0

我宁愿建议你看看现有的解决方案。至于我 - 我对这款荧光笔印象深刻 - http://softwaremaniacs.org/soft/highlight/en/

它使用插件来解析不同的语言——你可能有很好的经验。

于 2012-12-19T09:17:34.870 回答