- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
对于下面的Parslet解析器
require 'parslet'
require 'parslet/convenience'
class Lines < Parslet::Parser
rule(:open_tag) {str('[')}
rule(:close_tag) {str(']')}
rule(:data) {str('name') | str('name_id') }
rule(:text) { open_tag >> data >> close_tag }
root :text
end
begin
p Lines.new.parse("[name_id]") <---- It throws error
rescue Parslet::ParseFailed => failure
Lines.new.parse_with_debug("[name_id]")
end
出现以下错误
Failed to match sequence (OPEN_TAG NAME CLOSE_TAG) at line 1 char 6.
`- Expected "]", but got "_" at line 1 char 6.
如果我从
更改数据规则
rule(:data) {str('name') | str('name_id') }
到
rule(:data) {str('name_id') | str('name') }
然后它按预期工作。
但是,我正在根据用户输入动态生成规则。所以这个解决方案对我不起作用。
提前致谢。
最佳答案
规则 :data
正在构建,然后按照项目提供的顺序进行检查。要强制较长的匹配器出现在较短的匹配器之前,可以简单地对它们进行排序:
data = %w|name name_id|
data = data.sort { |a, b| b <=> a }
rule(:data) { data.map(&method(:str)).reduce(:|) }
关于ruby - Parslet 不解析整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43890856/
我已经开始使用 Parslet 来解析一些自定义数据。在示例中,生成的解析数据类似于: { :custom_string => "data"@6 } 我创建了类似 Transform 的东西 rule
有没有一种方法可以类似于典型正则表达式中的 \1 功能来反向引用 parslet 中的前一个字符串? 我想提取 block 中的字符,例如: Marker SomeName some random
对于下面的Parslet解析器 require 'parslet' require 'parslet/convenience' class Lines > data >> close_tag }
Resume(我把下面的长篇大论缩成了简单的问题) tree = {:properties => [{:a => 'b'}, {:c => 'd'}]} big_tree = {:properties
我有以下规范 it "parses a document with only an expression" do puts parser.document.should parse("[b
我正在尝试为 Handlebars 编写一个 Ruby/Parslet 解析器,但我被 {{ else }} 关键字困住了。为了给那些不使用 Handlebars 的人解释 brieflt,一个 if
我正在研究一种新的编程语言 rip ,而且我无法找到一些无限循环的底部。有没有办法在每个规则被调用时打印出来,这样我就可以看到递归的规则?我试过在脑海中遍历代码,但我就是看不到它。任何帮助将不胜感激。
我正在调查 parslet写了很多数据导入代码。总的来说,图书馆看起来不错,但我正在努力解决一件事。我们的很多输入文件都是固定宽度的,并且宽度因格式而异,即使实际字段没有。例如,我们可能会得到一个包含
为什么以下 Parslet 解析器无法解析以逗号分隔的列表?当我解析时,它卡住了并且不提供错误消息: class TestParser > str(',').maybe } rule(:names
我正在寻找一种匹配多行 Parslet 的方法。代码如下所示: rule(:line) { (match('$').absent? >> any).repeat >> match('$') } rul
我正在尝试使用 Parslet 解析简单的缩进敏感语法Ruby 中的库。 以下是我尝试解析的语法示例: level0child0 level0child1 level1child0 level
我正在玩 parslet。这是一个简单的解析器,它向我展示了一些不明显的行为。 require 'parslet' class Parser > term >> quote end rule(
以 Parslet 中的代码示例作为起点自己的创建者(在此 link 中可用)我需要对其进行扩展,以便从以类 C 语法编写的文件中检索所有未注释的文本。 提供的示例能够成功解析 C 风格注释,将这些区
我有一个 Flexlm/Flexnet 许可服务,我想解析这个服务的输出。所有输出都是多行的结构化 block 。我的第一步是解析 lmutil lmstat -c -a 的输出使用许可证和增量。
我是一名优秀的程序员,十分优秀!