问题标签 [gold-parser]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
769 浏览

c# - 从 GOLD-Parser CGT-File 中提取关键字

我已经定义了一个包含许多规则的语法,它使用了许多关键字。想象一下(只是使用更多这些规则和更多关键字):

gold-parser-system 正在生成一个已编译的语法表 (CGT) 文件,该文件由多个引擎使用,在我的例子中是 c# 的 calitha-engine。

为了实现我想要解析的源代码的语法高亮,我想获取一系列规则的所有关键字。我如何提取它们?

0 投票
6 回答
3829 浏览

c++ - 在 C++ 中解析许多小文本的最佳解析器生成器?

出于性能原因,我正在将 C# 库移植到 C++。在正常操作期间,除其他外,该库需要解析大约 150'000 个平均长度小于 150 个字符的数学表达式(想想 excel 公式)。

在 C# 版本中,我使用 GOLD 解析器生成解析代码。它可以在一秒钟内解析所有 150'000 个表达式。

因为我们正在考虑扩展我们的语言,所以我认为转向 C++ 可能是改用 ANTLR 的好机会。我已将(简单)语法移植到 ANTLR 并从中生成 C 代码。解析 150'000 个表达式需要超过 12 秒,因为对于每个表达式,我需要创建一个新的 ANTL3_INPUT_STREAM、令牌流、词法分析器和解析器 - 至少在 3.4 版中,没有办法重用它们。

如果有人可以给我一个建议,我将不胜感激 - GOLD 当然是一种选择,尽管生成 C++ 或 C 代码似乎比 C# 品种复杂得多。我的语法是 LALR 和 LL(1) 兼容的。最重要的是解析小输入的性能。

0 投票
1 回答
65 浏览

d - 让 Piepkorn GOLD 引擎与 Tango 0.99.9 一起使用

我无法让Piepkorn GOLD 引擎(2007 年发布)在我的盒子上工作(DMD 1.056/Tango 0.99.9/Windows 7)。

它导入了我使用的 Tango 版本中不再存在的模块tango.io.MemoryConduit 。

摘抄:

我想tango.io.Conduit已被tango.io.device.Conduit取代。


我的问题:

我应该导入什么模块来代替tango.io.MemoryConduit,因此我应该使用什么构造来代替auto mem = new MemoryConduit

0 投票
1 回答
1610 浏览

grammar - GOLD Parser 注释语法

我的语法中的注释块有一些问题。语法很好,但第 3 步 DFA 扫描程序抱怨我的处理方式。

我试图解析的语言如下所示:

{statement}{statement} 等

每个语句中可以包含几种不同类型的注释:

这是一个简化的语法,显示了我遇到的问题:

第 3 步是抱怨 <Statements> 中的 } 和词组末尾的 }。

有人知道如何完成我需要的吗?

[编辑]
我让 REM 部分使用以下内容:

这实际上是理想的,因为备注对我来说不一定是噪音。

仍然有评论词汇组的问题。我会以同样的方式解决问题。

0 投票
1 回答
274 浏览

context-free-grammar - GOLD 解析器创建者和终端

我正在尝试使用 GOLD 解析器构建器为脚本语言创建语法,因为我想要在 C# 中输出。但是,解析器显然希望终端是唯一的。但是,终端的含义可以是上下文相关的?!考虑符号“-”。两者-xx-y都是有效的,可以编写如下语法:

然而,现在符号“-”被定义了两次,一次是由第二个生产规则中隐含的 (!) 定义的符号,<Expression>一次是终端(由 Opers 定义)。

最重要的是,字符串也可以包含 - 符号,添加 '-' 的第三个定义!?你如何规避这一点?我在 GOLD 的文档或网络上的任何地方都没有看到任何关于此的信息。我认为有一些我不知道的与 Parser 构建器合作的主要方式。

如果这是一个基于表的解析器无法解决的问题,我有什么替代方案,因为我想要 C# 输出?

0 投票
1 回答
1808 浏览

php - 如何在magento中实现基于重量的动态计算价格?

嗨,我正在 Magento 为珠宝业务开发一个电子商务网站,它基于“重量”,而不是价格,因为黄金价格每天都在变化,或者一天内变化超过 3 次。所以不可能改变产品价格每次按金价计算。那么,在这种情况下如何管理价格呢?

示例:今天我在我的网站上添加了一个 10gm 的 18K 金戒指,现在黄金价格是每 10gm 30,000 卢比,所以今天这个戒指的价格是 30,000 卢比,但是,第二天价格会改变(32 卢比, 000 每 10 克)然后,我的产品价格必须从 30,000 卢比更改为 32,000 卢比。

这不可能每次都更新所有产品的价格。我正在使用 Magento 平台。请分享您对这种情况的想法。

0 投票
1 回答
260 浏览

parsing - Persistent Shift - 减少 Goldparser 中的冲突

我真的陷入了 Goldparser 中的 Shift-Reduce 冲突。

我写了一个类似 PHP 的语法,理论上应该可以解析以下脚本:

在顶部,我想分配全局变量,然后是函数定义。

为了缩小问题范围,我将我的大语法减少到可以重现错误的以下几行。显然这是不完整的。这些函数没有参数,没有返回值,也没有语句......

在构建 LALR 表时,Goldparser 告诉我:

“Shift-Reduce 冲突已修复为‘私人’、‘受保护’、‘公共’可以遵循已完成的规则​​,也可以进行转移。通过选择‘转移’操作而不是‘减少’来解决冲突。小心,一些部分语法可能无法访问。建议您尝试删除所有冲突。”

但它应用的修复使语法无法正常工作。在上面的示例中,尽管我将它们声明为可选的function Main(),但在需要 ' private'、' protected' 或 ' ' 的地方出现语法错误。public

当我<ModifierOpt><FuncDef>定义或定义中删除时,错误消失了<GlbAssignVar>

我不知道如何解决这个问题。请帮忙!

0 投票
1 回答
239 浏览

context-free-grammar - 语法冲突 - Reduce 减少冲突 Gold sparser

我在下面的代码中遇到了减少-减少冲突,我尝试了几乎所有我想出的解决它的想法,这是问题的报告,这是一个 BNF->Gold 解析器转换任何解决它的想法我会很感激

这是报告:

0 投票
1 回答
217 浏览

vbscript - GoldParser:接受不以空行结尾的程序

我正在为 VBScript 重写 GoldParser 语法。在 VBScript 中,语句使用换行符或':'. 因此我使用以下终端:

因为每条语句都必须以Newline终端结尾,所以只接受以空行结尾的程序。如何扩展换行终端以接受不以空行结尾的程序?我尝试了以下方法:

这不起作用,因为{EOF}(End of File) 组不存在。

0 投票
1 回答
353 浏览

parsing - VBScript 语法:如何对不带括号的子调用建模

我正在为 VBScript 编写 GOLD Parser 语法。这是一个摘录:

我对<CallStmt> ::= <CallExpr> <ParameterList>规则有冲突。此规则描述了调用不带括号的 sub。例如,以下语句在语法上是正确的:

如何区分带有括号sub1(1, 2)的子调用和带有括号的子调用sub2(1),(2)