parsing相关内容

LR、SLR 和 LALR 解析器有什么区别?

LR、SLR 和 LALR 解析器之间的实际区别是什么?我知道 SLR 和 LALR 是 LR 解析器的类型,但就它们的解析表而言,它们的实际区别是什么? 以及如何显示一个语法是 LR、SLR 还是 LALR?对于 LL 语法,我们只需要证明解析表的任何单元格都不应包含多个产生式规则.LALR、SLR 和 LR 是否有类似的规则? 例如,我们如何证明语法 S -->啊 |醋酸乙酯 | ..
发布时间:2022-01-17 08:42:40 其他开发

创建一个单独的“布尔表达式";动态语言规则

我正在 Bison 中为一种简单的动态类型语言创建语法.我有一个“通用"expression 规则,它有点类似于 C 中右值的概念;表达式出现在赋值的右侧,它们也可以作为参数发送给函数等.规则的一个大大简化的版本如下: 常量表达式: TOK_INTEGER_CONSTANT|TOK_FLOAT_CONSTANT|字符串字面量;表达: 常量表达式|标识符|布尔表达式|booleanExpressi ..

如何从形式语法生成句子?

从语法生成句子的常用方法是什么? 我想要一种与解析器相反的算法.也就是说,给定一个正式的上下文无关语法(比如 LL),我想生成一个符合该语法的任意句子.我在这里使用 sentence 来表示任何有效的文本主体,因此它实际上可以是一个完整的程序(即使它没有任何意义——只要它在语法上是正确的). 语法示例: 程序:新队?进口 : ("进口" NE ..

如何判断一种语言是否为 LL(1) LR(0) SLR(1)

有没有一种简单的方法可以判断一个语法是 LL(1)、LR(0)、SLR(1)... 只看语法而不做任何复杂的分析? 例如:要确定 BNF 语法是否为 LL(1),您必须计算 First 和 Follow 集 - 在某些情况下这可能很耗时. 有人知道如何更快地做到这一点吗?任何帮助将不胜感激! 解决方案 首先,有点迂腐.您无法通过检查语法来确定 语言 是否为 LL(1),您只能对 ..
发布时间:2022-01-17 08:32:17 其他开发

左分解和左递归之间的区别

Left Factoring 和 Left Recursion 有什么区别?我了解 Left factoring 是一种预测性自上而下的解析技术.但是当我听到这两个术语时,我会感到困惑. 解决方案 左因式是去除出现在同一个非终结符的两个产生式中的公共左因式.这样做是为了避免解析器进行回溯.假设解析器具有前瞻功能,请考虑以下示例: A ->问答 |质量控制 其中A、B和C是非终结符,q是 ..

如何创建.Net 编程语言?

我使用一些可用的各种解析工具创建了几种不同的完整编程语言.但是,有人将如何创建运行 .Net 框架的编程语言?我是否必须输出 .Net IL 并对其进行编译,还是有更高级别的抽象? 另外,有没有一种简单的方法可以让该语言在 Visual Studio 中工作? 解决方案 你会想看看 Microsoft Research Common Compiler Infrastructure ( ..
发布时间:2022-01-17 08:30:16 C#/.NET

如何用 Python 编写抽象语法树的访问者模式?

我的同事建议我编写一个访问者模式来导航 AST.谁能告诉我更多我将如何开始写它? 据我了解,AST 中的每个节点都会有 visit() 方法(?),它会以某种方式被调用(从哪里?).我的理解到此结束. 为了简化一切,假设我有节点 Root、Expression、Number、Op 并且树看起来像这样: 根|操作(+)/\/\号码(5)\操作(*)/\/\/\号码(2) 号码(444 ..

LL和LR解析有什么区别?

谁能给我一个 LL 解析与 LR 解析的简单示例? 解决方案 在高层次上,LL 解析和 LR 解析的区别在于 LL 解析器从开始符号开始,并尝试应用产生式到达目标字符串,而 LR 解析器从目标字符串开始并尝试返回开始符号. LL 解析是从左到右、最左边的推导.也就是说,我们从左到右考虑输入符号并尝试构造最左推导.这是通过从开始符号开始并重复扩展最左边的非终结符来完成的,直到我们到达目 ..
发布时间:2022-01-17 08:28:23 其他开发

在编译过程中如何查看解析树、中间代码、优化代码和汇编代码?

我正在学习编译器课程,程序编译如下步骤 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成. 如何查看每个步骤的输出,例如我想在语法分析后查看解析树. 我正在使用 GCC 编译器在 Linux 机器上编译程序. 我们可以在gcc中使用-Wa编译器选项查看程序的汇编代码,同样有查看Tokens、Parse tree和Inetmediate code的 ..
发布时间:2022-01-17 08:07:27 其他开发

解析器、解释器和编译器的学习资源

一段时间以来,我一直想尝试编写自己的语言(表面上是为了学习经验),因此需要在解析器、解释器和编译器的构建方面相对扎实.所以: 有没有人知道关于构建解析器、解释器和编译器的任何好的资源? 编辑:我不是在寻找编译器编译器/解析器编译器,例如 Lex、Yacc 和 Bison... 解决方案 我读过的关于编译器的最好的论文是日期 1964Val Schorre 的“META II 一 ..

支持时区的 PHP 中的 ICalendar 解析器

我正在寻找一个可以解析 ICalendar (ICS) 文件并正确处理时区的 PHP 类. 我自己已经创建了一个 ICS 解析器,但它只能处理 PHP 已知的时区(如“欧洲/巴黎"). 很遗憾,Evolution(Ubuntu 的默认日历软件)生成的 ICS 文件不使用默认时区 ID.它使用特定的时区 ID 导出事件,同时导出时区的完整定义:夏令时日期、重复规则以及所有难以理解的有关时 ..
发布时间:2022-01-16 19:26:35 PHP

转换没有时区的日期时间

我在字符串中有日期:“2013-07-22T08:51:38.000-07:00" 当我尝试解析这个字符串时,我收到带有偏移量的日期时区. 如何在没有时区偏移的情况下做到这一点? ---更新--- 我收到的是:DateTime.Parse("2013-07-22T08:51:38.000-07:00") = 7/22/2013 7:51:38 PM但我需要接收 7/22/2 ..
发布时间:2022-01-16 19:01:30 C#/.NET

使用 jq 将 x=y 对转换为键/值对

我正在尝试从 docker inspect 的 JSON 输出中解析环境变量.令人讨厌的是,这些环境变量不会作为有用的键值对返回.它们只是 x=y 字符串的数组.这是输出的相关片段: [{“配置":{“环境":["JENKINS_HOST=1.2.3.4","JENKINS_INSTANCE=茶","JENKINS_NAME=企业架构工具","JENKINS_VERSION=2.46.2","J ..
发布时间:2022-01-16 00:01:07 其他开发

VBA HTML Scraping - 来自复杂表的“.innertext"

全部, 我创建了以下模块来从以下地址中提取单个值(伦敦房价变化 100 万%): https://www.hometrack.com/uk/insight/uk-cities-house-price-index/ 具体值嵌套在以下代码中: 下面的 VBA 代码是我的抓取尝试.我,也许是错误的,觉得我非常接近捕获价值——但代码不起作用. 有人知道我哪里出错了吗?它不显示 ..
发布时间:2022-01-15 21:38:24 其他开发