闪烁是一个文本编辑器。闪烁藻为 Scintilla 添加动态 Lua LPeg 词法分析器多种语言。根据文档,Scintillua可以作为库使用:
使用 Scintillua 作为 Lua 库
为了将 Scintillua 用作 Lua 库,只需将 lexers/ 目录放在 Lua 路径中(或相应地修改 Lua 的 package.path),require() 库并 load() 词法分析器,然后调用该词法分析器的 lex() 函数。以下是执行此操作的一个示例交互式 Lua 会话:
$> lua Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > lexer_path = '/home/mitchell/code/scintillua/lexers/?.lua' > package.path = package.path..';'..lexer_path > c = require('lexer').load('ansi_c') > tokens = c:lex('int void main() { return 0; }') > for i = 1, #tokens, 2 do print(tokens[i], tokens[i+1]) end type 4 ansi_c_whitespace 5 type 9 ansi_c_whitespace 10 identifier 14 operator 15 operator 16 ansi_c_whitespace 17 operator 18 ansi_c_whitespace 19 keyword 25 ansi_c_whitespace 26 number 27 operator 28 ansi_c_whitespace 29 operator 30
我想知道是否可以使用这些词法分析器作为minted
或的lua 替代品listings
?此外,Scintillua 似乎支持代码折叠,可用于在代码结构下划线,就像我的老问题。 和 lua 之间交互的基本代码是什么TeX
(catcodes 等)?