问题标签 [javacc]

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 投票
3 回答
416 浏览

java - Dealing with grammar ambiguity (poker file parsing)

I am currently working on a poker hand history parser as a part of my bachelor project. I've been doing some research past couple of days, and came across a few nice parser generators (of which I chose JavaCC, since the project itself will be coded in Java).

Despite the hand history grammar being pretty basic and straightforward, there's an ambiguity problem due to allowed set of characters in player's nickname.

Suppose we have a line in a following format:

Token myNickname can contain any character as well as white spaces. This means, that both (1500 in chip and Seat 5: are valid nicknames - which ultimately leads to an ambiguity problem. There are no restrictions on player's nickname except for length (4-12 characters).

I need to parse and store several data along with player's nickname (e.g. seat position and amount of chips in this particular case), so my question is, what are my options here?

I would love to do it using JavaCC, something along this:

Which right now doesn't work (due to the mentioned problem)

I also searched around for GLR parsers (which apparently handle ambigious grammars) - but they mostly seem to be abandoned or poorly documented, except for Bison, but that one doesn't support GLR parsers for Java, and might be too complex to work with anway (aside for the ambiguity problem, the grammar itself is pretty basic, as I mentioned)

Or should I stick to tokenizing the string myself, and use indexOf(), lastIndexOf() etc. to parse the data I need? I would go for it only if it was the only option remaining, since it would be too ugly IMHO and I might miss some cases (which would lead to incorrect parsing)

0 投票
2 回答
3219 浏览

java - JavaCC 中的 Epsilon 定义

如何在 JavaCC 中定义 Epsilon?我正在尝试类似的东西

但它不起作用。

0 投票
2 回答
476 浏览

token - JavaCC 中的标记:确保符号在一行中是单个的

我需要“{”将单行。因此,我必须使用识别它的令牌。这是正确的例子:

或者

这是不正确的例子:

或者

然后我有一个像这样的令牌:

但我想不出如何使符号“{”恰好在一个或多个“\n”之间。在认识到它之后,我必须准确地写:

如果我尝试:

这会运行,但它会写很多“\n”,就像输入中的一样。

0 投票
1 回答
7628 浏览

string - 使用 JavaCC 解析字符串

我试图想出一种使用 JavaCC 解析字符串而不会错误地将其与另一个令牌匹配的好方法。这些字符串应该能够包含空格、字母和数字。

我的标识符和数字令牌如下:

我当前的字符串标记是:

理想情况下,我只想保存引号内的内容。我有一个单独的文件,我在其中实际保存变量和值。我应该删除那里的引号吗?

我最初在解析器文件中有一个方法,如下所示:

但是,正如您可能猜到的那样,这不允许空格或数字。对于变量名等标识符,我只想允许字母。

因此,我只想就如何捕获字符串文字获得一些建议。特别是,我想制作如下字符串:

在我的语法中有效。

0 投票
1 回答
1099 浏览

string - JavaCC 中的非英语标记

我已经尝试过这个链接:Print in JavaCC。但是由于某种未知的原因,该答案对我不起作用。我将文本复制并粘贴到文件中并运行它,但是当我输入时µ,例如,它没有打印任何内容。

我希望能够在我的字符串标记中使用非英语。仅出于测试目的,现在我有:

当我运行解析器并为其提供一个包含 的文件á, é, í, ó, ú时,我得到的只是一堆问号。

我读过一些关于必须修改自动生成的字符流文件的内容,但我不太明白。

0 投票
0 回答
304 浏览

java - Java 正则表达式到 JavaCC

我有下面的字符串(*),我需要用 Java CC 解析它。

初始字符串:(*)

我需要提取下一个子字符串:

我需要在没有单词“[step”的情况下提取它;并将相同的单词(“[step”)保留到输入流中。

当我使用 Java 正则表达式时这很简单,但我需要一个解决方案来使用 JavaCC 获得相同的结果

在 Java 中,我有以下正则表达式:SPECIAL_STEP=[^=]*(?=\r?\n\[step)).

我现在需要在 JavaCC 中做同样的事情,但我不知道是否可以在 JavaCC 中进行积极的前瞻。

0 投票
1 回答
1040 浏览

java - JavaCC:如何处理包含常用词的标记

我正在尝试为这样的源代码创建解析器:

...下面是我定义的语法:

问题是解析器正确识别了令牌(“代码表”)......但它没有识别令牌 IDENT(“code_table_name”),因为它包含已经包含在令牌 CODE_TAB_BEGIN 中的单词(即“代码”)。解析器抱怨说“代码后面跟着无效字符_”......

话虽如此,我想知道为了让解析器正常工作,我缺少什么。我是新手,任何帮助将不胜感激;-)

谢谢,j3d

0 投票
1 回答
599 浏览

regex - JavaCC 行首

JavaCC 是否支持像 '^' 这样的行正则表达式的乞求?

我有一个这样的令牌

希望它只匹配以下正则表达式

我尝试了以下两种方法都不起作用

0 投票
2 回答
4710 浏览

regex - 匹配除某些字符串之外的所有字符串的 Javacc 正则表达式

什么是匹配任何东西的正则表达式,除了这些字符串: =>, |?

如果您熟悉 javacc,我正在尝试定义我的ANYTHING令牌,如下所示:

谢谢

0 投票
1 回答
127 浏览

javacc - 用于解析的 Javacc '

我正在为一组 CFG 编写解析器。(注意:RHS 只能是大写字母)

/*忽略声明和其他东西,这是代码的主要部分*/

这显然错过了一些边缘情况,其中包括:

A => A | a | D E => e

那么我做错了什么?