Parsing 如何[“03C0”匹配<;Ada参考手册>';附录P中的语法?
我正在编写一个工具,用2005年附录p中提供的语法解析Ada源文件Parsing 如何[“03C0”匹配<;Ada参考手册>';附录P中的语法?,parsing,grammar,ada,identifier,Parsing,Grammar,Ada,Identifier,我正在编写一个工具,用2005年附录p中提供的语法解析Ada源文件 通过下面的代码,我知道[“03C0”]代表“希腊字母Pi”,但它是法定变量名吗 01 package Ada.Numerics is 02 Pi : constant := 3.14159_26535_89793_23846_26433_83279_50288_41971_69399_37511; 03 ["03C0"] : constant := Pi; 04 e : constant := 2.71828_
01 package Ada.Numerics is
02 Pi : constant := 3.14159_26535_89793_23846_26433_83279_50288_41971_69399_37511;
03 ["03C0"] : constant := Pi;
04 e : constant := 2.71828_18284_59045_23536_02874_71352_66249_77572_47093_69996;
05 end Ada.Numerics;
3.1
basic_declaration ::=
type_declaration | subtype_declaration
| object_declaration | number_declaration
| subprogram_declaration | abstract_subprogram_declaration
| null_procedure_declaration | package_declaration
| renaming_declaration | exception_declaration
| generic_declaration | generic_instantiation
我根据oenone的回答做了进一步的调查
我猜:如果[“03C0”]仅通过语法分析,[“abcd”]也将通过语法检查。 所以从失败的结果和信息来看,我可以说GNAT是这样工作的: 在将源文件发送到语法分析器之前,有一个预处理过程。 预处理将计算unicode值,检查它是否在有效的宽字符集中。 如果它在有效的宽字符集中,它将继续发送到语法分析器。否则,失败
2:手臂没有规则。这是一个编码问题,由实现(GNAT)完成
[“03C0”]
(默认为-gnatWb)的处理方式类似于π
(使用-gnatW8)甚至Pi
作为变量名(或在本例中为常量)的有效标识符。谢谢,这真的很有帮助。