1

使用 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()

不会这样工作。我如何在 Sprache 中描述这种情况(最好的方式)?

4

1 回答 1

0

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

试试看

于 2021-12-10T00:23:32.970 回答