关于本文

    注意 : 这份文件是草案,Nim的一些功能可能需要更精确的措辞。本手册不断发展为合适的规范。

    注意 : Nim的实验特性在 。

    本文描述Nim语言的词汇、语法,和语义。

    语言构造用扩展巴科斯范式(BNF)解释,其中 (a)* 表示 0 或者更多 a, a+ 表示1或更多 a, 以及 (a)? 表示可选 a 。小括号用来对元素进行分组。

    & 是先行操作符; &a 表示需要 a 但不被消耗。它将在下列规则中消耗。

    |, / 符号用于标记可选并且优先级最低。 / 是要求解析器尝试给定顺序的可选项的有序选择。 / 常用于确保语法没有歧义。

    逐字终端符(包括关键字)用 ' 引用。示例:

    二元操作符 ^ 用于由第二个实参分隔的0或多次出现的简写;不像 ^+ 表示1或多个出现: a ^+ ba (b a) 的简写 a ^ b(a (b a))? 的简写。示例:

    1. arrayConstructor = '[' expr ^* ',' ']'

    Nim的其他部分,如作用域规则或运行时语义,都是非正式描述的。