问题标签 [lexer]

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 投票
2 回答
1795 浏览

javascript - 什么是 Javascript 语言文件的好的 Delphi 词法分析器/解析器?

背景

我希望能够在 Delphi 应用程序中解析 Javascript 源代码。我需要能够识别源代码中的变量和函数,以便通过以后的代码对代码进行更改。我知道我可能需要为此目的使用词法分析器,但使用我找到的词法分析器(Dyaclexx)运气不佳。

问题

是否有合适的免费软件或开源 delphi 解析器/词法分析器已经具有 Javascript 的令牌集,或者可以轻松地为此目的进行修改而没有太多麻烦?

如果没有这样的工具可用,那么学习为此目的编写自己的词法分析器的最佳方法是什么?

谢谢

0 投票
2 回答
4509 浏览

python - 你将如何解析缩进(python 风格)?

您将如何定义解析器和词法分析器规则来解析使用缩进定义范围的语言。

我已经用谷歌搜索并找到了一种通过在词法分析器中生成 INDENT 和 DEDENT 标记来解析它的聪明方法。

如果我遇到有趣的事情,我会更深入地研究这个问题并发布答案,但我想看看解决这个问题的其他方法。

编辑:正如查理指出的那样,如果不一样的话,已经有另一个非常相似的线程了。我的帖子应该被删除吗?

0 投票
4 回答
39087 浏览

parsing - 寻找“标记器”、“解析器”和“词法分析器”是什么以及它们如何相互关联和使用的明确定义?

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

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

我一直在查看有关 Lex 和 Yacc 等主题和程序的 Wikipedia,但从未学习过编译器类(EE 专业),我发现很难完全理解发生了什么。

0 投票
3 回答
2023 浏览

parsing - 具体和抽象语法树的标准格式

我有一个爱好项目的想法,该项目执行一些代码分析和操作。该项目将需要给定源文件的具体和抽象语法树。此外,两棵树之间的双向引用会很有帮助。我想避免转录语法来构建我自己的词法分析器和解析器的工作。

是否有描述具体或抽象语法树的标准格式?是否有任何广泛使用的工具链支持输出到这些格式?

我没有考虑特定的目标编程语言。任何流行的原型都可以,但我更喜欢我熟悉的原型:Python、C#、Javascript 或 C/C++。

我希望能够通过工具或库运行源文件并取回两棵树。在理想情况下,在代码上运行该工具是可行的,因为它正在由用户编辑并且可以容忍错误。同样,我只是想开发一个原型,所以这些要求非常宽松。

谢谢!

0 投票
2 回答
160 浏览

java - 创建 Java 扩展的最佳工具是什么?

我们的项目组正在开发一个 Java 语言扩展,并且我们一直在试图找出我们应该为此目的使用什么工具。该扩展主要包括对 Java 中使用的并发模型的修改。到目前为止,我们一直在研究两种工具:Polyglot 和 Javacc。Javacc 似乎更易于使用,但由于我们将对语言进行一些重大更改,因此在更高级的 Polyglot 上使用它可能仍然不是一个好主意,因为它可能更好地应对增加的复杂性.

您对这些工具有任何经验和/或您有其他工具推荐吗?

0 投票
7 回答
26245 浏览

c# - 穷人的 C#“词法分析器”

我正在尝试用 C# 编写一个非常简单的解析器。

我需要一个词法分析器——它可以让我将正则表达式与标记相关联,因此它可以读取正则表达式并返回符号。

似乎我应该能够使用 Regex 来完成实际的繁重工作,但我看不到一个简单的方法来做到这一点。一方面,Regex 似乎只适用于字符串,而不适用于流(为什么会这样!?!?)。

基本上,我想要以下接口的实现:

所以,请发送 codz...
不,说真的,我即将开始编写上述接口的实现,但我发现很难相信在 .NET (2.0) 中已经没有一些简单的方法可以做到这一点.

那么,对于执行上述操作的简单方法有什么建议吗?(另外,我不想要任何“代码生成器”。性能对于这件事并不重要,我不想在构建过程中引入任何复杂性。)

0 投票
7 回答
9203 浏览

parsing - 词法分析器/解析器工具

哪个词法分析器/解析器生成器对于 C 或 C++ 来说是最好的(最容易使用、最快的)?我现在正在使用 flex 和 bison,但 bison 只处理 LALR(1) 语法。我正在解析的语言实际上并不需要无限前瞻,但无限前瞻会使解析变得容易得多。我应该尝试 Antlr 吗?可可/R?猎鹿犬?还有什么?

0 投票
3 回答
2874 浏览

python - 使用 Python 解析 .h 文件以获取注释的简单方法?

如何使用Python以简单的方式解析用C编写的.h文件以获取注释和实体名称?

我们假设进一步将内容写入已经开发的word文件。

源注释使用简单的标记样式规则进行格式化。注释标签用于轻松区分一个实体注释与其他实体注释和非文档注释。评论可以是多行形式。每个评论都直接关注实体定义:

此解析的结果应该是代码和注释树。

如何在不使用第三方库的情况下快速完成?

0 投票
3 回答
492 浏览

text - 用于语法着色的状态机

我目前正在学习词法分析器和解析器的工作方式,并且我有以下关于状态机的问题。例如,我需要通过以下规则为文本着色:对于此规则,简单的状态转换表将如下所示:

这将为 '$' 和行尾之间的每个字符调用 OnColor() 操作,以便我可以对其进行着色。当然同样可以从正则表达式自动生成,但我真的很想知道在大量使用魔法之前它是如何工作的:)。接下来是问题:如果我有一个规则:(想为任何以美元结尾的文本行着色,状态转换表不是很清楚:

我可以教我的状态机调用 OnDollar() 如果它在行尾找到一个“$”符号,但是我可以做些什么来为遇到美元符号之前的文本着色?解决此类问题的常见模式是什么?当然,它将是 1 行与正则表达式,但我真的很想知道如何通过状态机实现这样的解析器,是否有可能。

0 投票
3 回答
796 浏览

parsing - 寻求用于创建上下文无关解析器语法的交互式实用程序

我想要一个实用程序,我可以提供一段文本(在文本框中)并尝试解析器语法(通过编辑类似的 BNF)和令牌结构,同时我可以看到解析树的外观(如果它是无法使用我当前的语法解析文本,我会看到它在哪里停止)。

关键词是交互性。例如,我可以使用 flex 和 bison 来做到这一点,但我必须不断地重新创建我的词法分析器和解析器。

外面有这样的东西吗?我还没有找到。理想情况下,它应该在 Linux 中工作并且是免费的,如果这不是一个选项,它仍然很有趣。