问题标签 [jflex]

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

java - 使用 JFlex/CUP 和一些问题构建编译器

我目前正在为 BASIC 语言开发一个简单的编译器,我发现了一些我想问你的问题。

第一个很简单,我应该在哪里定义我的令牌?我的意思是,在 Lexer.java 文件中,我使用以下表达式将标记发送到解析器: return symbol(sym.STATIC); STATIC 对我来说是一个令牌,但我不知道在哪里定义它。

其次,我应该在哪里定义创建 Lexer 和 Parser 实例的主类?在 Parser 类中还是在另一个类中?

先谢谢了。

0 投票
2 回答
132 浏览

java - 名称问题的正则表达式

我需要正则表达式来识别可以是[a-zA-Z_]then .(dot) then again的名称[a-zA-Z_]。我([a-zA-Z_]+) \.([a-zA-Z_]*),但它不起作用。帮助 ?谁能给我锄头在 JFlex 中做到这一点?

0 投票
2 回答
671 浏览

java - [[:jletterdigit:]] 到经典正则表达式

JFlex 的 [[:jletterdigit:]] 中有哪些字符?我需要将 [[:jletterdigit:]] 翻译成经典的正则表达式。

0 投票
1 回答
1726 浏览

java - 从解析器创建抽象树问题

我需要很大的帮助,我有两个简单的类 Tree 和 Node(我只放了接口以在论坛上使用更少的空间,我可以轻松修改这些类),我还有 flex 文件和解析器文件并且需要创建 AST(抽象语法树- 将标记放入节点对象并以正确的方式填充树)。

这是解析器文件

这是语法

问题是如何从这里创建 AST,我得到了类似的输入表达式

A.open && bi ? 有人可以帮忙吗?

0 投票
1 回答
2049 浏览

java - 设置 jFlex 时遇到问题

我想使用 jFlex。试图搜索在线教程。但都指向同一个链接。我无法在我的机器上成功设置和使用 Flex。如果有人能给我指出一个好的教程,那就太好了。

提前谢谢。

0 投票
1 回答
12084 浏览

parsing - 使用 Java CUP 生成解析树

我正在使用 CUP 和 JFlex 来验证表达式语法。我有基本的功能:我可以判断一个表达式是否有效。

下一步是实现简单的算术运算,例如“加 1”。例如,如果我的表达式是“1 + a”,那么结果应该是“2 + a”。我需要访问解析树才能做到这一点,因为简单地识别一个数字项是行不通的:将 1 添加到 "(1 + a) * b" 的结果应该是 "(1 + a) * b + 1" ,而不是“(2 + a)* b”。

有没有人有一个生成解析树的 CUP 示例?我想我可以从那里拿走它。

作为额外的奖励,有没有办法使用 JFlex 获取表达式中所有标记的列表?似乎是一个典型的用例,但我不知道该怎么做。

编辑:找到关于堆栈溢出的有希望的线索: 从解析器创建抽象树问题

CUP和AST的讨论:

http://pages.cs.wisc.edu/~fischer/cs536.s08/lectures/Lecture16.4up.pdf

具体来说,这一段:

解析器返回的符号与语法的开始符号相关联,并包含整个源程序的 AST

这无济于事。如果 Symbol 类没有任何指向其子级的导航指针,如何遍历给定Symbol实例的树?换句话说,它看起来或行为不像树节点:

0 投票
0 回答
186 浏览

java - 语法分析和解析器

我想解析类似的东西:

变量路径

“path”和“to”是名为“Instance”的对象,变量引用了一个double。

我有以下语法:

在这个语法中:

  • INSTANCE_SEPARATOR 是“。” 字符。
  • SHORTCUT 是一个仅包含“path”、“to”或“variable”之类的字母的名称。
  • expr 必须返回通过调用函数 getDouble 获得的双精度值,该函数采用名称(此处为“变量”)。此函数使用当前选定的实例。一个实例包含一个包含双精度或其他实例的哈希表。
  • pushInstance 是一个设置当前实例的函数

例如我们可以有:

  • 包含哈希表的实例“路径”:“to”=>链接到实例“to”
  • 一个实例“to”,其中包含一个哈希表:“variable”=>10
  • 路径“path.to.variable”必须返回 10。

这不会运行,因为语法抱怨空值。这是因为解析器这样做:

)

而不是做

为什么 ?有优先级问题吗?

最后,如果我删除 instancePath 规则,所有运行:

我无法删除这些额外的规则,因为我已经简化了示例,但实际上它要复杂得多。

我不明白为什么删除这个额外的规则可以解决我的问题......

0 投票
1 回答
1067 浏览

regex - 用于将具有优先级的多个正则表达式匹配到多个字符串的 Java 工具

我有无限的字符串序列和许多按优先级排序的正则表达式。对于序列中的每个字符串,我必须找到第一个匹配的正则表达式和匹配的子字符串。字符串不是很长(<1Kb),而正则表达式的数量可能从数百到数千不等。

我正在寻找一种能够有效完成这项工作的 Java 工具。我想该技术应该是在前面构建 DFA。

我目前的选择是 JFLEX。我无法在 JFLEX 中解决的问题是它的规则没有优先级,而 JFLEX 会查找与文本最长部分匹配的规则。

我的问题是我的问题是否可以用 JFLEX 解决?如果没有,你能推荐另一种 Java 工具/技术吗?

0 投票
2 回答
518 浏览

regex - jflex:为什么这个正则表达式匹配?

在我的词法分析器中,我编写了以下正则表达式:

我在调试模式下执行了byacc/j,它指出以下行与正则表达式匹配。
但是为什么这个正则表达式匹配这一行呢?

我也试过"///"\s*[^\@\s].*,万一@是特殊字符,但它也匹配。oO

我认为我的正则表达式只会匹配一个///以可选空格开头的字符串。除了必须出现的任何非空白字符之外@,后跟任何字符。

编辑:对不起,我的意思是在 jflex 中使用正则表达式,而不是byacc/j。

解决方法:jflex 文档中我没有找到任何\s转义序列,所以我尝试了这个正则表达式"///"[ \t\f]*[^@ \t\f].*并且它有效。jflex似乎\s不支持转义字符并默默地忽略它。

0 投票
0 回答
120 浏览

actionscript-3 - 如何从 .jflex 文件生成 Actionscript 类?

有没有办法从 .jflex 文件生成动作脚本类?我知道我们可以生成 Java 文件,但我需要 AS3 类。