我正在使用 Marpa::R2::Scanless::G 来解析旧文本文件格式。文件格式顶部有一个结构良好的部分,然后是结构不良的文本和 uuencoded 内容。后面的东西可以完全忽略,但我不知道如何告诉 Marpa SLIF 界面:你完成了;不要打扰剩下的文字。
简而言之,文件可能如下所示:
("field_a_val" 1,
"field_b_vals" (1,2,3),
"field_c_pairs" ((a 1)(b 2)(c 3))
)now_stuff_i_dont_care_about a;oiwermnv;alwfja;sldfa
asdf343avadfg;okm;om;oia3
e{<|1ydblV, HYED c"L. 78b."8
U=nK Wpw: Qh(e x!,~dU...
我已经从顶部解析出了所有需要的数据,但是如果我不尝试匹配它,当它到达底部垃圾时,我得到:SLIF 解析中的错误:解析已用尽,但词位仍然存在。
我不知道如何设计一个术语来表示可能会吞下数兆字节的废话,不管遇到什么文本,只要继续到文件的末尾即可。我尝试使用 :discard 或 'pause => after' 时运气不佳,尽管我可能会误用它们。
对于上下文,我对解析和词法分析没有深入的了解。我敲敲语法直到它奏效。