是否有某个地方允许的字符的完整列表,或者确定可以在标识符和运算符中使用什么的规则?
来自哈斯克尔报告 https://www.haskell.org/onlinereport/lexemes.html,这是允许的符号的语法:
a | b
means a or b
and
a<b>
means a except b
special -> ( | ) | , | ; | [ | ] | `| { | }
symbol -> ascSymbol | uniSymbol<special | _ | : | " | '>
ascSymbol -> ! | # | $ | % | & | * | + | . | / | < | = | > | ? | @
\ | ^ | | | - | ~
uniSymbol -> any Unicode symbol or punctuation
因此,符号是 ASCII 符号或 Unicode 符号,除了special | _ | : | " | '
,这是保留的。
意味着不能使用以下字符:( ) | , ; [ ] ` { } _ : " '
该报告在下面的几段中给出了 Haskell 运算符的完整定义:
varsym -> ( symbol {symbol | :})<reservedop | dashes>
consym -> (: {symbol | :})<reservedop>
reservedop -> .. | : | :: | = | \ | | | <- | -> | @ | ~ | =>
运算符号由一个或多个符号字符组成,如
上面定义的,并且在词法上区分为两个名称空间
(第 1.4 节):
- 以冒号开头的运算符符号是构造函数。
- 以任何其他字符开头的运算符符号是普通标识符。
请注意,冒号本身“:”仅保留用作
Haskell 列表构造函数;这使得它的治疗与其他治疗一致
列表语法的一部分,例如“[]”和“[a,b]”。
除了前缀否定的特殊语法之外,所有运算符都是
中缀,尽管每个中缀运算符都可以在一个部分中使用以产生
部分应用运算符(参见第 3.5 节)。全部符合标准
中缀运算符只是预定义的符号,可能会反弹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)