问题标签 [parser-generator]

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 回答
83 浏览

java - 支持后缀协议的解析器生成器或库

我正在研究某种语言的句法解析器。但是这种语言对后缀协议的要求很高。例如,在英语中,动词必须与代词一致,如 I、we、you-do 或 he、she、it、this-does 等。在这种语言中,动词对每个代词都有不同的形式。我在文献中知道这是通过统一方法处理的。但是我在Java中找不到它的任何实现。我还研究了斯坦福解析器和 ANTLR,但我找不到任何证据表明它们支持后缀协议。

那么哪个工具或lib。你会在这种情况下提供给我吗?

提前致谢。

0 投票
3 回答
3453 浏览

parsing - 解析中使用的 FIRST 和 FOLLOW 集是什么?

什么是 FIRST 和 FOLLOW 集?它们在解析中用于什么?它们是用于自上而下还是自下而上的解析器?

谁能向我解释以下一组语法规则的 FIRST 和 FOLLOW SETS:

0 投票
1 回答
320 浏览

actionscript-3 - 多级解析算法

改写...

我想知道如何最好地解析函数/条件。所以如果你有类似的东西:[if {a} is {12 or 34}][if {b} not {55}] show +c+ [/if][/if]这是条件中的条件。看起来我不能只用正则表达式来做到这一点。


原始问题

现在我有一个非常简单的方法来通过 actionscript 解析一些命令。

我正在使用正则表达式来查找标签、命令和操作数...

我当前的算法将开始标签[**]与第一个结束标签匹配,[/**]即使它不匹配。这意味着我不能做类似的事情[ifempty +val_2+][ifnotempty +val_2]+val_3+[/ifnotempty]+val_4+[/ifempty]- 基本上将一个条件放入另一个条件中。

我正在使用一种内联的解析方式,它根据这个正则表达式将字符串拆分为一个字符串数组\[[^\/](?:[^\]])*\](?:[^\]])*\[\/(?:[^\]])*\]

任何人都可以建议一个更强大的算法和更强大的解析约定/标准吗?特别是对于 as3。

0 投票
7 回答
43724 浏览

pdf - 从 PDF 文件中提取文本数据

是否可以在 R 中解析 PDF 文件中的文本数据?似乎没有用于此类提取的相关软件包,但有没有人尝试或看到在 R 中完成此操作?

Python 中有 PDFMiner,但如果可能的话,我想把这个分析全部保存在 R 中。

有什么建议么?

0 投票
3 回答
890 浏览

c# - How to PARSE HTML Files and SUBMIT information programmatically

ASP.NET 4 & C# and

I would like to know which CODE, Classes could be useful for creating a WEB APPLICATION that could:

Also how to implement:

I am interested in understanding Classes and general practice and CODE for accomplish this task.

If you have any idea please let me know. Thanks guys once again for your support! :-)

0 投票
1 回答
623 浏览

php - Lemon Parser-Generator:不评估非终结符吗?

我尝试学习解析器。因为我的 C 技能相当低,我用谷歌搜索了一个PHP Lemon来学习解析器生成器。无论如何,这里的代码对于普通的柠檬朋友也应该是可读的。

与处理解析问题时一样,我首先尝试制作一个简单的计算器。

所以我的第一步很简单:

解析第一个测试的内容:

...结果:

所以,一切如预期。现在我们尝试准备一个最终允许我们处理操作的步骤,即expression

当我现在运行相同的测试时,我希望看到相同的输出,加上一行说got a value: 13. 但我只是得到这个:

嗯,发生了什么事?为什么结果行是空的?显然expr评估为VALUE“13”。柠檬不关心评价吗?我必须以某种方式自己做吗?但是,如果我在这一点上一无所获呢?

0 投票
1 回答
2473 浏览

compiler-construction - 自上而下的解析器希望在“代码”中有不错的案例示例左递归

你好,堆栈的流成员。

我正在学习编译器类。我确实理解 Top-Down Parser 应该避免左递归,并转换为右递归方式。

问题是,

a)我是否理解正确的 Top-Down Parser 等于 LL 而 Bottom-Up Parser 等于 LR ?

b) 我发现左递归是自称 ex) Expr :== Expr '+' Term | 可以导致无限循环查找 Expr 的项。但无论如何,任何考虑输入 C 或 Java 的示例代码?(我不想要解析器或扫描仪代码)我需要的是带有句子形式的案例代码示例,通过左递归发生无限循环。

c) 在自顶向下解析器中使用右递归实际上有什么不同?

ANS c) 无需回溯。但还有别的吗?

ANS b)x - 2 * y还有别的东西吗?因为这个适用于回溯的解析方式。

我发现了非左递归和左递归的案例示例。

左递归语法

非左递归语法

两者都进入无限循环。

谢谢你,感谢你所有的专家。

0 投票
2 回答
1092 浏览

parsing - 编写 BNF 时 { 和 } 之间有什么?

我在使用 BNF 时遇到了一些问题。我不知道什么似乎是标准的做事方式(如果有的话),以及是否有像 char 或 int 这样的类型或任何已经内置的类型。

但是,我的主要问题是不了解大括号中的 BNF 部分是如何工作的。
给定类似的东西:

(这是从某个地方随便偷来的,用于 yacc / C)

花括号中的内容实际上是在说什么?我也为快乐的解析器生成器看过类似的东西,并且同样感到困惑。

0 投票
2 回答
765 浏览

c++ - 如何解释自定义语言

我有一个 C++ 应用程序,它实际上处理一个二进制文件。二进制文件是事件的集合,例如 A/B/C,在文件中检测到事件 A 时,应用程序会在“处理程序 A”中处理事件。

现在我需要用自定义语言编写另一个脚本,该脚本与二进制文件处理正交执行。脚本可以有类似的东西,

因此,当应用程序处理来自二进制文件的事件“A”时,应用程序必须解析此脚本文件,检查 OnA 并将 OnA proc 中的语句转换为应用程序支持的例程。例如,QueryVariable 应该将应用程序中定义的变量“cat”的值复制到变量“C”。该应用程序还应检查脚本中语言的语法/语义。我在哪里可以获得决定设计的最佳信息?我对解析树/语法的了解真的变弱了。

谢谢

0 投票
7 回答
14359 浏览

parsing - LL 解析器比 LR 解析器有什么优势?

LL 解析器与 LR 解析器相比有哪些优势,以保证它们在当今的解析器生成器工具中相对受欢迎?

根据Wikipedia,LR 解析似乎比 LL 具有优势:

LR解析比LL解析可以处理更大范围的语言,并且在错误报告方面也更好,即当输入不符合语法时,它会尽快检测到语法错误。这与 LL(k)(或更糟糕的是,LL(*) 解析器)形成对比,后者可能会由于回溯而将错误检测推迟到语法的不同分支,这通常会使错误更难在具有长公共前缀的析取中定位.

注意:这不是家庭作业。当我发现 Antlr 是一个 LL 解析器生成器时,我感到很惊讶(尽管它的名字中有“LR”!)。