ADT 替代项开头的“\”是什么意思?

What does `\` mean at the beginning of an ADT alternative?

来自http://tutor.rascal-mpl.org/Rascal/Libraries/lang/java/m3/TypeSymbol/Bound/Bound.html

data Bound 
   = \super(list[TypeSymbol] bound)
   | \extends(list[TypeSymbol] bound)
   | \unbounded()
   ;

为什么所有备选方案都以 \ 开头有什么具体原因吗?这是什么意思?这是某种约定还是特殊的 Rascal 语法?

这是一种转义标识符的方法。

假设您要命名一个构造函数(或函数)if,这将与 if 语句重叠(因此被保留)。

如果你在标识符前面放一个 \,你就转义了这个名字。就像字符串文字中的 \" 一样。

现在,对于 Java AST,选择对齐。而不是:

| method(...)
| \if(...)
| variable(...)

你在每个备选方案前加一个\