大多数运算符优先级都由显式数字构成。 具名优先级层级表示该范围靠近最小值或最大值的两端,通常用于更复杂的语法扩展。
prec ::= num
优先级也可以表示为其他优先级的和或差;这通常用于指定相对于某个具名优先级的优先级。
prec ::= ...
| prec + precprec ::= ...
| prec - precprec ::= ...
| (prec)最大优先级用于解析出现在函数位置上的项。 运算符通常不应使用这一层级,因为这会干扰用户对于“函数应用比任何其他运算符绑定得更紧”的预期;但在更复杂的语法扩展中,它可以用来表明其他构造如何与函数应用交互。
prec ::= ...
| max
参数优先级比最大优先级低一。
这一层级适合定义应当被当作函数参数处理的语法,例如 Lean.Parser.Term.fun : termfun 或 Lean.Parser.Term.do : termdo。
prec ::= ...
| arg
引导优先级低于参数优先级,应用于不应作为函数参数出现的自定义语法,例如 Lean.Parser.Term.let : termlet。
prec ::= ...
| lead最小优先级可用于确保某个运算符比所有其他运算符绑定得都更松。
prec ::= ...
| min