问题标签 [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 投票
1 回答
136 浏览

java - 使用 jFlex 标记时间戳并处理 ISO 格式

我正在尝试使用各种日期格式解决日期标记化问题,其中一个可能是 ISO8601 格式,它使用“T”作为分隔符。而且我希望能够知道字符'T'是一个时间戳,当它前面和后面有一个数字时。

例如,如果我有一个数组

我想要一个分裂的结果

我正在使用 jFlex 来制作标记器,并且我这样编写了 .flex 文件:

但是,此标记器仅解析符号,而不解析“T”。有人有什么建议吗?非常感谢。

0 投票
0 回答
68 浏览

regex - 正则表达式匹配 RANGE 的 HH:MM:SS

所以我试图找到一种聪明的方法来写下如何识别这个特定的时间范围:

HOUR:一小时,格式为 HH:MM 或 HH:MM:SS,值介于 08:31:12 和 23:21:10 之间(正确示例为:08:31、23:21:09、12:54:51 )

我真的必须完成所有可能性,例如 (08":"31)(":"(1[2-9])|([3-5][0-9]) ) 吗?| (08":"3[2-9])(":" [0-5][0-9] )? | 等等......(很长)

有没有更聪明的方法来处理像这个例子这样的特定范围?多谢你们

0 投票
1 回答
748 浏览

java - 如何将 JFlex 词法分析器与 JavaCC 解析器一起使用?

我正在尝试学习如何使用 JavaCC 编写解析器。

我已经使用 JFlex 生成了一个词法分析器,它返回一个标记列表。每个令牌都是它自己的类。

我正在写生产规则,但例如,我不能写“;” 因为它不会接收分号,而是接收 TokenSemicolon 的实例?

我能做些什么?

此外,我对 TokenMangager 等感到困惑。我已经有一个词法分析器和我自己的兼容令牌类列表。这是什么?

请帮忙,因为我很困惑。

0 投票
0 回答
84 浏览

parsing - 解析 Elm 案例表达式与函数调用冲突

我正在使用 JFlex 和 Grammar Kit 为 Elm 语言开发一个 Intellij 插件。我编写解析器的经验很少。

我无法解析 case 表达式,因为它们与函数调用发生冲突。

BNF 规范如下:

在以下示例中,解析器无法识别 84 是新 case_body_part 的开始

如果有人知道语法工具包,我将不胜感激。但是,假设观众通常更可能知道解析器:
1)我可以用更好的 BNF 解决这个问题吗?
2)涉及到什么样的解析概念。
3) 你能否指出另一个解析器(如 yacc)如何处理这个问题。

0 投票
1 回答
1254 浏览

parsing - 是否可以在不编写解析器的情况下测试用 JFlex 制作的词法分析器?

我开始使用 JFlex,我想先尝试编写一个词法分析器,然后再转到解析器。但是,如果不使用 CUP 编写解析器,似乎就无法测试您的 JFlex 词法分析器。

我要做的就是编写一个词法分析器,给它一个输入文件,然后输出词位以检查它是否正确读取了所有内容。稍后我想输出标记,但词位将是一个好的开始。

0 投票
1 回答
122 浏览

intellij-plugin - 如何更改 Grammar-Kit 生成的 lexer Java 文件生成的路径?

如何更改 Grammar-Kit 生成的 JFlex lexer Java 文件的生成路径?

我已经询问了Grammar-Kit 的问题跟踪器,但没有收到任何回复。

我厌倦了没有将词法分析器放入我生成的文件目录中(我可以轻松地将其与所有其他生成的文件一起删除,并将其从搜索中排除,以及 IDE 警告等)。

0 投票
1 回答
573 浏览

java - 如何在 jflex 创建一个 lambda 符号?

我正在用 jflex + javacup 做一个语法分析器。在 .cup 语法中,我有这部分:

其中 lambda 没有任何意义(SUBPPARAMLIST 可以为空)

好吧,我设法在我的 .flex 中正确创建了所有标记,但我不知道如何创建 lambda 符号。我希望你们能帮助我,如果你不明白我的问题,请告诉我

0 投票
0 回答
147 浏览

parsing - JFlex。帮助编写一个简单的解析器来提取数字

我有一些从 PDF 中提取的样本数据,我需要编写一个解析器来提取数组中的文本和数字以便进一步操作。我想我应该使用 JFlex 但不知道如何开始

数据看起来是这样的

有时可以将以 615/ 开头的标记附加到描述中。这个想法是说。如果令牌是数字,则 array[1], array[2] ... 取决于位置。其他任何东西都进入数组[0]

任何帮助表示赞赏。JFlex 语法不容易上手

提前致谢

0 投票
1 回答
6514 浏览

java - 带有 CUP 编译错误的 JFlex

我正在尝试运行 CUP 提供的示例:Parsing directly to XML

我将“Minijava 语法”存储在一个名为minijava.cup的文件中,并将扫描仪存储在一个名为 xml.flex 的文件。我运行 JFlex 以从 xml.flex 文件中获取Lexer.java 。之后,我在运行 CUP 示例中指定的命令后获得了Parser.javasym.java :

我的目录如下所示:

我正在尝试使用以下命令编译 Lexer.java 文件:

但我收到格式为“..找不到符号...”的 47 个错误。第一个指定找不到类 sym 和 minijava.Constants。

Lexer.java:17:错误:找不到符号

公共类 Lexer 实现 java_cup.runtime.Scanner、sym、minijava.Constants{

^ 符号:类符号

Lexer.java:17:错误:minijava 包不存在

公共类 Lexer 实现 java_cup.runtime.Scanner、sym、minijava.Constants {

^ Lexer.java:679:错误:找不到符号

{return symbolFactory.newSymbol("EOF", EOF, new Location(yyline+ 1,yycolumn+1,yychar), new Location(yyline+1,yycolumn+1,yychar+1));

我不明白为什么 Lexer 看不到 sym.java 文件或从哪里获取 minijava.Constants 文件。

0 投票
0 回答
968 浏览

syntax-highlighting - 将我的 .g4 转换为 .flex 和 .bnf 用于 IDEA 语法荧光笔

我以前从未使用过 JFlex,也不知道它是如何工作的。基本上,我已经为 Java 中的方案式语言构建了一个运行时,并且我拥有的解析器是使用 Antlr 4 生成的,所以我有一个 .g4 文件,如下所示:

一些例子(这样你就可以感受一下语法)。

  1. (+ 1 2)= 3

  2. ((\ a b (+ a b)) 1 2)= 3

  3. (+ "Hello, " "World")=“你好,世界”

我想要做的是使用本指南为 IntelliJ-IDEA 构建一个语法高亮插件:http: //www.jetbrains.org/intellij/sdk/docs/tutorials/custom_language_support_tutorial.html

这是我的 .flex 文件

这是我的 .bnf 文件

当我运行它时,我基本上什么都没有得到。

在此处输入图像描述

出于某种原因,仅突出显示字符串。

在此处输入图像描述

PsiViewer 看起来像这样:

在此处输入图像描述

有没有人看到为什么这不起作用的任何解释?