1 个不稳定版本
0.1.0 | 2022 年 10 月 21 日 |
---|
#425 在 文本编辑器
88 每月下载量
用于 syntastica-parsers
33KB
957 行
tree-sitter-ebnf
tree-sitter 的 EBNF 语法
参考
此解析器实现了 ISO/IEC 14977:1996 标准(以下有两个显著差异)
- ISO 标准不允许在元标识符中使用下划线
_
- ISO 标准只允许来自 ISO/IEC 646:1991 字符集 的字符
在 Neovim 中的使用
解析器安装
nvim-treesitter 插件 目前不包括此解析器。要使用它,您必须手动将其添加到您的 tree-sitter 配置中,然后使用 :TSInstall ebnf
或将其添加到您的 ensure_installed
列表中安装它
require('nvim-treesitter.parsers').get_parser_configs().ebnf = {
install_info = {
url = 'https://github.com/RubixDev/ebnf.git',
files = { 'src/parser.c' },
location = 'crates/tree-sitter-ebnf',
branch = 'main',
},
}
文件类型检测
您可能还需要添加 ebnf
文件类型
vim.filetype.add { extension = { ebnf = 'ebnf' } }
高亮显示
如果您想使用此解析器进行高亮显示,您还必须将 queries/highlights.scm
的内容添加到 Neovim 运行时路径中名为 queries/ebnf/highlights.scm
的文件中(请参阅 :help rtp
)。我还建议自定义这些高亮显示
@string.grammar
:由'
或"
包围的终止符号,回退到@string
@string.special.grammar
:由?
包围的特殊序列,回退到@string.special
@variable.grammar
:非终止符号,即标识符,回退到@variable
@variable.grammar.pascal
:以 PascalCase 形式的非终结符号@variable.grammar.camel
:以 camelCase 形式的非终结符号@variable.grammar.upper
:以 UPPERCASE 形式的非终结符号@variable.grammar.lower
:以 lowercase 形式的非终结符号
例如,以下是我的个人配置
vim.api.nvim_set_hl(0, '@string.special.grammar', { link = '@string.regex' })
vim.api.nvim_set_hl(0, '@variable.grammar.pascal', { link = '@type' })
vim.api.nvim_set_hl(0, '@variable.grammar.camel', { link = '@property' })
vim.api.nvim_set_hl(0, '@variable.grammar.upper', { link = '@constant' })
vim.api.nvim_set_hl(0, '@variable.grammar.lower', { link = '@parameter' })
依赖项
~2.8–4MB
~72K SLoC