Descrição: https://nixos.org/nix/manual/#ch -expression-language
Existem algumas configurações básicas em 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/
Eu (espero) melhorei isso um pouco localmente:
--regex-NIX=/([^ \t*]*)[ \t]*=.*:/\1/f/
Mas ainda é muito básico e provavelmente precisaria de um analisador separado.
Sou novo no Nix / NixOS e, portanto, não tenho muito conhecimento
sobre esta linguagem eu mesmo.
O próprio Nix analisa a linguagem - ele usa ferramentas de análise e lexagem padrão https://github.com/NixOS/nix/tree/master/src/libexpr (provavelmente mais útil no contexto deste problema). Então eu sei sobre algumas coisas em haskell https://github.com/peti/language-nix , e há realçadores de sintaxe para vários editores (ou bibliotecas de realce).
Como uma versão inicial, uma implementação baseada em expressão regular está ok; é sempre melhor do que nada.
Embora eu tenha que repensar as estruturas de diretório, optlib é a primeira forma de implementar um analisador.
Você pode escrever um analisador baseado em C mais tarde. O ponto importante é a compatibilidade de "tipos" entre regex
analisador baseado e analisador baseado em C. Se a compatibilidade dos tipos for mantida, ninguém se preocupará com a forma de implementação.
No entanto, se a implementação do nix tem um analisador real, por que você não o utiliza? Meu xmcd é para você.
Veja data / optlib / cofee.ctags e libexec / drivers / coffeetags.
Olá, qual é a situação deste problema?
Uma solicitação de pull é bem-vinda.
Comentários muito úteis
Olá, qual é a situação deste problema?