在以下C++文本上运行Pygments默认的词法分析器:class foo{};
,得到的结果如下:
(Token.Keyword, 'class')
(Token.Text, ' ')
(Token.Name.Class, 'foo')
(Token.Punctuation, '{')
(Token.Punctuation, '}')
(Token.Punctuation, ';')
请注意,toke foo
的类型为 Token.Name.Class
。如果我将类名更改为
foobar
,我希望只能在触摸到的标记上运行默认词法分析器,例如原始标记foo
和{
。问:如何保存词法分析器状态,以便对
foobar{
进行标记化时得到类型为Token.Name.Class
的标记?有了这个功能,可以优化大型源文件的语法高亮,例如用户在文件中间输入文本。似乎没有记录这样做的方法,也没有关于如何使用默认的pygments词法分析器进行此操作的信息。
还有其他支持此行为的语法突出显示系统吗?
编辑:
关于性能,这是一个例子:http://tpcg.io/ESYjiF。
foo
改为foo {
,这会引入另一个括号,整个代码的含义实际上会发生变化。因此,在任何情况下,这可能不是一个好主意。 - Tarun Lalwani