我正在尝试实现匹配“语法”和语言的模式。我知道正则表达式,但这些对于我的范围来说还不够。我已经个性化了一些“数学”运算符。在下面的示例中,我将假设模式数学的主题是字符串,但这不是必需的。
阅读了下面的描述:问题是,有没有人知道一个数学理论明确地表明了这一点,或者任何语言都采用了相同的方法来实现它?我想看看它以便有想法!
方法描述:
起初我们有字符。字符可以聚合形成字符串。
模式是:a) 单个字符 b) 具有操作符 matchAny 的有序模式组 c) 具有操作符 matchAll 的有序模式组 d) 稍后会看到的其他各种运算符。
说明:我们有一个主题字符串和一个起始位置。
如果我们检查单个字符的匹配,那么如果匹配,则将当前位置向前移动一个位置。
如果我们使用操作符 matchAny 检查有序模式组的匹配,那么它将按顺序检查组中的每个元素,并且我们将有一个起始位置的扩散,这些起始位置将乘以可能的匹配数量。比赛的长度。
EG 假设模式组是 { "a" "aba" "ab" "x" "dd" } 并且正在检查的字符串是:"Dabaxddc",当前位置为 2(从 1 开始计数)。然后将 matchAny 与前一组应用,我们得到 "a" mathces "aba" 匹配和 "ab" 匹配,而 "x" 和 "dd" 不匹配。在进行这些匹配之后,有 3 个起始位置 3 4 5(对应于 "a" "ab" "aba" )。
我们可以通过接受多个起始位置来继续我们的模式匹配。所以现在我们可以继续检查下一个案例并检查 matchAll。matchAll 表示所有模式必须按顺序匹配并按顺序应用。matchAll 的子情况是 match0+ match1+ 等。
我必须补充一点,试图提出这个问题的同样事实已经帮助了我并清除了一些事情。但我想知道类似的方法来研究它们。请仅使用您使用的语言,而不是参考书目!!!