问题标签 [jparsec]

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 投票
0 回答
56 浏览

jparsec - JParsec 是否有“直到”组合器?

一个“直到”组合器使用输入直到给定的解析器得到满足。

我用谷歌搜索了一下 Parser 类的来源,没有找到。我认为这个组合器在其他语言的每个解析器组合器框架中都很常见。

0 投票
1 回答
275 浏览

java - 如何在不使用 .between() 的情况下从 jparsec 返回列表

我正在使用 JParsec 库开发一个简单的解析器,并希望解析以下内容:

这很容易用 with 完成,parser.sepBy(Scanners.isChar(',')但无法解析更大的文档,除非我将它包装在between.

最终,我想解析以下内容:

但是,我找不到一个神奇的组合来说“sepBy X 直到(但不消耗 Y)”甚至“sepBy X 直到失败”。

我在这里错过了一些简单的东西吗?

0 投票
0 回答
225 浏览

jparsec - 使用 jparsec 从逻辑表达式构建树结构

我确实有这样的表达

带有花括号的字符串(例如{123})是对篮子中物品的引用。布尔逻辑确定当前篮子是否有效。表达式可以具有任意嵌套深度。在示例中,如果 123、456 和 789 或没有项目 111 也在篮子中,则认为篮子有效。

使用 jparsec 我想构建一个表示逻辑的对象树 - 不需要在这里执行逻辑。

不幸的是,我未能完全理解https://github.com/jparsec/jparsec/wiki/Overviewhttps://github.com/jparsec/jparsec/wiki/Tutorial上的示例,以便编写我自己的代码(相当简单的)问题。我总是遇到一条错误消息:

这个异常的原因是什么?

我很欣赏一些示例代码,展示了如何为上述草图表达式创建解析器。

0 投票
1 回答
166 浏览

java - JParsec - Scanner.string() equivalent for tokens

I have a parser for language that looks like this:

There are a few node typed, such as "ask" and "set", so currently ask and set are defined as keywords. This causes problems in other parts of the parser.

Is there a way to define a token parser that accepts only tokens who contain specific text?

0 投票
2 回答
218 浏览

java - 如何从 JParsec 中的序列解析器中提取所有值?

我有一个 JParsec 解析器,它由几个“较小”的解析器组成,我想提取用这些解析器解析的总值。比方说:

上面的一些解析器是虚拟的,用于分隔数据字段。虚拟解析器是substituteand separator,我不会从中提取任何东西。但是,其余的解析器让我感兴趣:

但是,mappingsubstituteDefinition解析器需要一个Map<Object, Definition>接口实现,将最后一个排序解析器的结果传播description.optional()Map实现,并且传入的参数是String

显然,我只能description.optional()在这里提取值,但我找不到到达digits4digits2解析器结果的方法。我想知道:是否可以使用上述方法将digits4,digits2description值提取到单个对象中?Definition我正在考虑构建器实现并以某种方式Definition通过解析器链传递它。或者是否应该重新考虑,如果是,那么如何?

0 投票
2 回答
404 浏览

java - 为什么这个简单的 jparsec 词法分析器会失败?

我会编写一个简单的词法分析器,它可以识别没有数字的单词和忽略空格的数字。

我使用 jparsec v3.0 编写了以下代码:

但以下测试失败,但有异常org.jparsec.error.ParserException: line 1, column 7: EOF expected, 1 encountered。相反,使用字符串“abc cd 123”解析成功。

在您看来有什么问题?

0 投票
1 回答
94 浏览

java - JParsec 用于版本号

我正在尝试使用 JParsec 3 为版本号编写一个简单的解析器。版本号如下所示:

规则是:

最多三个非负整数,由.

我有Version class三个工厂方法:

我想为这三种类型中的任何一种编写一个解析器。

这是我到目前为止所拥有的:

这实际上并没有编译,因为我有x.get(0),x是一个Integer.

我应该如何在这里使用 JParsec?

0 投票
1 回答
204 浏览

java - 如何使用标记器构建解析器?

我正在使用来解析字符串,例如:

我已经实现了一些类(从我的接口继承Token)来表示令牌:

我还为每个实现了标记器:

这些都在角色级别上起作用。例如:

现在我想将它们组合成一个 的解析器ListExpression,它是一个代表数字列表的类。我试过类似的东西:

这适用于像这样的字符串,[1,2,3]但显然不适用于像[ 1, 2 ].

是否有一个运算符需要一些解析器并whitespace*在它们之间放置?

或者是否可以让我的ListExpression解析器在我的Token接口实例流而不是字符上工作?

0 投票
0 回答
35 浏览

jparsec - 将 sequence() 与 7 个以上的解析器一起使用

我正在尝试构建一个解析器组合器,它使用Parsers.sequence()但超过 7 个解析器,确切地说是 26 个。不幸的是,该Parsers.sequence()方法最多只需要 7 个解析器。我读到另一个堆栈溢出问题,使用Parsers.List()是必要的。不过,这似乎是个问题。该方法返回一个List<Object>. 我使用这个解析器来解析 26 个解析器,其中只有 10 个返回一个有价值的标记,我将在构造函数中使用它来初始化自定义类中的对象。拥有一个对象列表不是很好,因为我必须将列表中的所有项目向下转换为构造函数的正确类型。

这样做的更好方法是什么?

0 投票
0 回答
34 浏览

java - 有没有办法插入解析器在运算符表中?

亲爱的开发者您好!

我是创建解析器的新手,只需要一点计算器语法。我正在使用 jparsec 并在 Github 上找到了计算器的示例。

我现在要做的就是在计算器中添加 IF 语句的可能性。

这是我的代码:

除最后一项外,所有测试均有效。任何人都知道如何让 if 语句表现得像双值?

先感谢您!