说明: https: //nixos.org/nix/manual/#ch -expression-language
https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/tools/misc/ctags/wrapped.nix中有一些非常基本的配置:
--langdef=NIX
--langmap=NIX:.nix
--regex-NIX=/([^ \t*]*)[ \t]*=/\1/f/
我(希望)在本地进行了一些改进:
--regex-NIX=/([^ \t*]*)[ \t]*=.*:/\1/f/
但是它仍然太基础了,可能需要一个单独的解析器。
我本人是Nix / NixOS的新手,因此知识不多
关于我自己的语言。
Nix本身会解析语言-它使用标准的解析和词法分析工具https://github.com/NixOS/nix/tree/master/src/libexpr (在该问题的上下文中可能最有用)。 然后,我了解了haskell中的一些内容https://github.com/peti/language-nix ,并且有各种编辑器(或突出显示库)的语法突出显示器。
作为初始版本,可以使用基于正则表达式的实现。 总比没有好。
尽管我不得不重新考虑目录结构,但optlib是实现解析器的一流方法。
您可以稍后编写基于C的解析器。 重点是正则表达式之间的“种类”兼容性
基于基础的解析器和基于C的解析器。 如果保持种类的兼容性,则没有人会注意实现的方式。
但是,如果nix实现具有真正的解析器,那么为什么不利用它呢? 我的xmcd适合您。
请参阅data / optlib / cofee.ctags和libexec / drivers / coffeetags。
嗨,这个问题的状态如何?
欢迎提出请求。
最有用的评论
嗨,这个问题的状态如何?