问题标签 [petitparser]
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.
dart - 不支持的操作:无法解析引用
使用token
来自https://github.com/petitparser/dart-petitparser/blob/ddd9921d702dd18cda4e2f84190777b7dc20b3e2/example/dart/src/grammar.dart的方法(使用默认trim
解析器)
需要改变什么来摆脱错误?
不支持的操作:无法解析引用
java - 使用 PetitParser 解析非对称二元运算符时如何获得正确的关联性?
我正在尝试使用PetitParser制作一个基本的数学解析器,但我无法使用非对称二元运算符(如减法或除法)获得正确的顺序。
我有这个小例子,它只能解析(非负)整数和-
二元运算符,并发出一个带有括号的相同解析表达式的字符串(这样我就可以看到关联性):
这将打印(1 - (2 - 3))
- 尽管 is 的正确关联1 - 2 - 3
性((1 - 2) - 3)
。
现在,我明白我的语法是这样的:
((1 - 2) - 3)
也是如此term '-' number
。但是当我尝试切换它们时:
我遇到了无休止的递归:
那么......我怎样才能以应该解析的方式解析表达式?
更新
根据@rici 的建议,我已将其更改为使用ExpressionBuilder
:
通过使用left()
orright()
我可以选择二元运算符的结合性。
dart - 忽略转义的多行引号
我想使用 Dart PetitParser 解析 GraphQL 文档。为了能够支持 BlockString (多行字符串),我正在寻找一种方法来获得
从
这部分出来
完整语法https://facebook.github.io/graphql/draft/#sec-String-Value
smalltalk - 如何在 PetitParser 中定义 Pascal 变量
这是我试图在 PetitParser 中实现的(简化的)EBNF 部分:
我所做的是将所有这些产品(除了identifier
)添加为我的子类的 ivarsPPCompositeParser
并定义相应的方法如下:
最后,我创建了解析器的一个新实例并将 message 发送给它parse: 'a.b[0]'
。
问题:我得到一个堆栈溢出。
java - 简单的分隔符解析器
我正在尝试PetitParser来解析一个用逗号分隔的简单整数列表。例如:“1、2、3、4”
我尝试创建一个整数解析器,然后使用 delimitedBy 方法。
这将返回一个列表,其中包含已解析的整数以及分隔符。例如:[1, ,, 2, ,, 3, ,, 4]
有没有办法从结果中排除分隔符?
smalltalk - PetitParser:如何匹配令牌集
在 PetitParser2 中,如何匹配一组封闭的标记,例如月份名称?例如(在伪代码中)
[ :word | MonthNames anySatisfy: [ :mn | mn beginsWith: word ] ] asParser.
PPPredicateSequenceParser
似乎有可能,但您似乎必须提前知道字符串的大小。我想我可以这样做:
但我想知道是否有内置/直截了当的东西
dart - petitparser 解析器可以安全地重用吗?
在 Dart 中使用petitparser
,是否可以重用解析器?
例如,假设我们要解析 IPv4 样式的地址,例如192.168.1.21
.
最初,我写道:
我注意到我的序列解析器有 7 个孩子,正如预期的那样,但是数字解析器都是相同的(至少都具有相同的hashCode
),而点解析器却是不同的。尽管如此,解析器似乎工作。
我尝试过:
在这种简单的情况下同样有效,但代价是()
内存中的一些额外的 s 和少量的对象。
有什么理由更喜欢一种风格而不是另一种风格?有没有更好的方法来写这个?
我只是幸运,我的第一次尝试成功了吗?如果我将所有final
s 更改为返回的函数Parser
,似乎我采用了GrammarDefinition
. 我是否必须/我应该ref(parser)
自始至终使用语法?
我的整体解析器是针对非递归语法的,目前我没有使用GrammarDefinition
. 到目前为止,当我认为我的语法中没有任何递归时,将我所做的修改为语法定义有什么好处?
java - PetitParser:有没有像 plus() 这样但有上限的解析器?
是否有像 plus() 这样具有上限的解析器来模拟像这样的表达式Item <- [a-zA-Z0-9]{1,5}
?
同样对于类似的东西Item <- [a-zA-Z0-9]{3,5}
?
dart - 为什么 flatten 会摆脱映射值?
我正在尝试解析一个句子,同时将数字转换为它们的数字表示。
作为一个简单的例子,我想要句子
三个苹果
解析并转换为
3个苹果
使用此代码简单代码,我实际上可以正确解析句子并将三转换为3,但是当我尝试将结果展平时,3恢复为三。
我错过了什么吗?展平行为是否正确?
在此先感谢 L
flutter - Dart PetitParser 获取使用 ExpressionBuilder 创建的 AST 数据结构
我是 petitparser 的新手,但它看起来像是解析器的声波螺丝刀。
对于我的第一个项目,我正在构建代码来解析一个简单的表达式,该表达式构建我的 Node 对象的 AST 树,然后使用一些规则遍历该树以最小化不需要的括号。我不知道将什么传递给 .parse() 的输出(似乎是一个结果)来访问我定义的树,所以我可以在 AST 的顶部调用 .visit() 。有任何想法吗?