我正在尝试使用出色的parboiled2库解析文件格式,其中某些字段的存在取决于一个或多个已处理字段的值。 例如,假设我有两个字段,第一个字段是一个标志,指示第二个字段是否存在。 也就是说,如果第一个字段为true ,则第二个字段(在此示例中为整数值)存在并且必须进行处理-但是,如果它为 ...
我正在尝试使用出色的parboiled2库解析文件格式,其中某些字段的存在取决于一个或多个已处理字段的值。 例如,假设我有两个字段,第一个字段是一个标志,指示第二个字段是否存在。 也就是说,如果第一个字段为true ,则第二个字段(在此示例中为整数值)存在并且必须进行处理-但是,如果它为 ...
在parboiled2中报告解析器操作中的错误的最佳方法是什么(我使用的是v 2.1.4)? 例如,假设我想读取整数值并报告错误,如果它不在预期范围内? 我尝试调用fail ,但在解析器操作中似乎没有效果。 另外,我无法告诉我应该如何为test规则提供堆栈值。 我只是抛出一个Pars ...
我一直在解析专有的文件格式,该文件格式包含多个部分,每个部分都有许多记录。 这些部分可以按任何顺序排列,而记录可以按任何顺序排列。 顺序不重要。 尽管不应重复这些部分,但我不能保证。 我一直在使用parboiled2来生成AST,其格式如下: 每个部分都生成一个案例类。 他 ...
parboiled2的文档提到以下内容以获得结果: https://github.com/sirthias/parboiled2#access-to-parser-results 但是,尝试使用这种方法时,出现编译错误: 这是解析器的概述: 尝试运行它的代码 ...
我可以在parboiled2解析器中动态生成规则吗? 用例是我已经定义了一堆规则,但是每次添加规则时都想添加更多而不是编译。 ...
我试图解析包含由分隔符分隔的字符串的单行到这些字符串的序列。 它应该能够在字符串中包含任何字符,如果字段包含分隔符,则它需要围绕它的双引号。 为了在这样的字段中使用双引号,双引号将被转义。 我用这个作为起点: https : //github.com/sirthias/parboile ...
因此,在使用Scala解析器时,可能会有: Parser是与路径有关的类型,因此无法重构此代码,以便可以从构造函数中传递bars 。 需要注意的是parserFromString在我的使用情况下,实际上创建了一个MyParser以这样的方式MyParser建设成为O(N!),其中N = ...
我试图从parboiled2尝试这个例子: 然后,我创建一个输入"foo"的新MyParser 。 但返回值为null 。 如何从REPL运行这个简单的f 规则 ? ...
查看parboiled2部分, Rule Combinators and Modifiers : 我不明白a , b ,然后a ~ b图表。 到目前为止,我发现文档很简单。 但我在这里有点失落。 你能解释一下每个块吗? ...
我正在编写DSL,并同时学习parboiled2。 建立AST之后,我想进行一些语义检查,如果有任何错误,请输出引用源文本中有问题的位置的错误消息。 我正在编写类似以下内容的代码,到目前为止,这些代码可以正常工作: 有没有更好或更简单的方法? ...
我编写了以下hello-world parboiled2解析器: 这大部分按预期工作,例如它成功地将“1 + 2”解析为3。 如果我给它无效的输入,如“1 +(2”,我希望解析失败。但它实际上成功,结果为1。 看起来parboiled2只是解析输入的一部分,并忽略它无法解析的 ...
我在编写parboiled2解析器时遇到了一个棘手的问题,那就是我需要匹配一行字符串的一部分,该字符串的结尾用:字符标记。 这很容易,除了字符串可以包含 :字符。 目前,我已经将字符串视为一组冒号结尾的字符串并将其连接起来,但这消耗了结尾:我不希望将其作为结尾:不是字符串本身的一部分。 ...