目前正在为 Rebol 3 中的Firmata 协议解析 Midi 消息,并遇到了我以前从未见过的情况。
基本上,我有一个通用规则来在帧字节之间复制字节。然而,该规则正在吃掉帧字节。我已将代码简化为以下内容:
data: #{
F06C00010101040E7F000101010308040E7F00010101040E7F0001010103
08040E7F000101010308040E7F00010101040E7F00010101040E7F0001010103
08040E7F000101010308040E7F000101010308040E7F00010101040E7F000101
01040E7F00010101020A7F00010101020A7F00010101020A7F00010101020A7F
00010101020A06017F00010101020A06017FF7
}
sysex-start: #{F0}
sysex-end: #{F7}
capability-query: #{6B}
capability-response: #{6C}
capability-end: #{7F}
received-rule: [
sysex-start
capability-response-rule
sysex-end
]
capability-response-rule: [
capability-response
[
capability-end |
some [copy pin 1 skip]
]
]
parse data received-rule
问题是some [copy pin 1 skip]
正在吞噬sysex-end
二进制文件。
有没有办法可以重组规则(不
sysex-end
进入子规则)?在这种打破子规则的情况下,是否有一个 parse 关键字可以帮助?
(注意:我知道我没有根据规范解释数据。)