[“03C0”]如何匹配附件P中的语法?

2024-04-29

我正在编写一个工具来使用 2005 年附录 P 中提供的语法来解析 Ada 源文件。

  1. 通过下面的代码,我知道["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_18284_59045_23536_02874_71352_66249_77572_47093_69996;
    05 end Ada.Numerics;
    
  2. 当使用语法解析第03行时,我当前来到“basic_declaration”。下一条规则是什么?下一个规则呢?下一个下一个规则?直到[“03C0”]能够成功解析。最终,问题应该是:哪个规则解析了 [“03C0”]?

Ada 参考手册位于:http://www.adaic.org/resources/add_content/standards/05rm/RM-Final.pdf http://www.adaic.org/resources/add_content/standards/05rm/RM-Final.pdf

Ada 参考手册第 702 页(PDF),页面右下角第676页。附件 P/3.1

    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的回答。

  1. 如果我在代码中使用[“03C0”],则字符集不需要是“UTF-8”,这是有道理的。 编译时,我需要“gnatmake-gnatWb你好.adb”。
  2. 如果我在代码中使用p,我必须将字符集更改为“UTF-8”,否则GPS将无法识别该字符并提示消息。 当我将其更改为UTF-8后,我需要使用“gnatmake-gnatW8Hello.adb”进行编译。
  3. 我尝试过了将 ["03C0"] 更改为 ["abcd"]再次编译,它会失败,提示“标识符中的宽字符无效”。
    我猜:如果[“03C0”]仅通过语法解析,[“abcd”]也将通过语法检查。 所以从失败结果和消息来看,我可以说,GNAT 是这样工作的: 有一个预处理在将源文件发送到语法解析器之前。 预处理将评估 unicode 值,检查它是否在有效的宽字符集中。 如果它在有效的宽字符集中,它将继续发送到语法解析器。否则,失败。

1: see A.5 数值包 http://www.adaic.org/resources/add_content/standards/05rm/html/RM-A-5.html- RM 使用正确的 unicode 字符。您的引用似乎来自 GNAT 包。为此,请参阅GNAT 用户指南 http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Character-Set-Control.html#Character-Set-Control关于如何告诉 GNAT 它应该使用哪种编码。

2:ARM 没有规则。这是一个编码问题,是由实现(GNAT)完成的。["03C0"](使用-gnatWb,这是默认值)的处理方式如下π(与-gnatW8)甚至Pi作为变量名(或在本例中为常量)的有效标识符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[“03C0”]如何匹配附件P中的语法? 的相关文章

  • 如何将 HTML 表格转换为 csv 格式?

    是否有 HTML 解析器或某些库可以自动将 HTML 表格转换为 CSV 数据行 Here is http www unix com shell programming scripting 45274 html table csv html
  • 使用 VB.NET 覆盖文本文件中的特定行

    我需要执行以下操作 更改文本文件中的行 Path c this certain path 用这条线 Path c that other newer path 这些路径的长度肯定会不同 因此我需要替换引号中的内容 或者完全擦除该行并输入一个新
  • 如何使用 string#split 用分隔符 + - * / ( ) 和空格分割字符串并将它们保留为额外标记?

    我需要拆分包含基本数学表达式的字符串 例如 a b c or a c d 分隔符是 和空格 我需要它们作为独立的标记 基本上结果应该是这样的 a b c 对于第二个例子 a 我读了很多关于具有不太复杂的分隔符的类似问题的问题 常见的答案是使
  • 学习Python中的解析器

    我记得我读过有关解析器的内容 您只需提供一些示例行 它就知道如何解析某些文本 它只是确定两条线之间的差异 以了解可变部分是什么 我以为它是用 python 写的 但我不确定 有谁知道那是什么图书馆吗 可能你的意思是模板制作器 http co
  • 从电话号码确定国际电话代码的算法

    我可以使用 iOS 上的地址簿框架从设备中检索联系人的电话号码 如何区分或识别哪个是国家 地区代码 哪个是实际电话号码 是否可以 国家 地区代码是一个相当混乱的主题 但足够标准 通过一些程序员维护就可以解决它 您可以通过其初始子序列来识别国
  • 生成基于内联 HTML 样式的样式表?

    一段时间以来 我一直致力于对网站的不同部分进行样式设计 但是我尚未将内联样式放入样式表中 我想知道是否存在一个工具可以解析 HTML 文件并从中生成样式表 例如 这是我网站的一个片段 div class block style border
  • 如果没有解析器生成器,如何用 C 或 Objective-C 编写解析器?

    我正在尝试用 C 或 Objective C 制作一个计算器 它接受以下字符串 8 2 4 3 9 2 并返回答案 2920 我不想使用像 Lex 或 Yacc 这样的生成器 所以我想从头开始编码 我该怎么做呢 除了 龙 这本书之外 还有其
  • 解析 XML 并检索信息 多层节点 Deep Java/Android

    我正在使用我的教授提供的示例 该示例从天气预报站点获取数据并解析 XML 文件以在列表中显示天气状况 我的程序类似 但我想检索嵌套在多个节点中的信息 但我不知道如何获取它 这是我正在处理的 XML 文件
  • 如何向 Parse Signup 功能添加额外属性?

    我想向我的解析注册函数添加一个额外的属性 我的代码就像 signUp function e var self this var username this signup username val var password this sign
  • Spark-Ada 数组总计的后置条件

    如何为对数组元素求和的函数编写 Spark 后置条件 Spark 2014 但如果有人向我展示如何为早期的 Spark 做到这一点 我应该能够适应它 所以如果我有 type Positive Array is array Positive
  • PHP - 解析具有固定列宽的文本文件

    我是 PHP 和 Laravel 的新手 我需要打开文件并解析内容以将它们传递到数据库 文本文件具有固定的列宽 它没有分隔符或标题 我认为使用子字符串并将每个子字符串分配给变量将是正确的方法 但我仍在学习该语言的过程中 我不知道如何实现这一
  • 是否有更快的方法来检查 LINQ to XML 中的 XML 元素并解析 bool?

    仅供参考 这与我的上一个问题非常相似 是否有更快的方法来检查 LINQ to XML 中的 XML 元素 https stackoverflow com questions 2065665 is there a faster way to
  • 解析器解析 SQL 查询并返回 Java 中的列名和相应的表名 [重复]

    这个问题在这里已经有答案了 可能的重复 Java 的 SQL 解析器库 https stackoverflow com questions 660609 sql parser library for java 我需要一个解析器 它应该以以下
  • Scala 组合器解析器 - 区分数字字符串和变量字符串

    我正在做 Cay Horstmann 的组合器解析器练习 我想知道区分代表数字的字符串和代表匹配语句中变量的字符串的最佳方法 def factor Parser ExprTree wholeNumber expr ident case a
  • 在 Android 上解析查询字符串

    Java EE 有ServletRequest getParameterValues http java sun com j2ee sdk 1 3 techdocs api javax servlet ServletRequest html
  • 是否可以使用 fparsec 解析“越位”(基于缩进)语言?

    我希望将 FParsec 用于基于缩进的类似 python 的语言 我知道这必须在词法分析阶段完成 但 FParsec 没有词法分析阶段 是否可以使用 FParsec 或者 词法分析后如何提供它 P D 我是 F 新手 但在其他语言方面经验
  • 寻找引文解析器

    我需要一个解析器来扫描学术文本 提取引文 并将这些引文解析为其组成部分 作者 标题 出版日期等 我尝试过 Paracite 但它速度非常慢 而且不能产生高质量的结果 任何语言都可以 但首选 Java 看一眼ParsCit http aye
  • String.Format 小数,带有千位分隔符和强制小数位

    我想String Format小数 使其同时具有千位分隔符和强制小数位 3 例如 Input 123456 12 78545 8 Output 123 456 120 78 545 800 我努力了 String Format 0 0 0
  • 在python中比较两个xml文件

    我是 python 编程新手 并且在理解这个概念时遇到了一些困难 我想比较两个 xml 文件 这些 xml 文件相当大 我将给出一个我想要比较的文件类型的示例 xml文件1
  • 如何使用用户输入变量作为通用包的参数?

    In Stack adb我指定了两个参数 大小和类型 我想创建一个堆栈 该堆栈的数据类型与用户在我的堆栈中指定的数据类型完全相同multistack adb file 我似乎找不到一种方法来创建新的包或使用用户定义的堆栈类型变量来实例化堆栈

随机推荐