什么是句法数据分析?

24.07.2024

什么是句法数据分析

 

语法分析是检查数据是否符合编程语言正确语法的阶段之一。它通过分析语法结构来完成。在了解其基础之前,这一过程可能看起来很复杂。这正是我们要帮助您做的。

为什么需要解析器?

在学习新程序之前,您应该了解为什么需要它们。这种分析至少有助于解决四个问题:

  • 检查代码的语法部分。
  • 帮助代码适应应用规则。
  • 检查打开的括号是否平衡。
  • 确定每种广告类型的存在。

它是验证输入数据正确性的可靠助手。

基本概念和术语

语法数据分析在多任务模式下工作,因此有很多术语和概念可能是新的,这并不奇怪。我们选择了几个最常见的术语。

1

句子是由相同字母的字符组成的一组。

2

词素是合成语言的最低单位。

3

标记词是词素的一种。

2

保留字是指不能用作名称的字。此外,关键字(第二个名称)不能用作变量标识符。

5

噪音词是提高可读性的附加词。

6

注释 – 文件中用 /* */ 或 //Blank 标出的部分。

7

分隔符是一种语法元素,用于标记一个单元的结束和开始。

8

标识符的长度限制是为了提高可读性。

 

您可以找到一本完整的数据分析词典来学习所有术语和概念。不过,我们建议您循序渐进,在实践中记住所有基础知识。

语法分析的组成部分

与移动代理一样,语法分析也有不同的组件和格式。数字数据格式以及日期和时间格式值得单独强调。

数字数据格式

数字数据格式分析由数字和特殊字符表示的数据。本质上,这些都是整数数据类型 – DT_I1、DT_UI1、DT_I2、DT_UI2 DT_I4、DT_UI4、DT_I8 和 DT_UI8。在本节中,有分析系统支持的数据和不支持的数据。

 

快速数字分析支持以下数据 快速数字分析不支持以下数据:
将制表符视为零的值,如 “123”。 不可能对包含任何国家货币符号的数值进行分析。
如果数值前面有正号、负号或没有任何符号。例如:+123、-123 或 123 不能使用空格、回车和换行字符。
在一个或多个数量中使用阿拉伯数字。  数字的指数表示法。例如,不可能对数字 1E+10 进行分析。

 

还值得记住几条输出规则。尤其是

  • 对于正数,不使用符号。
  • 对于负数,在数字本身之前使用符号“-”。
  • 字符之间没有空格。
  • 使用 0 至 9 的阿拉伯数字。

按照所有规则输入数据至关重要。否则,将无法进行分析或分析不正确。

日期和时间格式

除数字外,快速分析还支持不同的日期和时间格式。这些格式值得单独考虑,因为与 SIM 托管一样,以日期和时间格式进行分析也有其自身的细微差别。

1. 数据类型 “日期

该类型表示输入日期,格式为待分析格式。解析器支持以下字符串格式。输入日期时,第一个字符必须是空格。例如,可以使用 “06- 05- 2023 ”格式。您还可以探索分析器支持的其他格式。下面我们将详细介绍分析仪不支持的格式。

  • 只能以数字格式输入月份值。字母签名不合适。正确 – 06-05-2023,不正确 – 06-May-2023。
  • 截断格式 YYYYYDDD 和 YYYYY-DDD。
  • 不明确的日期格式。
  • 用四位数的年份、两位数的年份星期数和一位数的星期日数来描述日期。例如,不能输入 YYYYYNNNND 和 YYYYYY-NNN-D 格式的日期。

如果您刚刚开始分析工作,请选择您最熟悉的日期格式。

2. 数据类型 “时间

输入时间数据时,应使用以下有效格式:

  • 24 小时模式下的经典时间格式,首字符为空格。例如 – “ 11:39”。
  • 只能使用 24 小时格式。
  • 要使分析数据考虑时区格式,必须提供 DT_DBTIMESTAMPOFFSET 类型。此外,还有一些附加条件。例如,字符串中不包含空格。可以使用 HH:MM:SS[+HF:MM]在字符串中附加时区格式。

以时间和日期格式输入数据有很多规则。不过,这些规则还是值得学习的,所有的分析法则都会迎刃而解。

解析是

语法数据分析过程

在解析过程中,纯文本被转换成数据树。它显示了输入序列的结构。这种格式非常适合进一步转换和处理。处理后的数据可表示为依赖树或成分树。有时会同时使用这两种方式。

句法分析阶段

流程启动后,将进行词法分析,这涉及编译器的设计流程。语法树是使用特定语言及其语法开发的。此外,还要检查程序是否符合上下文自由语法的规则。如果数据输入正确,程序就会生成语法树。否则,分析结果将是一个错误,只有在纠正了所有不准确的地方后才会变成一棵树。

工具和技术

