解析器的组合
本文关键字:组合 | 更新日期: 2023-09-27 18:12:48
使用Sprache,我有解析器A,B,C,D,它们与不同的输入部分匹配,并选择(返回)不同的类实例。在我的输入中有很多随机顺序的部分,方程。"abaabccbdbabddba"。我需要选择所有的"a"-s和"b"-s等等-顺序无关:
from a_list in A.Many()
from b_list in B.Many()
from c_list in C.Many()
from d_list in D.Many()
不能这样工作。我该如何用英语描述这种情况(最好的方式)?
6年来一直没有答案的老问题。下一个代码可能对某人有所帮助:
var segment=
from start in Parse.Letter.Once()
let a =start.First()
from rest in Parse.Chars(a).Many()
select start.Concat(rest);
var allSegments = segment.Many();
//test
var text = "abaabccbdbabddba";
var result=allSegments.Parse(text);
输出:aa
cc
dd
试试