问题标签 [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.
java - 使用 JFlex/CUP 和一些问题构建编译器
我目前正在为 BASIC 语言开发一个简单的编译器,我发现了一些我想问你的问题。
第一个很简单,我应该在哪里定义我的令牌?我的意思是,在 Lexer.java 文件中,我使用以下表达式将标记发送到解析器: return symbol(sym.STATIC); STATIC 对我来说是一个令牌,但我不知道在哪里定义它。
其次,我应该在哪里定义创建 Lexer 和 Parser 实例的主类?在 Parser 类中还是在另一个类中?
先谢谢了。
java - 名称问题的正则表达式
我需要正则表达式来识别可以是[a-zA-Z_]
then .
(dot) then again的名称[a-zA-Z_]
。我([a-zA-Z_]+) \.([a-zA-Z_]*)
,但它不起作用。帮助 ?谁能给我锄头在 JFlex 中做到这一点?
java - [[:jletterdigit:]] 到经典正则表达式
JFlex 的 [[:jletterdigit:]] 中有哪些字符?我需要将 [[:jletterdigit:]] 翻译成经典的正则表达式。
java - 从解析器创建抽象树问题
我需要很大的帮助,我有两个简单的类 Tree 和 Node(我只放了接口以在论坛上使用更少的空间,我可以轻松修改这些类),我还有 flex 文件和解析器文件并且需要创建 AST(抽象语法树- 将标记放入节点对象并以正确的方式填充树)。
这是解析器文件
这是语法
问题是如何从这里创建 AST,我得到了类似的输入表达式
A.open && bi ? 有人可以帮忙吗?
java - 设置 jFlex 时遇到问题
我想使用 jFlex。试图搜索在线教程。但都指向同一个链接。我无法在我的机器上成功设置和使用 Flex。如果有人能给我指出一个好的教程,那就太好了。
提前谢谢。
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实例的树?换句话说,它看起来或行为不像树节点:
java - 语法分析和解析器
我想解析类似的东西:
变量路径
“path”和“to”是名为“Instance”的对象,变量引用了一个double。
我有以下语法:
在这个语法中:
- INSTANCE_SEPARATOR 是“。” 字符。
- SHORTCUT 是一个仅包含“path”、“to”或“variable”之类的字母的名称。
- expr 必须返回通过调用函数 getDouble 获得的双精度值,该函数采用名称(此处为“变量”)。此函数使用当前选定的实例。一个实例包含一个包含双精度或其他实例的哈希表。
- pushInstance 是一个设置当前实例的函数
例如我们可以有:
- 包含哈希表的实例“路径”:“to”=>链接到实例“to”
- 一个实例“to”,其中包含一个哈希表:“variable”=>10
- 路径“path.to.variable”必须返回 10。
这不会运行,因为语法抱怨空值。这是因为解析器这样做:
)
而不是做
为什么 ?有优先级问题吗?
最后,如果我删除 instancePath 规则,所有运行:
我无法删除这些额外的规则,因为我已经简化了示例,但实际上它要复杂得多。
我不明白为什么删除这个额外的规则可以解决我的问题......
regex - 用于将具有优先级的多个正则表达式匹配到多个字符串的 Java 工具
我有无限的字符串序列和许多按优先级排序的正则表达式。对于序列中的每个字符串,我必须找到第一个匹配的正则表达式和匹配的子字符串。字符串不是很长(<1Kb),而正则表达式的数量可能从数百到数千不等。
我正在寻找一种能够有效完成这项工作的 Java 工具。我想该技术应该是在前面构建 DFA。
我目前的选择是 JFLEX。我无法在 JFLEX 中解决的问题是它的规则没有优先级,而 JFLEX 会查找与文本最长部分匹配的规则。
我的问题是我的问题是否可以用 JFLEX 解决?如果没有,你能推荐另一种 Java 工具/技术吗?
regex - jflex:为什么这个正则表达式匹配?
在我的词法分析器中,我编写了以下正则表达式:
我在调试模式下执行了byacc/j,它指出以下行与正则表达式匹配。
但是为什么这个正则表达式匹配这一行呢?
我也试过"///"\s*[^\@\s].*
,万一@
是特殊字符,但它也匹配。oO
我认为我的正则表达式只会匹配一个///
以可选空格开头的字符串。除了必须出现的任何非空白字符之外@
,后跟任何字符。
编辑:对不起,我的意思是在 jflex 中使用正则表达式,而不是byacc/j。
解决方法:在jflex 文档中我没有找到任何\s
转义序列,所以我尝试了这个正则表达式"///"[ \t\f]*[^@ \t\f].*
并且它有效。jflex似乎\s
不支持转义字符并默默地忽略它。
actionscript-3 - 如何从 .jflex 文件生成 Actionscript 类?
有没有办法从 .jflex 文件生成动作脚本类?我知道我们可以生成 Java 文件,但我需要 AS3 类。