NIX语言中有效标识符的语法是什么



在任何地方都找不到语言规范,它基本上是nix源?仓库的读书文件指的是NIX手册,但似乎不完整。例如,4.2。Nix药丸中的标识符提到可以使用破折号( - (,手册甚至从未提及标识符语法。


update :刚刚找到已经封闭的(未解决的(nixos/nix问题#592没有关于有效符号/变量名称的文档

可能有更好的引用,但至少您可以检查Lexer的来源,该来源定义标识符

ID          [a-zA-Z_][a-zA-Z0-9_'-]*

作为由ASCII字母,数字,_'-组成的字符串,并以字母或_开始。


(更新:这引用了过时的参考语法,而不是工作语法。(

根据语法,标识符不能包含 -

  <production id="nix.id">
    <lhs>Id</lhs>
    <rhs>[a-zA-Z_][a-zA-Z0-9_']*</rhs>
  </production>

但是路径可以:

  <production id="nix.path">
    <lhs>Path</lhs>
    <rhs>[a-zA-Z0-9._-+]*(/[a-zA-Z0-9._-+]+)+</rhs>
  </production>

我不完全确定哪种评估过程导致重复报告句法有效的路径,该路径是未定义的变量。

最新更新