问题标签 [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.
jparsec - JParsec 是否有“直到”组合器?
一个“直到”组合器使用输入直到给定的解析器得到满足。
我用谷歌搜索了一下 Parser 类的来源,没有找到。我认为这个组合器在其他语言的每个解析器组合器框架中都很常见。
java - 如何在不使用 .between() 的情况下从 jparsec 返回列表
我正在使用 JParsec 库开发一个简单的解析器,并希望解析以下内容:
这很容易用 with 完成,parser.sepBy(Scanners.isChar(',')
但无法解析更大的文档,除非我将它包装在between
.
最终,我想解析以下内容:
但是,我找不到一个神奇的组合来说“sepBy X 直到(但不消耗 Y)”甚至“sepBy X 直到失败”。
我在这里错过了一些简单的东西吗?
jparsec - 使用 jparsec 从逻辑表达式构建树结构
我确实有这样的表达
带有花括号的字符串(例如{123}
)是对篮子中物品的引用。布尔逻辑确定当前篮子是否有效。表达式可以具有任意嵌套深度。在示例中,如果 123、456 和 789 或没有项目 111 也在篮子中,则认为篮子有效。
使用 jparsec 我想构建一个表示逻辑的对象树 - 不需要在这里执行逻辑。
不幸的是,我未能完全理解https://github.com/jparsec/jparsec/wiki/Overview和https://github.com/jparsec/jparsec/wiki/Tutorial上的示例,以便编写我自己的代码(相当简单的)问题。我总是遇到一条错误消息:
这个异常的原因是什么?
我很欣赏一些示例代码,展示了如何为上述草图表达式创建解析器。
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?
java - 如何从 JParsec 中的序列解析器中提取所有值?
我有一个 JParsec 解析器,它由几个“较小”的解析器组成,我想提取用这些解析器解析的总值。比方说:
上面的一些解析器是虚拟的,用于分隔数据字段。虚拟解析器是substitute
and separator
,我不会从中提取任何东西。但是,其余的解析器让我感兴趣:
但是,map
pingsubstituteDefinition
解析器需要一个Map<Object, Definition>
接口实现,将最后一个排序解析器的结果传播description.optional()
到Map
实现,并且传入的参数是String
:
显然,我只能description.optional()
在这里提取值,但我找不到到达digits4
和digits2
解析器结果的方法。我想知道:是否可以使用上述方法将digits4
,digits2
和description
值提取到单个对象中?Definition
我正在考虑构建器实现并以某种方式Definition
通过解析器链传递它。或者是否应该重新考虑,如果是,那么如何?
java - 为什么这个简单的 jparsec 词法分析器会失败?
我会编写一个简单的词法分析器,它可以识别没有数字的单词和忽略空格的数字。
我使用 jparsec v3.0 编写了以下代码:
但以下测试失败,但有异常org.jparsec.error.ParserException: line 1, column 7: EOF expected, 1 encountered
。相反,使用字符串“abc cd 123”解析成功。
在您看来有什么问题?
java - JParsec 用于版本号
我正在尝试使用 JParsec 3 为版本号编写一个简单的解析器。版本号如下所示:
规则是:
最多三个非负整数,由
.
我有Version
class
三个工厂方法:
我想为这三种类型中的任何一种编写一个解析器。
这是我到目前为止所拥有的:
这实际上并没有编译,因为我有x.get(0)
,x
是一个Integer
.
我应该如何在这里使用 JParsec?
java - 如何使用标记器构建解析器?
我正在使用jparsec来解析字符串,例如:
我已经实现了一些类(从我的接口继承Token
)来表示令牌:
我还为每个实现了标记器:
这些都在角色级别上起作用。例如:
现在我想将它们组合成一个 的解析器ListExpression
,它是一个代表数字列表的类。我试过类似的东西:
这适用于像这样的字符串,[1,2,3]
但显然不适用于像[ 1, 2 ]
.
是否有一个运算符需要一些解析器并whitespace*
在它们之间放置?
或者是否可以让我的ListExpression
解析器在我的Token
接口实例流而不是字符上工作?
jparsec - 将 sequence() 与 7 个以上的解析器一起使用
我正在尝试构建一个解析器组合器,它使用Parsers.sequence()
但超过 7 个解析器,确切地说是 26 个。不幸的是,该Parsers.sequence()
方法最多只需要 7 个解析器。我读到另一个堆栈溢出问题,使用Parsers.List()
是必要的。不过,这似乎是个问题。该方法返回一个List<Object>
. 我使用这个解析器来解析 26 个解析器,其中只有 10 个返回一个有价值的标记,我将在构造函数中使用它来初始化自定义类中的对象。拥有一个对象列表不是很好,因为我必须将列表中的所有项目向下转换为构造函数的正确类型。
这样做的更好方法是什么?
java - 有没有办法插入解析器在运算符表中?
亲爱的开发者您好!
我是创建解析器的新手,只需要一点计算器语法。我正在使用 jparsec 并在 Github 上找到了计算器的示例。
我现在要做的就是在计算器中添加 IF 语句的可能性。
这是我的代码:
除最后一项外,所有测试均有效。任何人都知道如何让 if 语句表现得像双值?
先感谢您!