某处是否有完整的允许字符列表,或确定标识符与运算符中可以使用什么的规则?
问问题
15883 次
3 回答
66
从Haskell 报告中,这是允许符号的语法:
a | b
手段a or b
和
a<b>
方法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 节)。所有标准中缀运算符都只是预定义的符号,可能会被反弹。
于 2012-05-11T09:08:01.177 回答
26
我正在寻找的是完整的字符列表。根据其他答案,完整列表是;
Unicode标点符号:
- http://www.fileformat.info/info/unicode/category/Pc/list.htm
- http://www.fileformat.info/info/unicode/category/Pd/list.htm
- http://www.fileformat.info/info/unicode/category/Pe/list.htm
- http://www.fileformat.info/info/unicode/category/Pf/list.htm
- http://www.fileformat.info/info/unicode/category/Pi/list.htm
- http://www.fileformat.info/info/unicode/category/Po/list.htm
- http://www.fileformat.info/info/unicode/category/Ps/list.htm
Unicode 符号:
- http://www.fileformat.info/info/unicode/category/Sc/list.htm
- http://www.fileformat.info/info/unicode/category/Sk/list.htm
- http://www.fileformat.info/info/unicode/category/Sm/list.htm
- http://www.fileformat.info/info/unicode/category/So/list.htm
但在 Haskell 中排除以下具有特殊含义的字符:
(),;[]`{}_:"'
A:
仅允许作为运算符的第一个字符,并表示构造函数(请参阅以冒号开头的运算符符号是构造函数)。
于 2012-05-16T10:00:35.110 回答