从本质上讲,解析器是一套工具和技术,可以分析大量数据,并以结构化系统的形式提供结果。使用的工具包括

  • ANTLR – 解析器生成器
  • Bison – 解析器生成器
  • Coco/R – 扫描器和解析器生成器
  • GOLD – 解析器
  • JavaCC – Java 语言的解析器生成器
  • Lemon Parser – 解析器生成器
  • Lex – 扫描仪生成器
  • Ragel – 嵌入式分析程序生成器
  • Spirit 解析器框架 – 解析器生成器
  • 语法
  • 语法定义形式主义
  • UltraGram
  • VivaCore
  • Yacc – 语法分析生成器

这并不是一份详尽的清单。分析师可能会使用其他产品来实现结果。您可以查看完整列表,并通过持续关注了解每种技术的更多信息。

算法类型

句法分析使用两种算法–标准算法和快速算法。它们不仅在处理速度上不同,在输出数据量上也有区别。

快速解析

快速解析是一套简单的分析操作。在处理过程中,只支持本地数据类型、日期和时间。系统不进行数据转换。通过支持数字类型的有机格式,分析器只能提供简单的解析程序。

标准解析

而标准系统则代表了更大的操作范围。它支持转换接口提供的所有数据类型。这包括 Oleaut32.dll 和 Ole2dsip.dll 库中的 API 数据。

标准分析支持国际数据类型,包括那些不在快速解析范围内的数据类型。这提供了更大的自由度,以及完整的分析数据,更易于操作和应用于进一步处理。

错误恢复

检测到错误时,分析仪必须能够报告错误、处理错误并继续分析。一些最常见的错误包括

  • 输入名称标识符的格式不正确。
  • 缺少分号或括号不平衡。此类错误属于语法类错误。用户经常会犯这类错误,尤其是在输入大量数据时。
  • 语义错误,即数值不兼容。
  • 无法到达的代码和其他逻辑类错误。

在编译的各个阶段都可能检测到错误。为了解决这些问题,分析器可以使用各种系统,就像在线代理检查程序一样。我们将向您介绍三种最常见的错误。

恐慌模式恢复

这种恢复方法包括拒绝所有输入符号。这种情况一直持续到形成一个单独的指定组为止。当检测到错误时,分析仪会忽略带错误的输入数据,直到我们输入分隔符。这种不复杂的紧急错误恢复方法有助于检测简单的错误。

短语级恢复

为了从编译器中断的地方继续进行分析,编译器会通过删除或插入标记来修正程序。这样,编译器就能对剩余的信号进行修正,替换前缀,继续解析过程。

错误生成

错误生成涉及扩展错误源语言的语法。之后,解析器会对构造进行错误诊断,并进行纠正。

使用解析的例子

现在让我们稍事休息,通过一个例子来了解一下语法分析的原理,从而说明什么是语法分析。语法是人类与计算机之间的交流语言。例如,您设定了一项任务,让计算机烹饪您最喜欢的菜肴,就当是罗宋汤吧。为此,您需要编写正确的查询。

正确的语法如下:print(“我们来做罗宋汤吧”)。错误的语法是 prin(“Let’s cook borscht.”)。正如你所理解的,错误的变体可能有很多。只要有一个错误,您就已经创建了一个错误的查询。分析器可以帮助您计算这些错误,检测并纠正它们。它可以帮助您找到与计算机的共同语言,让计算机 “煮 ”出美味的罗宋汤。

解析器是

使用解析器的缺点

解析器有很多缺点。这甚至适用于现代系统。我们希望解析器能在不久的将来获得新的发展动力,从而使这些缺点化为乌有。所以:

  • 通过语义分析,系统无法确定标记的有效性。
  • 在标记被使用之前,无法确定它是被使用了还是被初始化了。
  • 分析器无法确定是否执行了某个操作。

另外,值得一提的是掌握该系统的难度。尽管界面和功能简单,但分析仪需要一定的技能。这适用于从输入数据到读取结果的所有使用阶段。

总结一下

今天我们讨论了一个复杂的话题,涉及到许多重要的细微差别。为了使我们的谈话达到合乎逻辑的结尾,我们需要对所有内容进行系统化,并总结出一些结果。我们将强调最值得记住的 10 个要点。

1

句法分析是编译器开发过程的第二阶段。第一阶段是词法分析。

2

在重要的术语和概念中,您需要记住基本词汇–词素、注释、保留词、关键词、杂音词。更多有用词汇可参阅文章。

3

分析器的工作是检查输入数据的格式,拒绝错误格式的数据并提供解决方案。

3

分析器有助于调整现有规则,以适应代码编写。

5

将初始字符转换为字符串的规则决定了语法起源。

5

CFG 是至少有一个乘积的左递归语法。

7

在分析过程中,会出现词汇、句法和语义错误。这份清单可能还包括其他不常见的错误。

8

将括号元素括在方框内,就可以指定睡眠符号。

9

分析可以是标准的、快速的。

10

解析器方法的主要缺点是无法确定标记是否有效。

 

希望我们能够回答您关于句法分析的问题,并为您打开一扇了解这一复杂话题的大门。您将在网站上找到更多有趣而实用的资料。您还可以了解 LTESocks 代理服务器的价格、如何使用该系统为自己提供保护,以及是否值得为普通用户连接代理服务器。

閱讀下一篇

所有文章