我需要一条规则,叫它AT- begin,它与输入的开始相匹配。
也许它存在,或者如何实现它?
我想要做的例子:
动机:
我正在尝试解析一些类似于标记的模式,其中'*‘开始强调,但只有在空格之后或文本开头的情况下:空格__ at -开始强调
使用@hostilefork解决方案,我可以编写:[to "*" pos: [if (head? pos) | (pos: back pos) :pos space] skip ...]
发布于 2018-09-18 20:08:45
没有这样的规则。但是,如果存在,则必须明确地定义它是否位于series...or的开头,即要求您从何处开始解析。这是成功还是失败?
parse (next "cab") [to "a" begin skip "b"]它不是在本系列的开头,但是解析位置没有移动。这算开始吗?
如果您只想在本系列的开头进行测试:
[to "a" pos: if (head? pos) ...]您必须在开始时捕获该位置,或者以其他方式了解该位置,以查看解析位置是否有任何进展:
[start: to "a" pos: if (pos = start) ...]发布于 2018-09-19 11:58:56
也许不完全是你想要的,但是找到第一个匹配可以通过下面的步骤来完成。
你必须搜索"b“和"a”后面的补语模式。
>> text-to-searh: "jjjj ball adran"
>> b*: complement charset "b"
>> parse/all text-to-search [ any [ b* #"a" | "a" hit: to end | skip ] ]
>> probe hit
"ll adran"需要进行一些修改,以匹配第一个字符是"a“的情况。hit将位于"a“后面的字符处。
https://stackoverflow.com/questions/52393019
复制相似问题