正在寻找“分词器”、“解析器”和“词法分析器”的明确定义以及它们如何相互关联和使用?

2023-12-10

我正在寻找“分词器”、“解析器”和“词法分析器”的明确定义以及它们如何相互关联(例如,解析器是否使用分词器,反之亦然)?我需要创建一个程序将通过 c/h 源文件来提取数据声明和定义。

我一直在寻找示例并且可以找到一些信息,但我真的很难掌握语法规则、解析树和抽象语法树等基本概念以及它们如何相互关联。最终这些概念需要存储在实际的程序中,但是 1)它们是什么样的,2)是否有常见的实现。

我一直在查看有关这些主题和程序(例如 Lex 和 Yacc)的维基百科,但从未上过编译器课程(EE 主修),我发现很难完全理解正在发生的事情。


分词器通常通过查找空白(制表符、空格、换行符)将文本流分解为标记。

词法分析器基本上是一个标记生成器,但它通常会为标记附加额外的上下文——这个标记是一个数字,那个标记是一个字符串文字,另一个标记是一个相等运算符。

解析器从词法分析器获取标记流,并将其转换为代表由原始文本表示的(通常)程序的抽象语法树。

上次我查了一下,关于这个主题的最好的书是《编译器:原理、技术和工具》通常简称为“龙书”。

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

正在寻找“分词器”、“解析器”和“词法分析器”的明确定义以及它们如何相互关联和使用? 的相关文章

  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 如何读取本地 JSON 文件进行测试

    我正在尝试编写用于 json 验证的单元测试 因为该应用程序严重依赖于来自 REST API 的 json 我有一个包含简单 json 的本地文件 goodFeaturedJson txt 内容 test TEST 测试用例 void te
  • XML 和 INI 哪个更快?

    我想知道 XML 是否比 INI 更快 反之亦然 我正在开发一个包含许多文件的网站 这个问题与我的问题有关关于包含许多文件 https stackoverflow com questions 7777522 too many include
  • 如何在批处理文件中解析带有特殊分隔符的文件?

    我想使用批处理来解析一个如下所示的文件 a string containing various characters and spaces 1 b string containing various characters and space
  • 不使用 strtok() 的字符串分词器

    我正在编写一个不使用 strtok 的字符串标记生成器 这主要是为了我自己的提高以及对指针的进一步理解 我想我几乎已经完成了 但是我收到了以下错误 myToc c 25 warning assignment makes integer fr
  • 如何从 pandas 数据框中包含文本的列中提取年份(或日期时间)

    假设我有一个 pandas 数据框 Id Book 1 Harry Potter 1997 2 Of Mice and Men 1937 3 Babe Ruth Story The 1948 Drama 948 Babe Ruth Stor
  • 如果没有解析器生成器,如何用 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
  • PHP - 解析具有固定列宽的文本文件

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

    仅供参考 这与我的上一个问题非常相似 是否有更快的方法来检查 LINQ to XML 中的 XML 元素 https stackoverflow com questions 2065665 is there a faster way to
  • 用 C# 解析和查询 SOAP

    我正在尝试解析一个大量命名空间的 SOAP 消息 源也可以在here http tinyurl com n3av6k
  • 使用 PEG.js 忽略空格

    我想忽略空格 and 新线路按照我的语法 所以它们在PEG js http pegjs majda cz online输出 此外 括号内的文字应在新数组中返回 Grammar start a sep cat dog sep sep stmt
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • XAML解析异常

    我有一个简单的 XAML 页面 当它作为 Visual Studio 中任何应用程序的一部分加载时 加载效果良好 但是 当我使用 ClickOnce 部署此应用程序时 出现以下异常 Type System Windows Markup Xa
  • XSD 嵌套元素

  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • 通过 htaccess 将 PNG 解析为 PHP 仅适用于本地服务器,但不适用于网络服务器

    我用 PHP 创建了一个动态 PNG 图片 为了使用 PNG 扩展名 我创建了一个包含以下内容的 htaccess 文件 AddType application x httpd php png 在我的本地 XAMPP 服务器上 一切工作正常
  • 将数组的每个元素解析为整数

    我有一个字符串 需要将其拆分为一个数组 然后对数组的每个元素执行数学函数 目前我正在做这样的事情 实际上 我什么也没做 但这是一个非常简单的例子来解释我的问题 var stringBits theString split var resul
  • 伊德里斯统一意外失败

    我正在尝试在 Idris 中创建一个所谓的可判定解析器 起初我只是想解析自然数 但遇到了一个意想不到的问题 生成它的代码的最小示例如下 data Digit Char gt Type where Zero Digit 0 One Digit

随机推荐